上一篇文章讲到了Android单元测试的分类,Android单元测试框架选择。说明白点,根据运行环境的不同,可以分为运行在jvm虚拟机上的测试,和运行在真机上的测试,这篇我们来了解下运行在真机上的测试和其相应的测试框架。
Android自动化测试框架
与其说他是单元测试,不如说是功能测试,集成测试,自动化测试。
就是先将apk运行起来,然后对界面进行操作,也就是替代了用手点来苦力测试的方式。
目前Android的自动化测试已经比较成熟,所以这个是基于目前市面上已有的自动化测试工作做的一个简单的调研。
- 基本功能
1.支持基本的点击,触摸,文字输入,滑动,拖拽
2.支持到对webView的控制
3.需要尽可能真实的模拟
4.控制流走adbshell,或者脚本
可用方案 | 简介 | 功能 | 问题 |
---|---|---|---|
UiAutomator+ UiAutomatorViewer |
uiautomator是谷歌提供的一套黑盒测试工具, 与之相对的是Espresso(白盒测试)。 |
1. 官方方案 2. 可以控制到某个节点的点击,活动拖拽等等基本事件 3.支持shell脚本 |
1.对webview的验证控制不方便 webview上的元素要通过Chorme的“chrome://inspect”才能获取 |
Robotium | 是主流的测试方案之一,是一款免费的Android UI测试工具, 主要针对Android平台的应用进行黑盒自动化测试 |
1.模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作 2.使用简便,支持性良好 |
1,需要和目标应用同进程 2,基于android Instrumentation,是应用级别的,实际功能很受限 3,许久没更新,方案对新系统的适配可能会有坑 |
AutomatorX | AutomatorX是网易给出的一套解决方案,是集合了各个测试框架之后给的一个方案,所以目前看来功能点是最全的。 | 1.基于uiautomator的模拟点击,触摸事件等 2.集成图像识别 3.集成模拟输入法输入 4.集成到网页端的控制 5.可以不基于app做独立控制,运行流畅, 6.可以通过局域网wifi实现并发测试 |
只支持python语言 |
Macaca | macaca 是阿里的提供的解决方案,android部分也是基于uiautomator,和AutomatorX很类似,集成了多个工具集。 | 1.功能与AutomatorX基本相同,除了可以用wifi 2.网页的测试更好, |
依赖过多,安装环境很繁琐 |
Appium | Appium是一个跨平台工具,它允许测试人员使用同样的接口、基于不同的平台写自动化测试代码, 大大增加了测试套件间代码的复用性。android部分是基于UiAutomator和Selendroid |
1.支持多平台。 2.支持多语言。 3.不依赖源代码 4.无需重新编译或修改应用即可测试。 5.可自动录制脚本(仅Mac版支持)。仅仅支持UI测试,不支持单元测试。 |
它提供的功能更多的是对不同框架(android、ios、web)内的统一封装,单从android、功能性这个维度上看,它还是有点弱,只是一个基本版的uiautomator。 |
分析
其实现在就只有两种基本的解决方案,其他都是基于这两个的拓展,一个是 uiautomator , 另外一个是 uiautomator出来之前的 Instrumentation .
uiautomator 是基于可以通过页面层级结构获得页面元素,也可以直接模拟按键事件。
Instrumentation 是基于android保留的,对元素控制的钩子。
所以现在的方案一定会基于 uiautomator 。不过是看那个封装起来的足够方便,能减少我们这边的开发成本。
网友评论