作用:使用Monkey来随机且重复的形式对正在开发的应用进行压力测试
一。指定事件测试
1.adb环境
2.编写脚本
3.将脚本push到待测的手机上
4.用adb 启动脚本
1.adb 环境
安装adb,将adb设置到windows系统变量环境中
2.编写脚本
常用命令
LaunchActivity(pkg_name, cl_name) //打开应用,第一个参数是包名,第二个是启动的activity名
DispatchPress(keyName) //按下物理按键,例如home键,back键;参数是按键值 ,按键值可查看keycode
Tap(x, y) //点击屏幕,参数是点击坐标
Drag(xStart, yStart, xEnd, yEnd) //滑动屏幕,坐标是从哪一点滑到哪一点
LongPress()// 长按2s
ProfileWait //等待5s
PressAndHold(x, y, pressDuration) //模拟长按
PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount) //模拟缩放
DispatchString(input) //输入字符串
RunCmd(cmd) //执行shell命令,比如截图 screencap -p /data/local/tmp/tmp.png
RotateScreen(rotationDegree, persist) //选择屏幕,第一个参数是旋转角度,第二个是旋转后是否停在当前位置
DispatchFlip(true/false) //打开或者关闭软键盘
UserWait(sleepTime) //睡眠指定时间
DeviceWakeUp() //唤醒屏幕
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags) //向指定位置发送单个手势
获取包名方式
1.adb shell pm list package -f #显示所有apk包名包括系统
2.adb shell dumpsys window w | findstr \/ | findstr name= #会显示正打开的程序
新建脚本文件,后缀名随便
脚本格式
# 控制 monkey 发送消息的 Monkey 头
type=user
count=10
speed=1.0
start data>>
# 下面进行编写 monkey 脚本命令
LaunchActivity(com.jjq.example, .MainActivity)
UserWait(2000)
DispatchPointer(........)
UserWait(2000)
3.将脚本 push 到设备上
adb push monkey脚本在电脑上的路径 待测试设备内存路径 //将文件推送到手机sd卡上
4.启动脚本
adb shell monkey -f <MonkeyScript> <EventCount> // 运行脚本 MonkeyScript脚本绝对路径 EventCount脚本执行的次数
例如
adb push d:\monkey.txt sdcard/monkey.txt 将文件推送到手机sd卡上
adb shell monkey -f sdcard/monkey.txt -v -v 1 执行脚本文件
5.压测
命令:adb shell monkey -p your.package.name -v -v -v 100
命令解释:
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。
100是事件计数(即让Monkey程序模拟100次随机用户事件)
-v -v -v 100 # 以深度为三级输出测试信息 一个两个-v也可以效果不同
命令:adb shell monkey -p com.android.email --throttle 500 -v -v -v 100 > D:/monkey_log.txt
命令解释:
adb shell : 是进入shell 也可和后面的语句分开写
-p : 参数是指定一个包或多个,两个再-p package
com.android.email : 是package name
throttle 500 : 响应时间,500毫秒
-v -v -v : 三级详细信息 也可一个两个-v详细程度不一样
100 : 执行的操作量
D:/monkey_log.txt :将结果日志存储到D盘下面取名为monkey_log.txt
6.分析日志
无响应问题搜索”ANR”
奔溃问题搜索”CRASH”
内存泄漏问题搜索”GC”,并进一步分析
异常问题搜索”Exception”,如出现NullpointerException,则出现空指针,需要重视
有这类的情况再进行具体分析
二.随机压力测试
adb shell monkey -p xxx.xxxx.xxx -s 123123 --throttle 300 -v -v -v 20 > d:\monkey.txt
指定了seed值,每个事件之间休息300ms,执行20个随机事件,然后将日志信息保存在了monkey.txt文件中
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。
xxx.xxxx.xxx 等待测试的应用包名
-s seed:作用是当发现bug时,修改代价吗后可以用同一个seed值进行测试,那么测试流程会一样
123123 seed值
--throttle 300 响应事件300ms
20 执行多少遍
-v -v -v # 以深度为三级输出测试信息 一个两个-v也可以效果不同