apk测试工具调研

最近 boss让作关于apk测试工具的调查,最后整理出以下,如今网络上的资料并非不少,本身一步步通过查找测试到完成领导的预约任务到提交报告。 html

由于是份报告因此有些地方并非很具体,能够参考给出网址。 python

若是有什么不足还请告知及时补充。 android

 

apk测试工具调查 shell

简介 浏览器

android SDK里自带的测试工具monkey 和 monkeyrunner 网络

1. mokey session

Monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流,主要应用在压力和可靠性测试上,运行该命令能够随机地向目标程序发送各类模拟键盘事件流,而且能够本身定义发送的次数,以此观察被测应用程序的稳定性和可靠性 app

2. monkeyrunner electron

monkeyrunner工具则是在工做站上经过API定义的特定命令和事件控制设备或模拟器,主要可应用于功能测试,回归测试,而且能够自定义测试扩展,灵活性较强,而且测试人员能够彻底控制。 ide

目前的缺陷

•不支持中文字符的输入(只能输入ASC码中存在的字符)

•基于UI操做,一旦遇到复杂的应用,测试代码的复杂度指数增加;测试设备性能不一样,须要根据设备的快慢对操做加时延;脚本的运行速度慢

•没法将测试结果抓取出来,只能采用截图比较。没法准确统计测试数据。

•drag方法只能实现简单的滑动屏幕的操做,不能进行复杂的拖拽。微博客户端的下拉刷新操做没法模拟出来。

下面主要说明monkeyrunner的使用

monkeyrunner的使用

考网站

http://www.51testing.com/html/59/n-242759.html

http://blog.csdn.net/zm2714/article/details/7980634

http://www.cnblogs.com/youxilua/archive/2011/11/12/2246576.html

运行monkeyrunner以前必须先运行相应的模拟器,否则monkeyrunner没法链接设备。

虚拟机

1.        打开cmd  执行emulator -avd 4.0(4.0为设备名称)命令,启动虚拟机。

2.        执行 monkeyrunner命令。

3.        进入shell命令交互模式后,首要一件事就是导入monkeyrunner所要使用的模块。直接在shell命令下输入:from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice 回车。

 截止到这步完成,咱们就能够利用monkeyrunner进行测试工做了。这里有两种方案,一是直接在shell命令下输入如下命令,另外一种是将如下命令写到python文件里(要懂点python脚本)。

命令说明

 这里摘录部分关键命令 详情请参考上述网站或下面的官方网站

  http://developer.android.com/reference/android/view/KeyEvent.html

device=MonkeyRunner.waitForConnection() #链接手机设备

#安装apk包到手机设备。

device.installPackage("C:/WINDOWS/ElectronicMenu/bin/ElectronicMenu.apk") 

#启动其中的任意activity了,只要传入package和activity名称便可

device.startActivity(component="com.sarnath.electronicmenu/com.sarnath.electronicmenu.MainActivity") #打开这个应用程序的某个Activity。

device.reboot() #手机设备重启

按下HOME键 device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)

按下BACK键 device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)

按下下导航键

device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP) 

  按下上导航键

  device.press('KEYCODE_DPAD_UP',MonkeyDevice.DOWN_AND_UP) 

按下OK键

device.press('KEYCODE_DPAD_CENTER',MonkeyDevice.DOWN_AND_UP)

  在指定位置发送触摸事件(x,y的单位为像素)

  device.touch(x,y,TouchPressType-触摸事件类型)

python脚本

  就是把系列指令写在x.py 文件里,运行cmd 执行如: monkeyrunner D:\test.py

 指令,D:\ 是存放 x.py文件的路径。test.py放在d 盘的根目录下。

 Text.py文件

   from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice

device=MonkeyRunner.waitForConnection()

device.startActivity(component="com.beer.dialogdemo/com.beer.dialogdemo.MainActivity")

device.touch(132,271,MonkeyDevice.DOWN_AND_UP)

过程执行了开启项目到点击按钮事件的整个过程。

手机设备

 连接设备后直接执行shell命令

Monkeyrunner

 后边的步骤同上。

shell操做的截图以下

Hierarchy Viewer 工具使用简介

此device.touch(x,y,TouchPressType-触摸事件类型)的触摸事件的坐标获取工具

此方法使用时要开启hierarchyviewer工具获取对应的坐标,开启方法 另起cmd 定义到sdk的tools目录 执行shell命令hierarchyviewer.bat。

详情请参照:http://tech.it168.com/a2011/0802/1226/000001226690.shtml

使用截图

总体效果图以下

                         

总结

1.monkeyrunner提供的操做有限,适合处理反复点击等小范围的操做,用来测试一个点是比较好的。能够作软件跑分、浏览器跑分等 稳定性测试,或是用来安装JUnit写好的测试app。

2.monkeyrunner不适合处理连续的操做。一旦进入到应用层,由于drag方法的不稳定,跳转就须要用点击按钮来代替,这样没法模拟用户真实的操做。 用工具来定位坐标、查找各个按钮的id,消耗时间。一旦UI改变,脚本可能就没法使用

3.monkeyrunner或者其余基于UI的脚本测试,对所测试系统的稳定性要求比较高。若是系统或者软件很是容易奔溃,就会终端测试脚本,没法自动化。

4.基于UI的自动化测试,测试结果经过截图判断,没法脱离人工干预。

5.综上,基于UI的自动化测试事倍功半,是一条不归路。建议根据Android自己的特色,合理划分软件层次。测试部门用JUnit来测试API,完成逻辑测试;用人工来完成场景测试。

我的意见

综合上述观点,monkeyrunner 符合此次调研的要求,但就目前的版原本说并不适用于平时的测试工做。

附:两款云端测试工具

Testin云测试

优势:测试点更精细跟准确。

http://www.testin.cn/portal.action;jsessionid=FCC8344620201F91DF42D092AD7142F2?op=Portal.index

测试分为 兼容测试、性能测试、功能测试三大部分。

这是以 点菜宝为例上传测试后的结果概要截图

百度云众测

优势:提供APP评测、用户体验反馈、问卷调查等

http://developer.baidu.com/yunzhongce

就云测试来讲,两款云端测试工具 我更倾向于前者,也就是Testin云测试,测试更具象化。

然后者 更亲向于 用户体验与反馈。

                                                                                            ---刘利涛

                                                                                        2013-4-26日

相关文章
相关标签/搜索