今天我进行了安卓测试工具Monkey的学习。
Monkey的特性包括:(1)测试的对象仅为应用程序包(apk包),有一定的局限性;(2)Monkey测试使用的事件流数据流是随机的,不能进行自定义;(3)可对Monkey测试的对象、事件数量、类型、频率等进行设置。
Monkey是一个命令行工具,包含大量的操作,可以分为四类:(1)基本的配置操作,例如设置测试的事件数;(2)操作约束,例如限制在一个单一的包中测试;(3)事件类型和频率;(4)调试操作。
当Monkey运行时会生成事件序列并发送给系统,它也会观察测试中的系统并寻找三种特殊对待的条件:(1)如果用户约束Monkey在一个或多个特定的包中运行,它会观察浏览到其它包中的尝试操作,并阻止这些操作;(2)如果应用程序崩溃或收到任何种类无法处理的异常,Monkey将会停止运行并报告错误;(3)如果应用程序产生了一个无法响应的错误,Monkey将会停止运行并报告错误。
Monkey是Android平台自带的一个工具,因此在安装了Android SDK的机器上直接用命令启动即可。
执行Monkey的基本命令是:
$ adb shell [options]
将待测apk文件复制到Android SDK对应platform-tools目录下,如图3-1:
图 3-1 Monkey测试的应用程序的位置
用数据线将Android设备与电脑连接,检测Android设备是否成功连接的命令为adb devices,连接成功如图3-2;执行命令将应用程序安装至Android设备,如图3-2。
图 3-2 检测移动设备(手机)与电脑是否连接成功
执行命令:
$ adb shell monkey -p com.smorgasbork.hotdeath -v 1000 --throttle 2000 -s 798
对HotDeath进行测试,结果如图 3-3、图 3-4。从图 3-3可以看出Monkey生成事 件的11种类型及所占总事件数的百分比,如序号0表示触摸事件,1表示动作事件, 2表示轨迹事件,3表示导航事件,4表示“主要”导航事件,5表示系统按键事件 等。图 3-4中可以看出运行中Monkey生成的事件操作。
图 3-3 Monkey生成事件的类别
图 3-4 Monkey测试过程中生成的事件操作
该资料参考于:Android应用测试工具的覆盖率分析与比较——黄晓伟