Monkey简介
Monkey程序是Android系统自带,使用Java语言写成,在Android文件系统中的存放路径:/system/firmework/monkey;
monkey可以运行在模拟器或实际设备中,它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入和手势输入等)实现对正在开发的应用程序进行压力测试。monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径:/system/bin/monkey
这样就可以通过在CMD窗口中执行:adb shell monkey {+命令参数}来进行Monkey测试了。
1.monkey运行
假设终端设备已安装apk(驱动测试.apk),USB线连接PC和终端,打开命令输入:
adb shell
cd /system/bin
monkey
此时monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包.
adb shell monkey 1000 发送1000个随机时间(全部包)
若只希望运行驱动测试.apk
(1).获取应用的包名(网上)
参考:http://www.th7.cn/system/lin/201611/189532.shtml
先打开需要的apk,然后再打开终端,输入以下命令获取这个apk的包名,得到 com.cloudpos.drivertest
adb shell dumpsys activity
(2).运行驱动测试应用
adb shell monkey -p com.cloudpos.drivertest 1000
书中查看包名和应用名(例,驱动测试应用)
1)查看包名(最好终端处在engroot版本)
$ adb shell
# ls data/data
查看到应用包名为:com.cloudpos.drivertest
2)查看应用[主界面]名
$ adb logcat | busybox grep START
从cmp=com.android.packageinstaller/.PackageInstallerActivity 可以看出应用主界面名为PackageInstallerActivity
由此我们知道如何启动该应用:
LaunchActivity(com.cloudpos.drivertest,com.android.packageinstaller.PackageInstallerActivity)
还有一种查看包名的方式:
Eclipse--DDMS,点击应用,在logcat中Application可以查看包名
另:
$adb shell monkey 【option】<event-count>
monkey的option操作都是根据具体的需求设定的,主要有4种,
常规类:-p(帮助信息),-v(打印日志信息,最多3个)
事件类:-f(后接测试脚本名),-s(指定随机数生成器seed值,重复上次的随机操作),
--throttle(后接时间,表示执行每一个指令间隔的时间,单位ms)
--ptc-touch(调整触摸事件的百分比)
--ptc-motion(调整动作事件的百分比)
--ptc-trackball(轨迹球事件百分比
--ptc-nav(后面为基本导航事件百分比,基本导航事件指来自方向输入设备的上、下、左、右事件)
--ptc-majornav(主要导航事件百分比)
约束类:
调试类:
做个Monkey小程序的例子,(步骤包括:打开应用,选中输入框,输入内容,点击提交)
1.查看应用包名和应用名
2.查看控件的坐标
在命令行中输入:adb shell getevent
点击应用中需要知道坐标的控件,例如在命令窗口中查找第三列中为0035(x坐标),0036(y坐标)的行,如下
分别将1a6、27a转换10进制,得到对应的x坐标,y坐标
3.写代码,并保存为monkeySouceScript
完成的代码如下:
# Start Script
type = user
count =10
speed =1.0
start data >>
#打开应用
LaunchActivity(com.wizarpos.psamcommendtest,com.wizarpos.psamcommendtest.MainActivity)
UserWait(5000)
#点击文本框
captureDispatchPointer(10,10,0,165,291,1,1,-1,1,1,0,0)
captureDispatchPointer(10,10,1,165,291,1,1,-1,1,1,0,0)
#输入123
captureDispatchString(123)
#发送Enter键使输入内容从软件盘到输入框中
captureDispathcPress(66)
#等待500ms
UserWait(500)
点击提交
captureDispatchPointer(10,10,0,133,405,1,1,-1,1,1,0,0)
captureDispatchPointer(10,10,1,133,405,1,1,-1,1,1,0,0)
4.运行
push到设备手机中
adb push monkeySouceScript /mnt/sdcard/
运行:
adb shell monkey -v -f /mnt/sdcard/monkeySouceScript 10