八、UIAutomator测试入门

本文详细介绍了Android移动端测试中的UIAutomator工具,包括其优点、如何解决跨进程操作问题、工作原理以及如何使用。通过案例展示了如何进行UI测试,如计算器应用的测试流程,涵盖 UiSelector、UiObject、UiCollection 等关键类的使用方法,以及常见UI操作,如点击、滑动等。此外,还讲解了如何配置UIAutomator的测试环境以及相关API的使用技巧。

移动端测试_UIAutomator

Robotium 基于Instrumentation测试框架。国内外使用的比较多,
优点:
1.资料相对较多
2.通过Instrumentation注入被测进程,与被测进程运行在同一进程空间,能够方便的识别被测应用中的被测对象,并对这些对象进行操作。
缺点:
1.与被测进程运行在同一进程空间,由于安卓的进程隔离机制,则会被系统隔离在其他进程之外,无法跨进程操作任何对象。
解决方法:
自行编写服务,基于AIDL或编写socket与monkeyServer进行通信,在robotium测试脚本中调用接口方法来间接实现跨进程操作等,实现相对复杂
UIAutomator 是一个测试的java库,包含创建UI测试的各种api和执行自动化测试的引擎
优点:
1.接口丰富、易用、可支持所有android事件操作
2.可通过断言和截图验证正确性、非常适合UI测试。
3.测试框架则可解决跨进程操作的问题。
4.可通过安卓自带UIAutomator viewer获取应用控件信息
注:如果连接多个设备需要指定ANDROID_SERIAL环境变量来说明对哪个设备进行截屏。设置方法:windows系统,在控制台输入set ANDROID_SERIAL=,设备的序列号可以通过adb devices命令进行查看。

案例设计
以计算器应用为例,介绍具体操作步骤:
(1)启动要测试的app应用(计算器)
(2)使用usb先将手机连接至电脑,安装usb驱动,打开开发者选项、usb调试
(3)运行uiautomatorviewer批处理文件,并截取手机屏幕信息。
(4)根据用例设计,找到对应元素的属性信息,(找出按键1,2,+,=的相关信息)
(5)应用AS、Eclipse、UI automator、ant等工具设计单元测试用例,编译项目
(6)将生产的jar包发到手机设备上,运行测试用例并分析测试结果

AS应用
UiAutomator提供了两种工具来支持UI自动化测试:uiautomatorviewer:用来分析UI控件的图形界面工具,位于SDK目录下的tools文件夹中。uiautomator:一个java库,提供执行自动化测试的各种API。
配置
(1)在app根目录的build.gradle文件中加入依赖:
// AS默认配置,如果如果没有记得加上
androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2’, {
exclude group: ‘com.android.support’, module: ‘support-annotations’})
androidTestCompile ‘com.android.support.test.uiautomator:uiautomator-v18:2.1.2’
注意:uiautomator库支持的最低版本为API 18,所有开发环境的minSdkVersion可设置为18.
(2)在build.gradle文件中配置配置testInstrumentationRunner为AndroidJunitRunner:
defaultConfig {

// 这个AS会为我们默认配置,如果没有记得加上
testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”
}
(3)补充
dependencies中依赖方式详解
compile 参与编译,并且会打包到debug/release apk中。
testCompile 只参与单元测试编译,不会打包到debug/release apk包中,不需要设备支持。
androidTestCompile 只参与UI测试编译,不会打包到debug/release apk包中,需要设备支持。
Provided 只参与编译,不会打包到debug/release apk中。
APK 不参与编译,只会打包到debug/release apk中。
Debug compile 只参与debug编译,只会打包到debug apk中
Release compile 只参与release编译,只会打包到release apk中。

案例编写及运行
(1)在AS中新建Android工程,在androidTest目录下,自定义继承自UiAutomatorTestCase的测试类
(2)自定义以test开头命名的方法,实现具体的测试步骤
(3)右击自定义类,运行测试案例或者右击各个方法运行单个案例

关键类
在创建项目时引入uiautomator.jar文件(位于android-sdk/platforms/android-X目录下),可以使用UI Automator提供的API类模拟用户动作获取UI界面上的组件元素。Uiautomator API包含关键类可以用于捕获和操控待测安卓应用的UI组件元素。
UIAutomatorTestCase类
UiAutomatorTestCase类继承自Junit3中的TestCase类,并在其setUp() 、tearDown() 、getParams() 函数中。每个测试用例类都需要继承自UiAutomatorTestCase,以实现测试环境的setup,teardown等功能。其中主要是用Bundle实现Android Activity之间的通讯。在UiAutomatorTestCase,还加入了getUiDevice()等方法以实现在测试的任意地方均可调用UiDevice()。
UIDevice类
UiDevice代表设备状态。可以调用UIDevice类实例的方法来检查不同属性的状态,例如当前屏幕方向及屏幕尺寸;可以用来执行设备级的操作,例如强制设备横、竖屏、按home按钮、菜单键等
UIAutomator常用操作
按home键 UiDevice.getInstance().pressHome() 或getUIDevice().pressHome();
按‘a’键 UiDevice.getInstance.pressKeyCode(KeyEvent.KEYCODE_A)
按‘A’键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值