- 准备工作:
- 进入cmd进入命令界面,查看设备是否连接:adb devices -l,获得设备序列号:adb get-serialno
- 连接真机或模拟器:adb connect 127.0.0.1:62001
- 如果有多个模拟器或者Android设备同时连接上adb,那么可以通过命令来选择指定的目标设备。在执行adb命令时一般在命令前加入 –s <序列号>即可进入shell 命令模式:adb -s 序列号 shell
-
压力稳定性测试之前需进行需求分析
1.分析被测应用的app,通过命令去获取包名
2.根据app的属性去定11事件的具体百分比
3.防止运行时出现问题,指定一个复现的流水号: -s 流水号
4.防止突然事件:–ignore-crashes:忽略崩溃 --ignore-timeouts:忽略超时
5.记录日志,分成正确日志和错误日志:Monkey [option] 1>d:\monkey.txt 2>d:\error.txt
Monkey 的运行日志和异常日志将被分开保存。此时 Monkey 的运行日志将被保存在 monkey.txt 文件中,而异常日志将被保存在 error.txt 中
如果 Monkey 执行期间存在 Crash (崩溃)或 ANR ( Application Not Responding ,应用程序无响应), error.txt 中会显示错误日志 -
具体执行命令:
adb shell monkey -p com.eccalc.ichat --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 -s 1777 --throttle 3000 --ignore-crashes --ignore-timeouts -v -v 200 >d:\log.txt -
日志分析
Monkey 运行时输出的日志一般包含四类信息,分别是测试命令信息、伪随机事件流信息、异常信息、 Monkey 执行结果信息。
日志内容分析:
一般测试结果分析-搜索关键字:
1.程序无响应,ANR问题:在日志中搜索“ANR”
2.崩溃很闪退问题:在日志中搜索“CRASH”
3.其他问题:在日志中搜索”Exception”
重现问题:
Monkey测试出现错误后,一般的查错步骤为以下几步:
1.找到是monkey里面的哪个地方出错;
2.查看Monkey里面出错前的一些事件动作,并手动执行该动作;
3.若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样; -
使用bat脚本进行统计出现的错误次数
@echo off&setlocal enabledelayedexpansion
: 设置所有Monkey 日志存放的目录
set ff=C:\Users\admin\Desktop\log\*.txt
: 设置查询关键字
set str=CRASH crash ANR died Exception exception
: 设置查询结果存放的目录
set fileName=Result.txt
: 开始查询
echo 正在统计&echo;
echo %date% %time% >%fileName%
echo.>>%fileName%
echo 分析结果:>>%fileName%
echo ---------------------------------------------->>%fileName%
: 依次打开目录下每一个Monkey 日志查询关键字并输出个数
(for %%a in (%str%)do (
set n%%a=0&set/p= %%a : <nul>con
for /f "delims=" %%b in ('findstr "%%a" "%ff%"')do (
set h=%%b
call :yky %%a)
echo !n%%a!>con
echo 关键字 %%a 共有 !n%%a! 处
))>>%fileName%
echo.>>%fileName%
: 针对崩溃的日志输出其所在文件行数
echo 崩溃日志:>>%fileName%
findstr "%str%" "%ff%">>%fileName%
echo/&pause&exit
:yky
set/a n%1+=1
set h=!h:*%1=!
if defined h if not "!h:*%1=!"=="!h!" goto :yky
- monkey测试中,如何终止运行
方法一:
a.新建一个窗口
b.执行: adb shell ,
c.再执行ps | grep monkey,返回来的第一个数字,即是 monkey 的进程号
d.然后 kill pid 进程号
方法二:
a.新建一个窗口
b.执行 adb reboot
adb shell monkey常用命令:
monkey常用命令讲解:
标准的monkey 命令 [adb shell] monkey [options]
启动步骤
连接移动设备 – 连接成功后输入命令 – adb shell – 进入指定目录cd /system/bin – 输入 monkey命令
命令:
- adb shell moneky -help 打印输出monkey的使用方法
- adb shell monkey 100 (对模拟器进行随机事件)
- adb shell monkey -v 100 ( -v 打印日志)
- adb shell monkey -s 666 100 (-s 伪随机数种子值 后跟指定数字)对随机事件编码,可以再次复习这才随机。
- adb shell monkey -f /mnt/sdcard/test1 执行指定脚本
- adb shell monkey --throttle 3000 5 (–throttle 设置每次随机事件的时间间隔(单位:毫秒) )设置间隔 每一个指定之间加上事件间隔
- –throttle time --randomize-throttle 设置随机时间的时间间隔区间
例:adb shell monkey 100 --throttle 500 --randomize-throttle
说明:执行一百次monkey随机事件,每次事件的间隔在0到500毫秒之间不固定 - adb shell monkey -v-v --pct-touch 100 200 调整触摸事件百分比
- –ignore-crashes 运行中忽略crash,遇到crash依然把后面的事件跑完
例:adb shell monkey --ignore-crashes -v 100 - –ignore-timeouts 运行中忽略ANR,遇到ANR依然把后面的事件跑完
例:adb shell monkey --ignore-timeouts -v 100 - –ignore-native-crashes 忽略monkey本身的异常,直到事件执行完毕
例:adb shell monkey --ignore-native-crashes -v 100 - 设置事件百分比,所有的百分比加起来不能超过100%
0:触摸事件百分比,即参数- -pct-touch
1:滑动事件百分比,即参数- -pct-motion
2:缩放事件百分比,即参数- -pct-pinchzoom
3:轨迹球事件百分比,即参数- -pct-trackball
4:屏幕旋转事件百分比,即参数- -pct-rotation
5:基本导航事件百分比,即参数- -pct-nav
6:主要导航事件百分比,即参数- -pct-majornav
7:系统事件百分比,即参数- -pct-syskeys
8:Activity启动事件百分比,即参数- -pct-appswitch
9:键盘翻转事件百分比,即参数- -pct-flip
10:其他事件百分比,即参数- -pct-anyevent
例:adb shell monkey --pct-touch 20 -v 100 - -p 指定被测应用的包名
例:adb shell monkey -p com.UCMobile.x86 100
如果想要指定多个包名,每一个包名要跟一个-p
例:adb shell monkey -p packageName1 -p packageName2 100