转载:https://geeknote.net/wick/posts/2179
UIAutoMator2
uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作。 github: https://github.com/openatx/uiautomator2
优点:
- 设备和开发机可以脱离数据线,通过WiFi互联(基于atx-agent)
- 集成了openstf/minicap达到实时屏幕投频,以及实时截图
- 集成了openstf/minitouch达到精确实时控制设备
- 修复了xiaocong/uiautomator经常性退出的问题
- 代码进行了重构和精简,方便维护
- 实现了一个设备管理平台(也支持iOS) atxserver2
- 扩充了toast获取和展示的功能
缺点:
- 需要手动元素定位,对于非webview页面支持不好
- 需要使用者熟悉python
- 不支持IOS平台
Appium
Appium 是一个开源工具,用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原生、移动 Web 和混合应用。**「原生应用」指那些用 iOS、 Android 或者 Windows SDKs 编写的应用。「移动 Web 应用」是用移动端浏览器访问的应用( Appium 支持 iOS 上的 Safari 、Chrome 和 Android 上的内置浏览器)。「混合应用」**带有一个「webview」的包装器——用来和 Web 内容交互的原生控件。类似于 Apache Cordova 项目,创建一个混合应用使得用 Web 技术开发然后打包进原生包装器创建一个混合应用变得容易了。重要的是,Appium 是跨平台的:它允许你用同样的 API 对多平台(iOS、Android、Windows)写测试。做到在 iOS、Android 和 Windows 测试套件之间复用代码。 github: https://github.com/appium/appium
优点:
- 支持IOS,Android,Windows平台上的原生,移动web和混合应用
- 基于webdriver协议开发,支持跨平台,允许使用相同的api对多平台应用编写测试
- 支持的语言种类多
- 功能强大,可以替代uiautomator2
缺点:
- IOS应用测试只支持在mac平台上运行
- 执行效率相对于uiautomator较慢
- 中文输入必须使用appium自带的中文输入法
- API较多,学习成本高,而且新版本不太稳定
AirTest
AitTest是由网易公司开发的用于移动端游戏和app自动化测试的工具,现已在github上开源 AirtestProject是由网易游戏推出的UI自动化测试解决方案,项目构成如下:
1)Airtest框架¶
Airtest 是一个跨平台的、 基于图像识别 的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS:
2)Poco框架¶
Poco 是一款 基于UI控件识别 的自动化测试框架,目前支持Android原生、iOS原生、Unity3D、cocos2dx、UE4和Egret等平台,也可以在其他引擎中自行接入poco-sdk来使用。
3)AirtestIDE¶
AirtestIDE 是一款跨平台的 UI自动化测试编辑器 ,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写 Airtest 和 Poco 代码。
4)手机集群解决方案-DeviceFarm¶
DeviceFarm 是网易推出的自动化测试集群解决方案,它是软硬件一体化方案,包含设备集群建设、集群设备批量维护管理、监控报警和云端真机等功能,可以为您在企业内部搭建稳定高效的设备管理平台, 提升设备利用率,赋能自动化测试流程搭建:
5)Airlab云测试平台¶
Airlab云测试平台支持用例管理、脚本管理、任务预约、任务调度、云端报告等功能,可以快速构建企业自动化测试全流程,支持ios和安卓的回归测试及兼容测试。
优点:
- 跨平台
- 元素定位基于图像识别,无需编写复杂的元素定位代码
- 提供IDE,可以辅助测试人员编写自动化用例
- 官方文档提供了较多的实用教程,方便测试人员上手
- 提供移动端自动化测试平台的私有化部署,但是收费
- 提供了丰富的API,方便在其他框架中整合
缺点:
- 由于图像识别算法是基于open-cv,对于复杂的页面,图像识别的准确性不高
- 运行环境搭建比较复杂,需要安装比较多的依赖
- 用例执行效率较低,也是图像识别的锅,因为这玩意儿本身效率就不高
Flybirds
Flybirds是基于BDD模式和AirTest开发的移动端UI自动化测试工具
- 基于BDD模式,类自然语言语法
- 支持自动化APP操作、表单提交、UI元素校验、键盘输入、Deeplink跳转等
- 默认支持英文、中文两种语言,支持更多语言扩展
- 插件式设计,支持用户自定义自动化扩展
- 提供cli脚手架,快速搭建项目
- 提供html报告
优点:
- 使用BDD模式,类自然语言语法,编写的用例直观易懂,默认支持中文和英文两种Feature编写方式
- 底层基于AirTest开发,具备AirTest的优势
- 支持自定义插件,扩展性强
- 自带step模板,支持绝大多数页面操作,也支持自定义step模板
- 有cli模式,支持持续集成
缺点:
- 由于使用了BDD模式,测试人员需要了解Gherkin语法
- 跟AirTest一样,执行效率不高
- 对于没有text的页面,元素定位会比较麻烦
- 刚开源不久,没啥人用,相关的社区和文档不多
总结
通过以上4种移动端UI自动化的对比,可以得出以下结论:
- 对于原生Android平台应用,使用UIAutomator2是比较方便的选择。
- 对于跨平台应用,Appium和AirTest还有Flybirds都是可以考虑的。
- Appium基于webdriver协议,使用统一的API来实现跨平台操作,但是对于APP内嵌的h5页面,支持不好。
- AirTest是基于图像识别来操作,存在效率低和准确率不高的问题,尤其是一个页面元素图标很相似的时候,可能会出现无法识别的问题,但是airtest提供了方便实用的IDE,能大大减轻元素定位的负担,并且支持将自动化脚本打包成apk,可以通过adb shell来执行自动化测试。
- Flybirds的创新在于使用了BDD模式,测试人员无需编写复杂的测试代码即可完成测试,但是此工具目前并不流行,网上也缺少相关的讨论和技术文档,出了问题都不好排查。
建议使用优先级
AirTest > Flybirds> Appium > UIAutomator
参考文档
- 开源 | 携程机票BDD UI Testing框架 - Flybirds
- Github-flybirds
- 携程机票BDD-UI-Testing框架Flybirds
- airtest
- behave
- multiple-cucumber-html-reporter
- uiautomator2源码解析
- UIAutomator2的使用
- about-appium
- airtest-doc
标签:github,解决方案,支持,UI,测试,自动化,Android,移动 From: https://www.cnblogs.com/xingxia/p/18331723/mobile_auto