小小糖 发表于 2018-4-23 13:23:23

Android自动化测试之UIAutomator

一、自动化测试的必要性

Android程序开发迭代周期短,测试case重复度高,大部分case属于功能验证,常规的测试方法是测试人员按照
预先写好的Case手顺进行测试,人工比对操作结果和预期结果。这种测试手段重复度高,效率低,无趣,易出
错,并且对测试人员能力提升帮助有限。Android手机机型狂多,屏幕尺寸各异,语言各异,因此测试重复度很
高,完全依赖人力并不现实。同时自动化测试可以方便的整合入Jenkins等CI工具,可以覆盖掉相当部分的UI正
确性检测。

二、自动化测试工具介绍

Android发展至今,出现了许多自动化测试工具,许多实力派企业甚至开发了专用测试工具。常用的大致有以下
几种: 1.Monkey:压力测试好伙伴 2.MonkeyRunner:支持录制功能,支持Python,但是API太弱,可以二次开发。
3.Appium:支持ios,支持的语言丰富,但许多语言API不完善。支持跨平台,社区资源有限,环境搭建太复杂。

4.Rubotium:功能强大,发展多年,社区资源丰富,使用略复杂。

5.Calabash:支持ios,功能强大,社区资源太少。 6.淘宝的TMTS:没用过,不评论。 7.UIAutomator:Android
4.1同步推出,兼容JUnit,基本上可以替代所有第三方测试工具。有朋友反映第一次使用搭建环境略复杂。

三、为什么选择UiAutomator

作为亲儿子UiAutomator随Android同步推出,随Android版本同步升级,经过多次迭代目前已经相当稳定。 相
比MonkeyRunner,UiAutomator接口丰富易用,可以支持所有Android事件操作,事件操作不依赖于控件坐标,
可以通过断言和截图验证正确性,非常适合做UI测试。 UIAutomator不需要测试人员了解代码实现细节,属于
功能和黑盒测试。测试代码结构简单,编写容易,学习曲线低。基于JAVA,一次编译可以运行于所有Android
设备。

注: UIAutomator不适合OpenGL和HTML为主的程序,因为这类程序未使用Android的view体系。

四、UIAutomator的使用准备

1.首先介绍UIAutomator测试框架的UI工具:uiautomatorviewer

uiautomatorviewer位于sdk/tools目录下,可以扫描、分析待测试应用界面,分析结果可以导出为xml与截图。
通过该工具可以分析出UI控件的id,text,focusable等等各种属性,甚至布局上的层次关系。

可以通过./uiautomatorviewer启动该工具。


上图uiautomatorviewer的运行截图,左上角两个手机模样的图标点击后就会开始截图并分析UI组件,分析后的
结果如下方所示, 左侧为手机当前画面截图,右侧上部为view控件的层次关系,下部为当前选中控件的各
种信息。例如当前选中了 "X"号,可以看到该控件是一个Button,属于一个LinearLayout,在LinearLayout中的
index是3,text是X,id是mul,contentDescription是“乘”,可以点击,可以获得焦点等等。。。 相信看到这个
大家起码已经觉得这个工具很牛X了,确实对于开发的同学该工具也会很有帮助。

2.现在介绍uiautomator

uiautomator是一个包含一套UI测试API,和支持运行测试程序的JAR包。该JAR包位于sdk/platforms/android-
*/uiautomator.jar. 使用时需要注意自己的SDK版本需要大于16, SDK Tools版本需要大于21.

五.uiautomator的使用步骤

下面用一个例子介绍uiautomator的使用。在该例子中我们将启动计算器程序并测试1+1的结果是否正确。
以Eclipse为例: 1.创建一个Java工程 File-->New-->Java Project 输入工程名称,例如CalculatorAutoTest.
点击Finish

2.添加必要的Jar包 在Project Explorer中右击刚刚创建的这个工程,选择 Properties-->Java build Path添加
如下JAR包 a.选择Add library -->JUnit选择Junit4 b.选择Add External JARS, 选择sdk/platforms/android-*/目
录下的uiautomator.jar和android.jar,路径中的*请使用自己以下载的最新版本。

3.File-->new-->Class创建一个新的文件,并确保该文件继承自UiAutomatorTestCase.


4.编写测试用例,通常可以为一个测试用例编写一个单独的方法:



5.编译测试用例 uiautomator的编译工具是Ant,在编译之前我们先要生成build.xml,生成方法如下:


输出如下:


这里应该和之前添加Library选择的一致,所以-t 后面我写的是3.

运行后输出如下:


可见编译后的jar路径为:


如果失败会出现类似以下信息:


运行失败的话,根据提示信息解决一下就可以了。



梦想家 发表于 2018-5-9 10:01:26

:victory:
页: [1]
查看完整版本: Android自动化测试之UIAutomator