首页 > 其他分享 >移动端自动化解决方案

移动端自动化解决方案

时间:2024-07-30 10:31:34浏览次数:15  
标签:github 解决方案 支持 UI 测试 自动化 Android 移动

转载: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和安卓的回归测试及兼容测试。

github:https://github.com/AirtestProject/Airtest

优点:

  • 跨平台
  • 元素定位基于图像识别,无需编写复杂的元素定位代码
  • 提供IDE,可以辅助测试人员编写自动化用例
  • 官方文档提供了较多的实用教程,方便测试人员上手
  • 提供移动端自动化测试平台的私有化部署,但是收费
  • 提供了丰富的API,方便在其他框架中整合

缺点:

  • 由于图像识别算法是基于open-cv,对于复杂的页面,图像识别的准确性不高
  • 运行环境搭建比较复杂,需要安装比较多的依赖
  • 用例执行效率较低,也是图像识别的锅,因为这玩意儿本身效率就不高

Flybirds

Flybirds是基于BDD模式和AirTest开发的移动端UI自动化测试工具

  • 基于BDD模式,类自然语言语法
  • 支持自动化APP操作、表单提交、UI元素校验、键盘输入、Deeplink跳转等
  • 默认支持英文、中文两种语言,支持更多语言扩展
  • 插件式设计,支持用户自定义自动化扩展
  • 提供cli脚手架,快速搭建项目
  • 提供html报告

github: https://github.com/ctripcorp/flybirds

优点:

  • 使用BDD模式,类自然语言语法,编写的用例直观易懂,默认支持中文和英文两种Feature编写方式
  • 底层基于AirTest开发,具备AirTest的优势
  • 支持自定义插件,扩展性强
  • 自带step模板,支持绝大多数页面操作,也支持自定义step模板
  • 有cli模式,支持持续集成

缺点:

  • 由于使用了BDD模式,测试人员需要了解Gherkin语法
  • 跟AirTest一样,执行效率不高
  • 对于没有text的页面,元素定位会比较麻烦
  • 刚开源不久,没啥人用,相关的社区和文档不多

总结

通过以上4种移动端UI自动化的对比,可以得出以下结论:

  1. 对于原生Android平台应用,使用UIAutomator2是比较方便的选择。
  2. 对于跨平台应用,Appium和AirTest还有Flybirds都是可以考虑的。
  3. Appium基于webdriver协议,使用统一的API来实现跨平台操作,但是对于APP内嵌的h5页面,支持不好。
  4. AirTest是基于图像识别来操作,存在效率低和准确率不高的问题,尤其是一个页面元素图标很相似的时候,可能会出现无法识别的问题,但是airtest提供了方便实用的IDE,能大大减轻元素定位的负担,并且支持将自动化脚本打包成apk,可以通过adb shell来执行自动化测试。
  5. Flybirds的创新在于使用了BDD模式,测试人员无需编写复杂的测试代码即可完成测试,但是此工具目前并不流行,网上也缺少相关的讨论和技术文档,出了问题都不好排查。

建议使用优先级

AirTest > Flybirds> Appium > UIAutomator

参考文档

  1. 开源 | 携程机票BDD UI Testing框架 - Flybirds
  2. Github-flybirds
  3. 携程机票BDD-UI-Testing框架Flybirds
  4. airtest
  5. behave
  6. multiple-cucumber-html-reporter
  7. uiautomator2源码解析
  8. UIAutomator2的使用
  9. about-appium
  10. airtest-doc

 

标签:github,解决方案,支持,UI,测试,自动化,Android,移动
From: https://www.cnblogs.com/xingxia/p/18331723/mobile_auto

相关文章

  • Django&rest_framework - 方法 get_queryset 被调用两次,还有其他更好的解决方案吗?
    目前,我有一个使用django和rest_framework来运行一些基本API的项目。问题是,当我使用rest_framework和DjangoModelPermissions上的通用库创建视图时,我的方法get_queryset被调用两次My权限类classDefaultModelPermissions(DjangoModelPermissions):"""......
  • 移动端页面字体缩放问题处理
    [移动端浏览器会缩放字体导致页面布局变化]ps:这个问题弄得我整个人都不好了,移动端浏览器可以设置字体缩放,而且不同浏览器不同设备默认缩放程度不同。仔细观察页面,就会发现也不是所有的字体都会被缩放。经过反复对比发现,提供了宽高数值,并且设置了flex布局的文字就不会被缩......
  • 适合证券公司的跨网传输解决方案,了解一下!
    证券公司由于其业务特性,涉及大量的敏感财务数据和交易信息,因此通常会在内部实施网络隔离措施。目的是为了保护数据免受未授权访问和网络攻击,确保数据的安全性和保密性,因此急需寻找安全可靠的跨网传输解决方案,实现不同网间数据的安全传输。以下是证券公司可能会采取的网络隔离方......
  • 如何通过前端表格控件实现自动化报表?
    背景最近伙伴客户的项目经理遇见一个问题,他们在给甲方做自动化报表工具,项目已经基本做好了,但拿给最终甲方,业务人员不太买账,项目经理为此也是天天抓狂,没有想到合适的应对方案。现阶段主要面临的问题是项目经理和甲方沟通好了需求,就布置了任务,让研发去调研。但由于现在市面上报表......
  • 如何智能便捷、自动化地进行文件数据采集?
    文件数据采集是指从各种源头和渠道收集、整理、清洗、分析和挖掘数据的过程。它是大数据应用的基础,为企业提供全面的决策支持和业务价值。文件数据采集对于不同行业都至关重要,通过有效的文件数据采集,企业可以更好地了解市场动态、优化服务和产品,以及提高运营效率。金融行业会涉......
  • 【入门】汉诺塔的移动次数 - 题解
    【入门】汉诺塔的移动次数时间限制:C/C++1000MS,其他语言2000MS内存限制:C/C++128MB,其他语言256MB描述汉诺塔的问题大家都已经很熟悉了,有三个柱子,每个柱子上有一些大小不一的金片,要把金片从\(A\)柱移动到\(C\)柱,可以借助\(B\)柱,请问\(n\)个金片的情况下,需要最少移......
  • 软件测试必备 - 14个接口与自动化测试练习网站
    随着互联网和移动应用的快速发展,接口和自动化测试的重要性日益凸显。越来越多的企业开始重视API测试,因为它不仅能提升开发效率,还能确保系统的稳定性和安全性。这些练习网站为测试人员提供了宝贵的资源,帮助他们掌握必要的技能,应对日益复杂的测试需求。  在软件测试的世界里,接......
  • 【C++11】C++11新纪元:深入探索右值引用与移动语义
    ......
  • 【本届确定SPIE出版-稳定EI检索—往届均已成功见刊检索】第四届检测技术与自动化工程
    第四届检测技术与自动化工程国际学术会议(TTAE2024)将拟定于2024年9月6-8日中国厦门召开。检测技术与自动化工程国际学术会议将每年举行一次,旨在将“检测技术”和“自动化工程”等学术领域的学者、专家、研发者、技术人员聚集到一个学术交流的平台,并且提供一个共享科研成果、......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-57- 上传文件 - 番外篇
    1.简介前边的三篇文章基本上对文件上传的知识介绍和讲解的差不多了,今天主要是来分享宏哥在文件上传的实际操作中发现的一个问题:input控件和非input控件的上传API对其都可以上传成功。废话不多说直接进入正题。2.项目实战宏哥之前在讲解和分享Java+selenium系列时,将其划分为非in......