AndroidUI自动化测试的现状
- 移动应用改变着我们的生活
- Android手机数量全面超越iOS系统手机
- Android在多个智能领域逐步扩张
- Android应用的增加,带动测试行业的发展
- 手工黑盒测试入门简单,占据绝大部分市场
- Android应用测试从业者逐年增加
AndroidUI测试框架介绍
MonkeyRunner
编写语言:Python
运行环境:Python环境,adb链接PC运行
测试对象:UI测试
测试限制:主要是用坐标,逻辑判断较差
代码风格:
device=MonkeyRunner.waitForConnection()#链接手机设备
device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)#点击Home键
Instrumentation
编写语言:Java
运行环境:adb命令启动或者手机中直接启动测试
测试对象:单个Activity测试,需与测试应用相同的签名
测试限制:主要用于白盒测试和UI测试
代码风格:
mActivity.runOnUiThread(newRunnable(){
publicvoid run(){
mSpinner.requestFocus();
}
});
Robotium
编写环境:Java基于Instrumentation封装
运行环境:adb命令启动或者手机中直接启动测试
测试限制:单个Activity,需与测试应用相同的签名
代码风格:
solo.clickOnMenuItem(“Addnote”);
solo.goBack();
UiAutomator
谷歌在Android4.1推出UiAutomator测试框架,主要用于UI的自动化测试,功能:模拟各种动作,如点击,长按,滑动,案件等操作。
- 为什么使用UiAutomator?
- 优点:编写快速,运行简单,API简单易学,无Activity限制,无需签名,几乎可以模拟所有认为操作,编写灵活,使用方便,可快速学习,限制少,模拟目前90%以上的手工操作,扩展性好,调用Android很大部分API,基于以上,可快速转化为生产力,给企业带来效率
- 缺点:对权限控制不足,无法像Instrumentation高权限操作应用,很多AndroidAPI无法利用
实例演示:
工具:UIAutomator Viewer
需要libs存放依赖包android.jar和uiautomator.jar,依赖包位于sdk–>platform–>对应android下
新建测试类,继承com.android.uiautomator.testrunner.UiAutomatorTestCase
若测试条件含有中文,字符编码一定要是“UTF-8”
实现textXXX的方法
/**
* 测试打开浏览器,修改网址,访问
*/
public class Test extends UiAutomatorTestCase{
public void testDemo() throws UiObjectNotFoundException{
// 获取浏览器对象
UiObjectbrowserObject=new UiObject(new UiSelector().text(“浏览器”));
// 实现点击和等待新窗口出现
browserObject.clickAndWaitForNewWindow();
// 通过class类名定位网址输入框对象
UiObjecteditObject=new UiObject(newUISelector().className(“android.widget.EditText”));
// 执行点击
editObject.click();
// 删除输入框中的内容
UiDevice.getInstance().pressDelete();
// 修改文本内容
editObject.setText(“www.baidu.com”);
// 按下回车键
UiObject.getInstance().pressEnter();
sleep(2000);
}
}
终端命令行操作(已废弃)
android create uitest-project -n jar包名 -t第几个sdk-p 工作空间路径
# 将生成的build.xml文件中的default值help修改为build,编译
# 将编译生成的jar文件push入手机中
adb push 工作空间+\bin\+jar文件名/data/local/tmp/
# 启动测试
adb shell uiautomator runtest 文件.jar-c 完整类名