Android 自动化测试-Monkey Log 分析

如何生成Monkey Log

使用Linux Shell 输出重定向功能, 可参考菜鸟教程
如:

//保存在电脑
adb shell monkey -p com.android.settings  500 >d:\xxx.txt   
//保存在手机上
adb shell monkey -p com.android.settings  500 >/sdcard/monkey_log

Log 关键词

:Monkey: seed=732041 count=999999999 其中的seed就是种子数。只要知道种子数,就能同样的崩溃或者ANR 就能复现。 count 是次数
:AllowPackage: com.android.settings 测试的app
:IncludeCategory: android.intent.category.LAUNCHER // 启动activity 的Category,这两个是monkey 默认的,如果需要添加其它的Category,使用-c 参数添加。
:IncludeCategory: android.intent.category.MONKEY

:Switch

表示Activity切换,Monkey 注入事件中的MonkeyActivityEvent通过发送intent来注入,注入的时候会输出log,以:Switch:开头,后面跟intent.toUri(0)。 由于该intent Category指定了是Intent.CATEGORY_LAUNCHER,这种方式启动的Activity 限定是你桌面生成快捷方式启动的那个activity。

接下来会输出以下文字,来表示是否注入MonkeyActivityEvent成功。

Allowing/Rejecting start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=“packagename”/.launcher.LauncherActivity } in package ”packagename“.

这个输出是依靠监听IActivityController.Stub 的activityStarting()方法实现的。

// NOT RESPONDING

出现了ANR(appNotResponding),此时会输出"// NOT RESPONDING: " + processName + " (pid " + pid + ")",然后输出进程信息。

// NOT RESPONDING: "packagename" (pid 3043)
ANR in "packagename", time=20748620
Reason: executing service "packagename"/"servicename"
Load: 6.16 / 6.6 / 6.53
Android time :[2018-01-09 03:28:25.96] [20752.447]
CPU usage from 12295ms to 0ms ago:
99% 3043/ "packagename": 8.6% user + 91% kernel / faults: 5744 minor 19 major
1.9% 4870/ "packagename": 1.3% user + 0.6% kernel / faults: 208 minor
0.8% 950/system_server: 0.7% user + 0% kernel / faults: 727 minor 29 major
0.2% 203/mtk charger_hv_: 0% user + 0.2% kernel
0.1% 7/rcu_preempt: 0% user + 0.1% kernel
0.1% 71/kswapd0: 0% user + 0.1% kernel
0.1% 162/mmcqd/0: 0% user + 0.1% kernel
0.1% 202/bat_thread_kthr: 0% user + 0.1% kernel
0.1% 1625/com.android.phone: 0.1% user + 0% kernel / faults: 70 minor
0% 8/rcu_sched: 0% user + 0% kernel
0% 57/cfinteractive: 0% user + 0% kernel
0% 100/present_fence_w: 0% user + 0% kernel
0% 238/logd: 0% user + 0% kernel / faults: 11 minor
0% 255/surfaceflinger: 0% user + 0% kernel / faults: 199 minor
0% 1155/com.android.systemui: 0% user + 0% kernel / faults: 126 minor
0% 16280/kworker/0:2: 0% user + 0% kernel
25% TOTAL: 3% user + 22% kernel + 0% iowait

同时通过查看/data/anr/traces.txt 文件来定位问题,最新生成的在最前面。

adb pull /data/anr/traces.txt traces.txt

按照monkey中输出pid 在traces中查找该进程。然后找其中的主线程,定位原因。如

"main" prio=5 tid=1 TIMED_WAIT

// WATCHDOG:

出现了SNR (System not responding), 输出

// WATCHDOG: 相关信息

一般这种情况和app没什么关系

//CRASH:

输出信息如:

//CRASH:processname(pid 13419)
Short Msg: java.lang.NullPointerException
Long Msg: java.lang.NullPointerException
Build Label: ...
Build ChangeList: ....
Build Time: ..
//java.lang.NullPointerException
// at android.view.GestureDetector
// at android.os.Handler.dispatchMessage(Handler.java:102)

如何复现

1.方法一

打开系统设置,开发者选项的指针位置,手机上能够显示相对的X和Y坐标。 根据Log先定位到ANR出现的地方,向上寻找第一个Activity启动的时候输出的log。然后按照之后log日志输出的进行操作。
Activity启动log

// Allowing start of Intent { cmp="packageName"/"activity"} in package "packageName"

Activity resume log

// activityResuming("packageName")

2.方法二

按照种子数seed重新跑一遍Monkey, 由于Monkey 生成的伪随机事件,所以只要种子相同,产生的事件也是相同的

获取更多信息

获得更多信息可以在sdk下寻找Bugreport, 这些文件命名规则为:

ANR 报告: anr_ +mReportProcessName+_+.txt
WatchDog 报告: anr_watchdog_.txt
Crash 报告: app_crash+mReportProcessName+_+.txt
Native Crash 报告: 如果配置了--monitor-native-crashes参数,生成native_crash_.txt
定期报告: 如果配置了--periodic-bugreport 参数,是定期生成报告的,此时的报告名称为Bugreport_.txt

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342