安卓自动化测试框架

2023-11-15

安卓APP测试框架总结:

  • 基于Instrumentation的测试框架,比如Espresso,Robotium,Selendroid等,都不能支持跨APP使用。 如自动化测试中有跨APP操作,我们可以结合UiAutomator实现。
  • 支持BDD(行为驱动开发,是敏捷开发技术之一,通过自然语言定义系统行为,以功能使用者的角度,编写需求场景,且这些行为描述可以直接形成需求文档,同时也是测试标准。)的自动化框架比较少,可以在calabash 和 RoboSpock及Jbehave之间选择。
  • 若想同时支持Android和IOS,可供选择的框架有Appium和Calabash或AthRun。
  • 若为单元测试选择框架,可选Instrumentation或Robolectric;Robolectric实现了shadow object 类,耗时短。

 

detox

介绍

Detox 是一个用于测试 React Native 应用程序 Selenium 界面的端到端自动化测试工具;原理是在 ReactNative 开发中,使用 js 测试框架 jest 或 mocha 来执行相应的测试脚本。通过对RN程序包中 package.json 增加 Detox 相关配置,并在RN程序包中增加测试案例文件夹 e2e(在其中增加测试案例)实现测试用例的编写和执行。

https://github.com/wix/detox

优点

  • 跨平台:用JavaScript编写跨平台测试。目前支持iOS,Android
  • 在真机上运行:通过在设备/模拟器上测试您的应用程序,就像真实用户一样
  • 自动同步:通过监控应用程序中的异步操作,可以在核心处停止
  • 为CI而做:在像Travis这样的CI平台上执行E2E测试
  • 测试独立、可调式

缺点

支持的RN版本:

iOS  <=0.63.x

Android   <=0.56 - Full support     >=0.57 <=0.63 - Visibility edge-case: see this RN issue*

我们的APP使用的RN版本是0.61,可以支持使用

AppCrawler

介绍

https://github.com/seveniruby/AppCrawler

自动化遍历工具,基于爬虫思想进行设计,java语言开发

优点

  • 支持android和iOS,支持真机和模拟器;
  • 可经过配置来设定遍历的规则(好比设置黑名单和白名单,提升遍历的覆盖率);
  • 其自己的遍历深度覆盖较全,好比它拥有APP的dom树,根据每一个activity下的可点击元素逐个点击,比monkey更具备规律性,覆盖更全面;
  • 生成的报告附带截图,能够精确看到点击了哪一个元素及结果,对crash类的问题定位清晰;
  • 各大云市场上自动遍历功能都多有限制企业没法自由定制
  • 解决monkey等工具可控性差的缺点
  • 发现深层次的UI兼容性问题
  • 经过新老版本的diff能够发现每一个版本的UI变更范围

缺点

运行速度慢,自动运行的时候会跳出APP

Appium

介绍

https://github.com/appium/appium     

https://github.com/appium/appium-desktop

介绍:http://appium.io/docs/cn/about-appium/intro/

工作原理:http://www.testclass.net/appium/appium-base-summary/

下载:http://appium.io/

优点

跨平台、跨语言,可以增加iOS和Android测试套件间代码的复用性

缺点

在运行脚本上执行速度较慢,没有uiautomator的执行速度快

UIAutomator2

介绍

https://github.com/openatx/uiautomator2

UiAutomator是Google提供的用来做安卓自动化测试的一个Java库,基于Accessibility服务。功能很强,可以对第三方App进行测试,获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:1. 测试脚本只能使用Java语言 2. 测试脚本要打包成jar或者apk包上传到设备上才能运行,为了解决这些问题以及方便区分,就出现了这个工具

优点

可以使用python语言,能够在电脑上运行的时候就控制手机;原理就是在手机上运行了一个http rpc服务,将uiautomator中的功能开放出来,然后再将这些http接口封装成Python库

  • 设备和开发机可以脱离数据线,通过WiFi互联(基于atx-agent
  • 代码进行了重构和精简,方便维护
  • 实现了一个设备管理平台(也支持iOS) atxserver2
  • 扩充了toast获取和展示的功能

缺点

 

MonkeyTalk 

介绍

MonkeyTalk软件测试工具由两部分构成:MonkeyTalk IDE 和 MonkeyTalk Agents

MonkeyTalk IDE是Eclipse平台的工具,工能是:对iOS、Android程序进行录制、播放、编辑和管理功 能测试,测试的目标可以是模拟器,也可以是硬件设备;

MonkeyTalk Agents是测试IOS与Android的库文件,测试时必须放到程序中作为代理使用,测试时的所有动作都由这个代理向IDE传递;(说明: MonkeyTalk IDE与MonkeyTalk Agents是分开安装的,只有程序中安装了MonkeyTalk Agents,MonkeyTalk IDE才能发现这个程序并纪录他的操作)

优点

支持iOS 和 Android,它可以为应用进行真实的,功能性交互测试

提供简单的 “smoke tests”,复杂数据驱动的测试套件

支持原生,移动和混合应用,真实设备或者模拟器

场景捕获非常容易,可以记录高级别,可读的测试脚本

还支持HTML5的一些特性,比如本地存储、session存储、应用缓存等

缺点

MonkeyTalk需要在源码插入agent

MonkeyTalk的文档基本上都是英文的

Instrumentation 

介绍

https://developer.android.com/reference/android/app/Instrumentation.html

Instrumentaion 是Android自带的一个测试框架,是很多其它测试框架的基础,可以在同进程中加载被测组件

优点

它有很多丰富的高层封装,使用者可以使用基于instrumentation的其他框架,避免过多二次开发量

缺点

不支持跨应用,导致基于instrumentation的框架都继承了这个缺点

Robotium 

介绍

https://github.com/robotiumtech/robotium

Robotium是基于Instrumentation框架开发的一个更强的框架. 对常用的操作进行了易用性的封装. 用于开发功能性、系统和验收测试场景。它运行时绑定到GUI组件。它安装了一个测试用例套件作为在Android设备或仿真器上的应用程序,并提供用于执行测试的真实环境。

优点

容易在最短的时间内编写测试脚本,易用性高。自动跟随当前activity。 由于运行时绑定到GUI组件,所以相比Appium,它的测试执行更快,更强大。 不访问代码或不了解app实现,也可以工作。 支持Activities、Dialogs、Toasts、Menus、Context Menus和其他Android SDK控件。

缺点

不能处理flash和web组件。在旧设备上会变得很慢。 由于不支持iOS设备,当自动化测试同时覆盖 android与iOS的情况时,测试会被中断。没有内置的记录和回放功能,使用记录功能需要 TestDroid 和 Robotium Recorder 这样的收费工具。

Calabash

介绍

https://github.com/calabash/calabash-android

https://github.com/calabash/calabash-ios

https://github.com/calabash/calabash

Calabash是一个开源的移动端UI自动化测试框架,支持android和IOS,存在calabash-android和calabash-ios

优点

PC端使用了cucumber框架,通过http和json与模拟器和真机上安装的测试apk通信,测试apk调用robotium的方法来进行UI自动化测试,支持webview操作

有大型社区支持。列表项 简单,类似英语表述的测试语句支持在屏幕上的所有动作,如滑动,缩放,旋转,敲击等。 跨平台开发支持(同样的代码在Android和iOS设备中都适用)

缺点

  • features文件不支持中文,需要自己去扩展
  • Drag操作直接通过robotium扩展过来在calabash上不能使用
  • 在windows上运行的时候好多次出现了连接断开的问题等不稳定情况
  • 测试步骤失败后,将跳过所有的后续步骤,这可能会导致错过更严重的产品问题
  • 测试耗费时间,因为它总是默认先安装app
  • 需要Calabash框架安装在ios的ipa文件中, 因此测试人员必须要有iOS的app源码
  •  除了Ruby,对其他语言不友好。

Espresso 

介绍

https://developer.android.google.cn/training/testing/espresso/basics

优点

简单易学,同时支持录制交互,在录制的交互中添加断言,从而快速实现UI测试自动化

onView(ViewMachers):寻找用来测试的View, 允许可以通过多次的onView方法,在层次图中找到目标视图(views)。

perform(ViewActions):发送交互事件(例如点击、输入等交互)。

check(ViewAssertions):用于检验测试结果。

缺点

只支持Android平台的测试

Selendroid

介绍

http://selendroid.io/native.html

Selendroid 是一个基于Instrumentation的一个框架. 完全兼容Webdriver协议。 Selendroid 可以在模拟器和实际设备上使用,也可以集成网格节点作为缩放和并行测试

优点

  • 能与不同android设备(模拟器或者硬件设备)同时交互
  • 现有的模拟器自动启动
  • 在测试需要自动化的情况下应够用不需要修改

缺点

 

Robolectric

介绍

https://github.com/robolectric/robolectric

Robolectric 是一款Android单元测试框架,但它并不依赖于Android提供的测试功能

优点

  • 通过实现一套JVM能运行的Android代码,然后在unit test运行的时候去截取android相关的代码调用,然后转到Robolectric实现的代码(shadow objects)去执行这个调用的过程。因此它不像模拟器或设备需要dexing(Android dex编译器将类文件编译成Android设备上的Dalvik VM使用的格式)、打包、部署和运行的过程,大大减少了测试执行的时间。Pivotal实验室声称使用Robolectric可以在28秒内运行1047个测试。
  • 除了实现Android里面的类的现有接口,Robolectric还给每个Shadow类额外增加了很多接口,可以读取对应的Android类的一些状态。比如它为ImageView提供了getImageResourceId()方法,测试者可以通过getImageResourceId()接口来确定是不是正确显示了期望的Image。

缺点

 

RoboSpock

介绍

https://blog.csdn.net/shensky711/article/details/53561172

RoboSpock是一个开源的Android测试框架,它提供了简单的编写BDD行为驱动开发规范的方法,使用Groovy语言,支持Google Guice库

优点

RoboSpock合并了Robolectic和Spock的功能。

缺点

 

Cafe

介绍

https://github.com/BaiduQA/Cafe

测试框架是一款来自百度QA部门的具有开创性意义的Android平台的自动化测试框架,框架覆盖了Android自动化测试的各种需求;java语言开发

优点

解决了Android自动化测试中的诸多难题,比如业界一直没有解决的跨进程测试问题

  • 基于hook录制体系
  • 遍历测试
  • 跨app测试
  • pc agent设计
  • 使用android漏洞提权

缺点

 

Athrun

介绍

Athrun以Mobile自动化测试框架为基础,以PC2Mobile为切入点,是淘宝 Mobile测试日常工作必备的平台

优点

Ø Android上的自动化测试,包括自动化测试框架,持续集成体系。

Ø IOS上的自动化测试,包括:

  • 注入式自动化框架AppFramework;
  • 基于录制的非注入式自动化框架 Athrun_IOS;
  • InstrumentDriver,还有持续集成体系。

缺点

 

Appetizer

介绍

https://www.appetizer.io/cn/

Appetizer 通过 DEX 插桩的方法,全自动地向 APP 内多处插入代码,在程序运行的过程中,监控异常和闪退、搜集主线程卡顿与耗时操作、HTTP/HTTPS 请求和响应、CPU 和 Java 堆内存消耗等。

优点

  • 测量逻辑和业务逻辑分离: Appetizer 提供测量点和测量方法,测量与业务低耦合。Appetizer 独立升级,服务升级带来更广的测量面。
  • 测量全面:APP 代码与库代码
  • 部署方便:测量代码与 APP 同进程,同权限,不需要搞 Root,HTTP 代理等等
  • 结合自动化遍历,夜间长时间自动遍历,找到的稳定性问题自动由质量监控捕获,上报完整、专业
  • 结合 UI 自动化测试,评测 APP 性能、HTTP 延时等性能问题
  • 低性能影响:log 到本地,控制 log 频率,数据量,以及 log 方式,对 APP 流畅性无影响

缺点

 

Jest

介绍

https://github.com/facebook/jest

Jest 是 FaceBook 出品的前端测试框架,适合用于 React 和 React Native 的单元测试

优点

自动集成了断言、JSDom、覆盖率报告等开发者所需要的所有测试工具,是一款几乎零配置的测试框架

缺点

 

Mockito

介绍

https://github.com/mockito/mockito

https://github.com/hehonghui/mockito-doc-zh

一个强大的用于Java开发的模拟测试框架

优点

Mockito区别于其他模拟框架的地方主要是允许开发者在没有建立“预期”时验证被测系统的行为

缺点

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安卓自动化测试框架 的相关文章

随机推荐