自动化测试之 UI Automator 入门指南
自动化测试的定义,这里先引用一段维基百科的定义:
在软件测试中,测试自动化(英语:Test automation)是一种测试方法,使用特定的软件,去控制测试流程,并比较实际的结果与预期结果之间的差异。通过将测试自动化,可以让正式的测试过程中的必要测试,可以反复进行;通过这种方法,也可以将难以手动进行的测试,交由软件来做。这种测试方法,是持续交付流程中的必要组成。
用我自己的话说就是,自动化测试的价值在于将重复性的测试工作通过代码和工具组织成一套可多次使用的测试流程,按下回车键或者点击开始按钮即可泡杯咖啡喝杯茶静待其完成整个测试任务。
自动化测试的工具和框架有很多,近些年比较知名的有 Appium、UI Automator 等等。今天我先介绍下 UI Automator 的入门知识。
UI Automator 是一个跨应用(系统应用和第三方应用)的 UI 自动化测试框架,由谷歌官方维护,适用于安卓系统。注意啦~这个框架目前只支持 Android4.3(API level 18) 及以上的安卓系统。
UI Automator 测试框架提供了一系列的 API,这些 API 可以用来编写基于系统应用和第三方应用的自动化测试用例,例如打开系统设置页面或者启动被测应用。UI Automator 测试框架非常适合编写黑盒自动化测试,测试代码不依赖于被测应用的内部执行细节。
UI Automator 测试框架包含以下三个主要功能:
- UI Automator Viewer: 界面解析工具,用以获取应用的界面元素。
- Accessing device state: 一个 API(应用程序编程接口),用以获取测试机的状态信息并执行部分操作。
- UI Automator APIs: 一组 API,支持跨应用的用户界面测试。
下面详细说明此三功能:
UI Automator Viewer
uiautomatorviewer 是安卓 sdk
自带的一个工具(位于'<android-sdk>/tools/bin'目录下),可以用来扫描和分析安卓设备上当前显示的应用页面,输出的结果包含页面中各
UI 组件的布局层级和各项属性。利用这些信息可以编写出更加细致的自动化测试用例。
Accessing device state
UiDevice 是一个类,可以用来和测试设备上的被测应用进行交互。你可以调用它的方法获取到设备信息,诸如当前屏幕旋转角度或者显示屏大小。此外,它还能执行其他操作,例如:
- 改变设备旋转角度
- 按下硬件按钮,例如"音量加"
- 按下 back、home、menu 键
- 打开通知栏
- 截图
例如,模拟按下 home 键的操作:
UiDevice.pressHome()
UI Automator APIs
一组 API,通过它们,无需了解被测应用的具体实现细节,即可编写出健壮的自动化测试用例。你可以使用这些 API 去捕获和操纵跨应用的 UI 组件:
- UiCollection: 用以获取容器内的用户界面元素个数,或者通过可见的 "text" 和 "content-description" 属性定位子元素。
- UiObject: 表示设备上一个可见的用户界面元素。
- UiScrollable: 在可滚动的列表中寻找某个项目时会用到。
- UiSelector: 查询设备中一个或多个 UI 元素。
- Configurator: 允许你为运行中的测试用例设置关键参数。
例如,以下代码展示了如何编写一个测试脚本用于显示设备上默认应用的 Launcher:
device = UiDevice.getInstance(getInstrumentation
device.pressHome();
// Bring up the default launcher by searching for a UI component
// that matches the content description for the launcher button.
UiObject allAppsButton = device.findObject(new UiSelector().description("Apps"));
// Perform a click on the button to load the launcher.
allAppsButton.clickAndWaitForNewWindow();
自动化测试要做的以下三件事情:
- 动作执行
- 结果判断
- 报告展示
参考资料:
https://developer.android.com/training/testing/ui-automator