关于手机自动化测试的认知。

来源:互联网 发布:mac virtualbox win7 编辑:程序博客网 时间:2024/05/16 03:05

自动化测试同手工测试一样,都需要有一个计划,测试的覆盖率,评估自动化测试工具是否能带来收益来确定测试的内容,其实,并不是所有项目都适合自动化测试工具的,如果项目周期短,是不适宜做自动化测试的,自动化测试虽然在运行中比较省时间,但是在前期的设计,脚本的编写和维护都会浪费较多的时间,如果自动化测试脚本不能重复利用多次,自动化对于我们只是一种时间的浪费,只会令整个项目延期。

目前,Android基于UI层面的自动化测试工具,都可以理解为是基于Android控件层面的,涉及WidgetsWebView两大类。其主流的测试方法主要有以下几种。一种是通过Android提供的各种服务,来获取当前窗口的视图信息。然后,在当前视图内查找目标控件,并根据该控件属性信息计算出该控件中心点的坐标,进而构造出一个AndroidInput事件来实现对应用的自动化测试。其主要特点是:测试代码和被测应用各自运行在各自的进程内,相互独立。其代表有Uiautomator。另一种则是基于Instrumentation,通过把测试代码和应用代码,确切地说是测试APK和被测APK,运行在同一个进程中,通过Java反射机制,来获取当前窗口所有视图,并根据该视图查找到目标控件的属性信息,并计算出目标控件中心点坐标。然后,利用Instrument内部接口,实现点击操作。其代表有Robotium

Robotium

官方地址:http://code.google.com/p/robotium/
优点:

-提供的API相应的还是比较丰富的
-网上相关资料稍微会多一些

缺点:

-测试程序也需要生产APK文件,安装到模拟器或者设备上,所以如果被测程序和测试程序签名不一样是测试不了的,这就需要测试之前我们去修改被测程序的签名。不过按照计划,后续的版本会提供类似于seleniumRC模式的,到时候可能会解决这个问题,但是还不知道什么时候发布。
-不支持跨平台
-API中很多使用控件的位置(index索引)来查找,这样子对以后用例的维护会有些不方便。同时API中有按照id来查找的使用的确是R.java自动生成的文件中的id,但是通过工具只能识别到资源控件id,这个还需要自己通过资源控件id去查找一下才行

-针对某个apk的独立测试

学习地址:http://www.robotium.cn/

Uiautomator

uiautomator是Android的一个(基于UI)功能测试框架,是google开发的,在API level >=16的SDK上才可以使用。

优点:

-可以对所有操作进行自动化,操作简单;

-Google官方支持 ,Google自研,确保后续版本会有更新,有更多的权限

-明晰API,提供最灵活精确的控制。

-无需源代码

-可在不同App间调度,这是robotium做不到了

-可用于不同解析度的装置显示器

-可利用 Android UI 控制功能连结事件。例如按下显示「OK」文字的按钮,而不是按下坐标位置 (x=450,y=550)。

-可重新产生使用者行动的复杂顺序

-永远执行相同顺序的行动,让我们能在不同装置收集效能标准。

-可于不同装置多次执行,不必变更任何 Java* 程式码

-可使用装置的硬体按钮

缺点:

-需要基于Android 4.1以上版本,不适合用于自动化适配测试

-不支持WebView。对于有许多WebView页面的apk,请谨慎选择

-UI需要一定的条件才能被识别,无法根据控件ID操作,相对来说功能较为局限,但也够用了

-基于Junit 3, 相对于Junit4, Testng等测试框架,Junit 3不具备许多功能

-集成第3方jar不方便,因为整个编译运行,都集成在AndroidSDK里了,需要自定义build脚本

-调试不易(如图所示,控制台中所报错误涉及中文时,不易于鉴别具体对应的错误项),没有和Eclipse ADT集成,只支持远程调试(不知道AndroidStudio集成了不?相信后续版本会集成的)

-难以搭配使用 OpenGL* 及 HTML5 应用程式,因为这些应用程式没有 Android UI 元件。

-在测试工程中,取不到Android应用的Context,意味着许多Android的特性就不能在测试工程是取得并使用(不知道Google不为什么不加入这个特性,谁可以解答下?)

-编写 JavaScript 需要耗费许多时间

Uiautomator测试框架的流程

1、安装App到设备上,分析app的UI部件。
2、建立自动化测试以模拟用户操作。
3、编译测试用例为一个jar包,安装到已安装了待测试程序的设备上。
4、运行测试,并检查结果。
5、修正在测试中发现的Bug等问题。

为了分析 UI 界面,我們将使用 uiautomatorviewer。

uiautomatorviewer 会在节点详细资料 (Node Detail) 显示所有 UI 元件的分割荧幕截图,让您检阅不同属性。您可由属性找到所需元件。

学习地址: http://developer.android.com/tools/help/uiautomator/index.html

Monkey

Monkey是Android中的一个命令行工具,它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

Monkeyrunner

monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过 monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。


 

Hierachyview+Monkey

UiAutomator + Monkey

Robotium

权限

root

普通

普通

是否需要签名

响应速度

10s(网友测试数据)

4s(网友测试数据)

1-2s

是否支持WebView

是否支持跨应用测试

支持该特性的Android API

?

API 16

API 7

是否支持控件ID

从上述数据来看,Android提供的测试工具各有优缺点,有的支持WebView测试,有的不支持。有的支持跨应用,有的不支持。因此,一个好的Android测试工具,更多地是兼容了上述几种测试方法。


0 1
原创粉丝点击