选择框架之前,考虑一个问题:我们需要什么样的自动化测试框架?
稳定性好,可移植性好,支持多应用交互,执行效率高,容易上手,开发效率高,方便调试,控件易捕获...
Monkey
Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。
- 优点:执行过程简单,速度快,能发现一些非常规路径和较深层次的问题。
- 缺点:执行过程不可控,不支持诸如录制、回放,截屏等功能。
Monkey Runner
Monkeyrunner可以说是“monkey之子”,其主要依靠一下三个类来工作:Monkey Runner API,Monkey Device API,Monkey Image API。
相比较与Monky,monkeyrunner已经提供了许多可供操作的,功能强大的API,但是和Monkey一样也有其不好的地方,就是二者都是依靠控件的坐标进行定位的,而坐标定位恰恰是项目中最不稳定的因素,随时可能因为程序员对空间位置的调整而导致脚本失效。
- 优点:功能较为丰富。
- 缺点:坐标定位控件,移植性差。
Instrumentation
Instrumentation是Android主推的白盒测试框架。在单元测试的基础上进行功能扩展,达到对Android系统的高度控制。
Instrumentation框架的运行流程:
- 优点:
- 脚本稳定性高(ID一般变动较少)
- 可移植性好(控件位置移动对其影响不大)
- 运行效率高(直接调用控件操作)
- 调试方便(与源码一起调试)
- 缺点:
- 门槛很高,由于此框架是基于源码,脚本开发者必须对java语言,android框架运行机制以及IDE有相当了解,并且需要能够读懂源码;
- 另外一个最大的问题就是不支持多应用交互,由于基于源码,android系统自身的安全性限制,禁止进程间相互访问。
Robotium
Robotium是基于Instrumentation白盒测试框架的二次封装,使得脚本的开发更高效。Robotium既支持基于源码的测试,又支持基于apk的测试。并同时支持Native App和Hybrid App的自动化测试,其主要的操作API位于Solo类当中。
- 优点:
- API使用简单,执行速度快
- 源码代码量也不大,方便进行二次开发,定制自己需要的功能
- 同时支持基于apk和源码的自动化测试
- 缺点:
- 不支持跨进程操作
UIAutomator
与Instrumentation相比,无需源码,脚本难度低,开发效率高,支持交互,可以获取控件的详细信息,稳定性高,调试简单。
Appium
Appium是一个自动化开源框架,支持IOS平台和Android平台上的原生应用、web应用和混合应用的测试。Appium最显著的特点是:它是一个跨平台的工具,即它允许测试人员在不用的平台(IOS,Android),使用不同的开发语言(java,python,ruby),使用同一套API来编写测试脚本,这大大增加了IOS和Android的代码的复用性。
Appium遵循一种哲学,重点体现在以下四个需求:
Appium结构:Appium采用C/S架构,其核心是一个web服务器,他提供一套REST的接口。它收到客户端的连接,监听到命令,然后在移动端执行这些命令,再将执行结果放在HTTP响应中返还给客户端。