monkey命令运行后产生的日志分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

monkey命令运⾏后产⽣的⽇志分析
前⾔
如何利⽤monkey分析ANR、CRASH、以及monkey运⾏期间的系统⽇志?
log⽂件配置
1、⾸先对于monkey运⾏的⽇志⽂件命名需要有相应的规范。

①建议将monkey命令运⾏期间产⽣的level1级别的⽇志(2V)的⽇志⽂件名命名为verbose.txt;主要⽤来观看⽇志信息和时间分布信息
②建议将monkey命令运⾏期间产⽣的level2级别的⽇志(3V)的⽇志⽂件名命名为error.txt;主要是⽤来查看error的信息,做进⼀步的bug分析。

Code description
2>/sdcard/error.txt Level 2⽇志保存到sdcard上的error.txt中
1>/sdcard/verbose.txt Level 1⽇志保存到sdcard上的verbose.txt中
2、需要在monkey命令⾏中添加dos命令将monkey命令运⾏的内容重定向到⽇志⽂件中。

adb shell monkey -p .myandroid --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-motion 60 -v -v --throttle 200 -s 200 1000 2>d:/error.txt 1>d:/verbose.txt
monkey命令⾏解释:此monkey命令⾏表⽰将monkey命令运⾏期间产⽣的level2级别的⽇志(运⾏程序期间产⽣的错误⽇志,类⽐python中的⽇志级别error)重定向
⾄ d:/error.txt ⽂件中;将monkey命令运⾏期间产⽣的level1级别的⽇志(运⾏程序期间的正常⽇志,类⽐python中的⽇志级别info)重定向⾄ d:/verbose.txt ⽂件中。

adb shell monkey -p .myandroid --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-motion 60 -v -v --throttle 200 -s 200 1000 "2>/sdcard/error.txt 1>/sdcard/verbose.txt"
# 若是使⽤PC运⾏monkey命令并保存在PC端,则在monkey命令的重定向处不需加" ",但是若是需要将monkey命令运⾏产⽣的⽇志信息保存在⼿机⽂件夹中,需要添加" "将monkey命令⾏中的重定向到⽇志⽂件的部分引起来3、获取log⽇志⽂件
log⽇志⽂件做⼀个概要性解释:
File description
error.txt记录了MONKEY测试时产⽣的⼀些ANR、强制关闭等异常
verbose.txt记录了MONKEY测试时发送的各种事件,如触摸事件的位置等等
log.txt此⽂件在⼿机上的LOG⽂件夹中(data/log⽬录)中,主要主要记录程序对MONKEY测试时的响应情况
通过检查verbose.txt⽂件的反馈信息,内容底部出现 Monkey finished 代表Monkey运⾏结束。

⽽测试相关⼈员则需要对这三个⽂件进⾏分析整理,以便提交开发⼈员处理。

log.txt⽇志
①如果使⽤Android Studio开发⼯具作为安卓模拟器,则其⾃带的logcat就可以查看所有adb命令包括monkey命令运⾏期间产⽣的所有⽇志。

【注意:此时的log.txt⽇志⽂件中不
分⽇志的等级,即⽆论level1级别的⽇志或者level2级别的⽇志都会显⽰在其中】
②如果使⽤安卓真机或者安卓模拟器等设备,可以通过 adb logcat > log.txt 命令将所有级别的monkey⽇志重定向⾄log.txt⽇志⽂件中查看。

verbose.txt运⾏⽇志
verbose.txt⽇志⽂件截图如下图所⽰:
其中:
:Monkey: seed=200 count=1000 # seed为随机数⽣成器seed值,count为本次设置的操作次数
:AllowPackage: com.changan.facein # 后⾯为指定测试的包名
# monkey进程的category
:IncludeCategory: UNCHER
:IncludeCategory: android.intent.category.MONKEY
紧接着其后⾯就是⼀个数据列表,是⽤来展⽰本次monkey测试所有随机事件类型的百分⽐:
* Event percentages本次测试的事件分布频率
* 0:触摸事件百分⽐,即参数–pct-touch
*1:滑动事件百分⽐,即参数–pct-motion
*2:缩放事件百分⽐,即参数–pct-pinchzoom
*3:轨迹球事件百分⽐,即参数–pct-trackball
*4:屏幕旋转事件百分⽐,即参数–pct-rotation
*5:获取危险权限事件百分⽐,即参数–pct-permission//低版本没有
*6:基本导航事件百分⽐,即参数–pct-nav
*7:主要导航事件百分⽐,即参数–pct-majornav
*8:系统事件百分⽐,即参数–pct-syskeys
*9:Activity启动事件百分⽐,即参数–pct-appswitch
*10:键盘翻转事件百分⽐,即参数–pct-flip
*11:其他事件百分⽐,即参数–pct-anyevent
// Event percentages:
// 0: 6.6666665%
// 1: 60.0%
// 2: 0.8888889%
// 3: 6.6666665%
// 4: -0.0%
// 5: -0.0%
// 6: 11.111112%
// 7: 6.6666665%
// 8: 0.8888889%
// 9: 0.8888889%
// 10: 0.44444445%
// 11: 5.7777777%
紧跟其后的就是⼀个个switch的内容,截取⼀段解释:
# swicth的意义是表⽰Monkey命令此时在此安卓应⽤程序的具体哪个界⾯进⾏测试
Switch: #Intent;action=android.intent.action.MAIN;category=UNCHER;launchFlags=0x10200000;component=com.changan.facein/.activity.WelcomeActivity;end // Allowing start of Intent { act=android.intent.action.MAIN cat=[UNCHER] cmp=com.changan.facein/.activity.WelcomeActivity } in package com.changan.facein // Allowing start of Intent { act=android.intent.action.MAIN cat=[UNCHER] cmp=com.changan.facein/.activity.WelcomeActivity } in package com.changan.facein # motion时间,以及motion参数
:Sleeping for 200 milliseconds
:Sending Key (ACTION_DOWN): 21 // KEYCODE_DPAD_LEFT
:Sending Key (ACTION_UP): 21 // KEYCODE_DPAD_LEFT
在verbose.txt⽇志⽂件结尾处⼀般会有以下内容:
# Events injected 截⽌次数
Events injected: 1000
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=2 rotations=0
# 整个测试完成持续时间为42539ms。

(1s=1000ms)
Network stats: elapsed time=42539ms (0ms mobile, 0ms wifi, 42539ms not connected)
# monkey测试结束标识
// Monkey finished
verbose.txt⽇志⽂件到此标记着level1级别⽇志的结束,即monkey命令运⾏结束。

error.txt 错误⽇志
①error.txt⽇志⽂件为monkey命令运⾏期间产⽣的安卓应⽤程序运⾏错误的⽇志;
②当monkey命令运⾏在安卓设备或者模拟器上没有出现应⽤程序运⾏错误的时候,此⽂件会为空;⼀旦运⾏monkey命令期间安卓应⽤程序发⽣错误,会将错误的部分⽇志内容重定向⾄error.txt⽇志⽂件中。

③在运⾏monkey命令以达到测试安卓应⽤程序稳定性的时候,最好是通过monkey的命令⾏参数忽略安卓应⽤程序可能发⽣的错误,让程序可以继续运⾏下去,monkey命令同样可以运⾏下去。

【monkey命令运⾏期间应⽤程序发⽣错误不影响错误⽇志重定向⾄error.text⽇志⽂件】
monkey测试检测到的安卓应⽤程序错误类型分为三种:
①CRASH:系统崩溃⽇志,当Apk存在崩溃的情况下会反馈相应的数据。

②ANR:当ANR情况出现时,会反馈相应的数据。

③常见的Exception:进⾏monkey测试时,应⽤程序存在⼀些Exception同样会反馈相应的异常数据。

error.txt⽇志⽂件截图如下:。

相关文档
最新文档