软件测试修炼之路 A Tester

Android自动化测试及其框架简介

2016-04-16
Dex

Android各种UI测试框架介绍

MonkeyRunner

  1. 编写语言: Python
  2. 运行环境: Python环境,adb连接PC运行
  3. 测试对象: UI测试
  4. 测试限制: 主要使用坐标,逻辑判断较差

Instrumentation

  1. 编写语言: Java
  2. 运行环境: adb命令启动或者手机中直接启动测试
  3. 测试对象: 单个Activity测试,需与测试应用相同的签名
  4. 测试限制: 主要用于白盒测试和UI测试

Robotium

  1. 编写语言: Java 基于Instrumentation
  2. 运行环境: 与Instrumentation相同
  3. 测试对象: 与Instrumentation相同

MonkeyRunner代码风格示例

device = MonkeyRunner.waitForConnection() #连接手机设备
device.press('KEYCODE_HOME', MonkeyDevice.DOWN_AND_UP) #点击HOME键

Instrumentation代码风格示例

mActivity.runOnUiThread(new Runnable(){
	public void run(){
		mSpinner.requestFocus();
	}
});

Robotium代码风格示例

solo.clickOnMenuItem("Add note");
solo.goBack();

UiAutomator诞生

谷歌在Android4.1推出UiAutomator测试框架

UiAutomator作用

1.主要用于UI自动化测试

2.功能:模拟人对手机操作,模拟各种动作如点击,长按,滑动,按键等操作

3.优点:

  • 编写快速
  • 运行简单
  • API简单易学
  • 无Activity限制
  • 无需签名
  • 几乎可以模拟所有的人为操作

4.缺点:

对权限控制不足 无法像Instrumentation一样高权限操作应用 很多Android API无法利用

为什么选择UiAutomator?

  • 编写灵活,使用方便
  • 可快速学习
  • 限制少
  • 模拟目前90%以上的手工操作
  • 可扩展性好
  • 可调用Android很大部分API

基于以上,可快速转化为生产力,给企业带来效率

一个简单的实例

UiAutomator需要的jar包:在sdk目录下,android.jar和uiautomator.jar

需要将两个jar包加入到Build Path。

新建类后,需要继承UiAutomatorTestCase类

实现打开浏览器,打开百度首页的代码:

package com.jikexueyuan;

import com.android.uiautomator.core.UiDevice;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;

public class Test extends UiAutomatorTestCase {
	
	public void testDemo() throws UiObjectNotFoundException{
		UiDevice.getInstance().pressHome();
		UiObject browser=new UiObject(new UiSelector().text("浏览器"));
		browser.clickAndWaitForNewWindow();
		UiObject edit=new UiObject(new UiSelector().className("android.widget.EditText"));
		edit.click();
		UiDevice.getInstance().pressDelete();
		edit.setText("www.baidu.com");
		UiDevice.getInstance().pressEnter();
		
		
	}

}

需要在项目所在目录中进行编译,编译命令为

android create uitest-project -n demo -t 1 -p K:\UIworkspace\Demo1

会在当前目录出现Added file K:\UIworkspace\Demo1\build.xml文件。

在build.xml文件中,将help改为build.

运行整个程序;

将生成的demo.jar文件push到手机的”/data/local/tmp/”目录中;

执行 adb shell uiautomator runtest demo.jar -c com.jikexueyuan.Test


Comments