monkey-安卓稳定性测试
一、adb执行命令
1.monkey随机事件指令:
adb shell monkey -p com.tytu.enter --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v -v -v --throttle 300 -s 121212 --pct-syskeys 0 --pct-anyevent 0 --pct-touch 100 --pct-motion 0 100000 2>D:\ty\mk\log.txt\monkeyerror.txt 1>D:\ty\mk\log.txt\monkeyinfo.txt
命令 | 解释说明 |
---|---|
-p com.tytu.enter | 包名 |
–ignore-crashes | 忽略崩溃 |
–ignore-timeouts | 忽略超时 |
–ignore-security-exceptions | 忽略安全异常 |
-v -v -v | 详细日志 |
–throttle 100 | 等待的时间100毫秒 |
-s 121212 | 种子方便复现bug,建议每个版本不一样(也可以不带上,执行后去monkeyinfo.txt文件中查找种子,再次复现bug的时候再带上种子) |
–pct-syskeys 0 --pct-anyevent 0 | 防止按音量键 |
–pct-touch 30 | 点击事件占比30% |
–pct-motion 70 | 移动事件占比70% |
10000 | 点击次数10000次 |
2>D:\ty\mk\monkeyerror.txt | 将错误(闪退/anr等)输出重定向到,文件地址要存在否则会报文件路径不存在 |
1>D:\ty\mk\monkeyinfo.txt | 将标准比如滑动点击等事件输出重定向到,文件地址要存在否则会报文件路径不存在 |
2.获取某个包的日志命令1:
adb logcat -v time -d | findstr /i “com.tytu.enter” > “D:\ty\mk\log.txt”
命令 | 解释说明 |
---|---|
-v time | 这个选项会在日志中包含时间戳 |
-d | 这个选项会让 logcat 在输出当前的日志缓冲区后退出,而不是持续输出 |
findstr /i “com.tytu.enter” | 这是 Windows 系统中的命令,用于过滤包含包名的日志行。/i 参数表示忽略大小写 |
> “D:\ty\mk\log.txt” | 这部分将输出重定向到指定的文件路径 |
获取某个包的日志命令2:
adb logcat -v time -d | findstr /i “com.tytu.enter” | findstr /r /c:“^.* 16:[0-5][0-9]:[0-5][0-9]…" /c:"^. 17:[0-5][0-9]:[0-5][0-9]…*” > “D:\ty\mk\log.txt”
命令 | 解释说明 |
---|---|
findstr /r /c:“^.* 16:[0-5][0-9]:[0-5][0-9]…" /c:"^. 17:[0-5][0-9]:[0-5][0-9]…*” | 只导出16和17点的时间的日志 |
3.以上执行后会有这3个文件
log.txt | 在手机里面的log文件夹(data/log目录下)里面导出的,包含各种响应信息。V D I W E F S 分别都有不同的涵义 |
monkeyerror.txt | 闪退等信息 |
monkeyinfo.txt | monkey测试时的具体操作,如点击/滑动等操作事件的详细信息 |
二、日志分析
monkeyerror.txt文件进行如下搜索,如果能搜到以下几个关键词,可以基本判断测试不通过:
ANR问题(程序无响应) | 搜索“ANR"(application no response) |
闪退问题 | 搜索"crash" |
异常 | 搜索exception |
强制退出 | 搜索"force closed |
把文件直接发给开发,下面的日志可以定位到具体的崩溃的原因
log.txt文件解释:
V (Verbose) | 详细信息,通常用于调试。这是最低优先级的日志消息,可以包含大量的详细信息 |
D (Debug): 调试信息 | 比 verbose 优先级高,通常用于调试程序时的信息输出 |
I (Info) | 信息消息,表明一般的、有用的信息,比如应用启动、停止等 |
W (Warning) | 警告消息,表明潜在的问题,比如未处理的异常、资源使用不当等 |
E (Error) | 错误消息,表明更严重的问题,比如应用崩溃、系统错误等 |
F (Fatal) | 致命错误,表明非常严重的问题,可能导致系统或应用完全停止运行 |
S (Silent) | 静默消息,表明该消息不应该被输出到日志中 |
把文件直接发给开发
不知道如何定位的可以直接把以上三份文件log.txt、monkeyerror.txt、monkeyinfo.txt,全部给到开发
三、adb命令停止了,手机还在执行
adb shell ps |find “monkey”
adb shell kill 进程ID
四、解决monkey乱点击的问题+回到要测试的活动页
五、报错解决
开发没有针对活动名称开放权限,可以用启动页activity来启动app:
adb shell am start -n com.tytu.enter/com.ly.home.ui.activity.LaunchActivity