软件测试|App自动化之Appium工作原理

简介: 软件测试|App自动化之Appium工作原理

问题

在工作中,使用什么进行的App端自动化?

有没有用到Appium 这个框架?

对Appium熟悉吗?

Appium底层原理是怎样驱动手机进行操作的?

考察点

面试官想了解:

  • 是否用过Appium框架
  • 对Appium框架的常用API是否熟悉
  • 移动端端特殊控件、特殊操作是否有解决方案
  • 是否看过Appium的源码
  • 是否了解Appium框架的底层工作原理

技术点

涉及的技术点:

  • Appium API
  • Appium 底层通讯协议
  • Appium 框架原理

回答

首先,对Appium框架进行介绍,说明对应框架的特性;再画出通信原理图进行解释说明;说明一下常用操作的API;最后进行整体的总结。

Appium框架介绍

Appium是什么?

首先,Appium 是一款开源框架,生态丰富,社区强大,一直在被开发者维护;

并且是一个灵活的跨平台的测试自动化工具,可以在iOS、Android 或 Windows、Mac 设备上进行移动应用的自动化测试运行,并且能够使用相同的 API 编写多个平台的测试脚本;

Appium与Selenium类似,是一个跨语言的自动化框架,并且可以和任何测试框架相结合;可以使用不同的编程语言编写测试脚本,包括 Java、JavaScript、PHP、Ruby、Python 和 C#。

Appium通信-各个端介绍

Client端发送自动化指令给 Appium Server ,Appium Server 接收到 Client端发送的指令后,进行转换,转换为移动端能够识别的指令,然后发送给移动端设备,移动端设备根据指令进行操作。

如下图为自动化通信交互:
在这里插入图片描述

Client端

Client端 就是运行编写的自动化项目代码,使用Appium-client提供的API来进行用例的编写。
其中,声明DesiredCapabilities对象,指定被测设备及app的相关信息;DesiredCapabilities对象中指定automationName的value值为UiAutomator2,这样才可以通过 Appium Server 去创建一个Android的session会话

自动化项目代码中首先请求创建一个 AndroidDriver 实例,需要传入Appium Server的 URL 及 DesiredCapabilities对象

Appium Server

Appium Server启动时默认的占用的端口号为4723,主要作用就是进行API请求的监听。
接收Client端发送的命令,并进行转换,转为移动端可识别的指令,并发送给移动端设备进行操作,再等待移动设备返回操作结果。
Appium Server端接收到移动设备返回的结果再将操作结果发送给Client端。

其中,Appium server可以和自动化项目代码同时放在Client端,也可以放在云端。
如果与代码同时放在Client端上,Appium Server的IP地址为127.0.0.1;
如果放在云端,Appium Server的IP地址为云端服务器的IP地址。

Android移动端

Appium 基于JSON Wire协议,通过调用UIAutomatior命令,实现APP的自动化测试。
其中,UIAutomator测试框架是Android SDK自带的APP UI自动化测试Java库。

总结

客户端发送请求给Appium Server,Appium Server转换请求给移动端,在移动端操作完成后返回响应内容给Appium Server,Appium Server再把结果返回给客户端。

Appium通信-端与端之间

在这里插入图片描述

Client端与Appium Server

客户端请求创建driver会话,将声明的capabilities启动参数通过端口4723传递给Appium Server;

Appium Server基于capabilities中的automationName属性,重定向到相应的驱动模块。
如果automationName是uiautomator2,Appium Server重定向到UIAutomator2 Driver,此时创建session会话并生成对应的sessionID。

Appium Server与Android移动端

APK安装
  • appium settings

为了在Android手机上运行应用程序,Appium 需要有一定的权限来控制系统设置。
Appium安装了一个小应用程序io.appium.settings,安装成功后,Appium Settings在后台运行。

  • uiautomator2 server

由于使用的是UIAutomator2 Driver,所以要在Android手机上安装Driver相关的apk,即 appium-uiautomator2-server-xx.apk。

安装完成后,Appium Server的8200端口 和 Android设备端的6790端口建立映射,通过该映射的链路进行通讯。

总结

在这里插入图片描述

  1. Client端发送操作指令给Appium Server
  2. Appium Server通过appium-uiautomator2-driver发送JWP协议的请求到Androidappium-uiautomator2-server
  3. appium-uiautomator2-server调用Android系统的 Google UIAutomator2 去以执行自动化具体的操作
  4. 操作完成后返回结果对象AppiumResponseappium-uiautomator2-driverAppiumServer再返回给Client端,Client端得到最终执行操作的结果

注意

  • appium-uiautomator2driverserver之间的通信的协议是JWP协议
  • 创建AndroidDriver遵循的是W3C协议进行创建
目录
打赏
0
0
0
0
142
分享
相关文章
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
160 11
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
36 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
探索软件测试中的自动化与持续集成
【10月更文挑战第21天】 在软件开发的生命周期中,软件测试扮演着至关重要的角色。随着技术的进步和开发模式的转变,自动化测试和持续集成已经成为提高软件质量和效率的关键手段。本文将深入探讨自动化测试和持续集成的概念、实施策略以及它们如何相互配合以优化软件开发流程。我们将通过分析实际案例,展示这些技术如何在实际项目中发挥作用,以及面临的挑战和解决方案。此外,文章还将讨论未来趋势,包括人工智能在测试领域的应用前景。
101 17
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
98 4
软件测试中的自动化与持续集成
在现代软件开发过程中,自动化测试和持续集成已成为不可或缺的组成部分。本文将深入探讨自动化测试和持续集成的重要性、优势以及如何有效实施它们以提升软件质量和开发效率。通过具体案例分析,我们将展示这些技术如何在实际项目中发挥作用,并讨论其面临的挑战及应对策略。
81 3
Appium控件交互策略:优化自动化测试效率的关键方法
该文介绍了如何使用Selenium与APP进行交互,包括点击、输入和状态判断等操作。例如,通过element.click()点击控件,element.send_keys()输入文本,以及element.is_displayed()检查元素是否可见。还展示了如何获取元素属性,如resource-id、text和class,并提供了Python代码示例来定位并操作APP元素,如滑动条的显示、可点击性检测及点击滑动条中心位置。在编写测试脚本时,应注意元素定位和状态验证以确保测试稳定性。
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
200 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
Appium 是一个开源的自动化测试框架,它支持多种平台和多种编程语言
Appium是一款开源自动化测试框架,支持iOS和Android多平台及多种编程语言。通过WebDriver协议,开发者可编写自动化测试脚本。在iPhone上实现屏幕点击等操作需安装Appium及其依赖,启动服务器,并设置所需的测试环境参数。利用Python等语言编写测试脚本,模拟用户交互行为,最后运行测试脚本来验证应用功能。对于iPhone测试,需准备真实设备或Xcode模拟器。
179 1
Appium微信小程序自动化环境准备
Appium微信小程序自动化环境准备
282 1

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等