软件测试|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协议进行创建
相关文章
|
3月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
188 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
4月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
4月前
|
开发框架 安全 JavaScript
xss漏洞原理(四)自动化XSS
xss漏洞原理(四)自动化XSS
|
5月前
|
敏捷开发 Java 测试技术
探索自动化测试的奥秘:从Selenium到Appium
【9月更文挑战第14天】软件测试,这个看似枯燥乏味却至关重要的领域,正经历着一场革命。随着技术的进步,自动化测试工具如Selenium和Appium已成为质量保证的利器。本文将带你一探这些工具的神秘面纱,了解它们如何简化测试流程、提升效率,并确保软件产品的质量。准备好,我们将深入自动化测试的世界,解锁其背后的原理和实践技巧。
|
6月前
|
Java 测试技术 API
探索自动化测试的奥秘:从Selenium到Appium
【8月更文挑战第31天】本文旨在引导读者理解自动化测试的重要性,并逐步深入介绍如何利用Selenium和Appium这两个强大的工具来提升测试效率和质量。文章不仅分享理论知识,还通过具体代码示例,展示如何在Web应用和移动应用测试中实施自动化策略。
|
6月前
|
测试技术 Android开发 iOS开发
探索自动化测试的奥秘:从Selenium到Appium
【8月更文挑战第31天】在软件测试的海洋中,自动化测试如同一艘快艇,带领我们高效地穿越波涛汹涌的手动测试海域。本文将带你从Selenium的网页自动化测试出发,一路驶向Appium的移动应用自动化测试岛屿,揭秘这两种工具如何改变软件测试的航向。你将看到代码示例的灯塔,指引你理解它们如何在实战中发挥作用,以及为什么掌握这些技能对于测试人员来说至关重要。
|
6月前
|
Java 测试技术 Android开发
探索自动化测试之美:从Selenium到Appium
【8月更文挑战第31天】在软件开发的世界中,测试是确保产品质量的关键步骤。随着技术的发展,自动化测试工具如Selenium和Appium成为了开发者的得力助手。本文将通过一个简单的代码示例,带领读者了解如何利用这些工具进行高效的自动化测试,确保软件的稳定性和可靠性,同时也让测试过程变得更加轻松有趣。
|
6月前
|
Web App开发 测试技术 API
Web自动化测试框架(基础篇)--Selenium WebDriver工作原理和环境搭建
本文详细介绍了Selenium WebDriver的工作原理,包括其架构、通信机制及支持的浏览器,并指导读者如何在Python环境下搭建Selenium WebDriver的测试环境,从安装Python和Selenium库到编写并运行第一个自动化测试脚本。
325 0
|
8月前
|
存储 数据管理 测试技术
构建Python构建自动化测试框架(原理与实践)
当谈到软件质量保证时,自动化测试是一个不可或缺的步骤。Python作为一种简单易学的编程语言,具有丰富的测试框架和库,使得构建自动化测试框架变得相对简单。本文将介绍如何使用Python构建自动化测试框架,包括选择合适的测试框架、编写测试用例、执行测试和生成报告等方面。
构建Python构建自动化测试框架(原理与实践)
|
8月前
|
测试技术
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)

热门文章

最新文章

  • 1
    MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
  • 2
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    微信小程序 app.json 配置文件解析与应用
  • 4
    【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
  • 5
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 6
    【Azure Function】Function App出现System.IO.FileNotFoundException异常
  • 7
    原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
  • 8
    【Azure Logic App】使用MySQL 新增行触发器遇见错误 :“Unknown column 'created_at' in 'order clause'”
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 10
    阿里云APP备案流程图以及备案所需材料整理,跟着教程一步步操作