安卓自动化测试框架
安卓自动化测试框架
安卓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 |
优点 |
|
缺点 | 支持的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语言开发 |
优点 |
|
缺点 | 运行速度慢,自动运行的时候会跳出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库
|
缺点 |
|
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设备中都适用) |
缺点 |
|
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 可以在模拟器和实际设备上使用,也可以集成网格节点作为缩放和并行测试 |
优点 |
|
缺点 |
|
Robolectric | |
介绍 | https://github.com/robolectric/robolectric Robolectric 是一款Android单元测试框架,但它并不依赖于Android提供的测试功能 |
优点 |
|
缺点 |
|
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自动化测试中的诸多难题,比如业界一直没有解决的跨进程测试问题
|
缺点 |
|
Athrun | |
介绍 | Athrun以Mobile自动化测试框架为基础,以PC2Mobile为切入点,是淘宝 Mobile测试日常工作必备的平台 |
优点 | Ø Android上的自动化测试,包括自动化测试框架,持续集成体系。 Ø IOS上的自动化测试,包括:
|
缺点 |
|
Appetizer | |
介绍 | https://www.appetizer.io/cn/ Appetizer 通过 DEX 插桩的方法,全自动地向 APP 内多处插入代码,在程序运行的过程中,监控异常和闪退、搜集主线程卡顿与耗时操作、HTTP/HTTPS 请求和响应、CPU 和 Java 堆内存消耗等。 |
优点 |
|
缺点 |
|
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区别于其他模拟框架的地方主要是允许开发者在没有建立“预期”时验证被测系统的行为 |
缺点 |
|