Android 稳定性测试工具 Monkey(4) - 分析测试结果

通过一系列参数和事件的了解,我们也看到了用 monkey 进行稳定性测试其实很简单。但是经过 monkey 测试后,要如何去分析测试的结果呢?怎么才知道应用是否稳定?
要获取 monkey 的执行结果,最好的方式是分析 monkey 执行过程中产生的日志。

获取 monkey 日志

要获取 monkey 日志的话,通过重定向命令即可。
示例:

adb shell monkey -p com.huomaotv.mobile --pct-appswitch 20 
--pct-rotation 20 --pct-touch 30 --pct-motion 20 
--ignore-crashes --ignore-timeouts --monitor-native-crashes 10000 > d:/monkey.log

在命令的最后,加上>重定向到本地文件。d:/monkey.log放在 d 盘的根目录。

分析日志

那么对于 monkey 跑完之后,我们要如何去确认有没有出现 bug 呢?

最直观简单的方式就是通过搜索以下关键字:

  • 程序无响应的情况:搜索关键字ANR in
  • 崩溃的情况1:搜索关键字CRASH
  • 崩溃的情况2:搜索关键字Exception

如下,为一个 Crash 的例子:

procrank:

// CRASH: com.huomaotv.mobile (pid 3071)
// Short Msg: Native crash
// Long Msg: Native crash: Aborted
// Build Label: Android/vbox86p/vbox86p:6.0/MRA58K/91:userdebug/test-keys
// Build Changelist: 91
// Build Time: 1526948635000

// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
// Build fingerprint: 'Android/vbox86p/vbox86p:6.0/MRA58K/91:userdebug/test-keys'
// Revision: '0'
// ABI: 'x86'
// pid: 3071, tid: 3193, name: RenderThread  >>> com.huomaotv.mobile <<<
// signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
// Abort message: 'Encountered EGL error 12291 EGL_BAD_ALLOC during rendering'
//     eax 00000000  ebx 00000bff  ecx 00000c79  edx 00000006
//     esi dbb3f980  edi 00000004
//     xcs 00000023  xds 0000002b  xes 0000002b  xfs 00000107  xss 0000002b
//     eip f73196c6  ebp 00000c79  esp dbb3f150  flags 00200206

// backtrace:

//     #00 pc 000836c6  /system/lib/libc.so (tgkill+22)
//     #01 pc 00081728  /system/lib/libc.so (pthread_kill+70)
//     #02 pc 00027255  /system/lib/libc.so (raise+36)
//     #03 pc 00020a34  /system/lib/libc.so (abort+80)
//     #04 pc 0000cbd3  /system/lib/libcutils.so (__android_log_assert+128)
//     #05 pc 00023759  /sys
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
测试准备: Monkey压力测试时除了添加测试APP,还可另外添加2-3个第三方app进行对比测试。 1.在D盘新建一个txt文件,添加APP包名,命名为whitelist.txt 2.用cmd命令把whitelist.txt文件push到手机 adb push d:\whitelist.txt /data/local/tmp/ 3.压力测试指令monkey -p 包名 [参数] -v (-v -v) 执行次数 >导出log文件 l 对白名单包进行测试 l monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt --throttle 500 -s 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000 1> /mnt/sdcard/monkey_test.txt 2>&1 & 黑名单:不测试的应用 白名单:只测试这部分应用 注意:不能同时设置黑名单和白名单 设置黑名单: --pkg-blacklist-file PACKAGE_BLACKLIST_FILE 设置白名单: --pkg-whitelist-file PACKAGE_WHITELIST_FILE l 对单独的APP进行测试 l monkey-p com.hst.che --throttle 500 -s 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000 >/mnt/sdcard/monkey1.txt 说明: --throttle(毫秒)事件之间插入的固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定,Monkey将尽可能快的产生并执行事件。 -s 用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。 --ignore-crashes 忽略程序崩溃。设置此选项后,Monkey会执行完所有的事件,不会因crash而停止。 --ignore-timeouts 忽略程序无响应。设置此选项后,Monkey会执行完所有的事件,不会因ANR而停止。 --ignore-security-exceptions 忽略证书或认证异常。设置此选项后,Monkey会执行完所有的事件,不会因认证或证书异常而停止。 --ignore-native-crashes 监视系统中本地代码发生的崩溃 --monitor-native-crashes 忽略本地代码导致的崩溃。设置忽略后,Monkey将执行完所有的事件,不会因此停止。 -v -v –v 提供最详细的设置信息 4.导出log到电脑:pull /mnt/sdcard/monkey.txt d:monkey.txt 分析log l 日志开头:显示本次测试seed值,执行次数,测试包, l 日志结尾: 如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;Monkey finished代表执行完成。 (如果Monkey执行中断,在log的最后也能查看到当前已执行的次数。) l 日志内容分析 一般测试结果分析-搜索关键字: 1.程序无响应,ANR问题:在日志中搜索“ANR” 2.崩溃问题:在日志中搜索“CRASH” 3.其他问题:在日志中搜索”Exception” 详细分析monkey日志 Switch--查看log中的Switch,主要是查看Monkey执行的是那一个Activity,两个swtich之间如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。 Sleeping--Sleeping for 500 milliseconds这是执行Monkey测试时,throttle设定的间隔时间,每出现一次,就代表一个事件。 重现问题 Monkey测试出现错误后,一般的查错步骤为以下几步: 1.找到是monkey里面的哪个地方出错 2.查看Monkey里面出错前的一些事件动作,并手动执行该动作 3.若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一致

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值