monkey日志分析
Monkey是Android中的一个命令行工具,可以在Android模拟器或手机设备中运行。通过向Android系统发送伪随机用户事件流(如屏幕的点击、滑动和系统按键操作等),实现对正在开发的Android App进行压力测试。
monkey随机测试命令示例:
(1) 在 手机中执行,并保存日志
adb shell 进入系统
monkey -p com.baidu.BaiduMap --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-touch 40 --pct-syskeys 30 --pct-trackball 30 -s 1 -v -v -v --throttle 200 1000 2> /sdcard/error.txt 1> /sdcard/info.txt
(2)在dos窗口执行并把日志打印在DOS窗口
adb shell monkey -p com.baidu.BaiduMap --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-touch 40 --pct-syskeys 30 --pct-trackball 30 -s 1 -v -v -v --throttle 200 1000
那么monkey随机测试产生的日志该如何进行分析呢?
1、日志开头、结尾:
(1)显示本次测试seed值,执行次数,测试package包
(2)如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;
// Monkey finished 代表执行完成。
(3)如果Monkey执行中断,在log的最后也能查看到当前已执行的次数。
2、日志内容分析
一般测试结果分析--搜索关键字:
程序无响应,ANR问题:在日志中搜索“ANR”
崩溃问题:在日志中搜索“CRASH”
其他问题:在日志中搜索”Exception”
3、详细分析monkey日志
(1)Switch:查看log中的Switch,主要是查看Monkey执行的是那一个Activity,两个swtich之间如
果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。
(2)0Sleeping:Sleeping for 300 milliseconds这是执行Monkey测试时,throttle设定的间隔时
间,每出现一次,就代表一个事件。
4、重现问题
(1)Monkey测试出现错误后,一般的查错步骤为以下几步:
找到是monkey里面的哪个地方出错
查看Monkey里面出错前的一些事件动作,并手动执行该动作
若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样
(2)一般 0 ANR 、0 CRASH是测试标准。
5、举例
首先我们需要查看Monkey测试中是否出现了ANR或者异常,具体方法如上述。将执行Monkey生成 的log,从手机中导出并打开查看该log;在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。具体方法如上述。
然后我们要分析log中的具体信息,方法如下:
查看log中第一个Switch,主要是查看Monkey执行的是那一个Activity,譬如下面的log中,执行的是com.tencent.smtt.SplashActivity,在下一个swtich之间的,如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。
:Switch:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10001100;component=com.tencent.smtt/.SplashActivity;end
// Allowing start of Intent {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]cmp=com.tencent.smtt/.SplashActivity } in package com.tencent.smtt
在下面的log中,Sending Pointer ACTION_DOWN和Sending Pointer ACTION_UP代表当前执行了一个单击的操作;
Sleeping for 300 milliseconds这句log是执行Monkey测试时,throttle设定的间隔时间,每出现一次,就代表一个事件。
SendKey(ACTION_DOWN) //KEYCODE_DPAD_DOWN 代表当前执行了一个点击下导航键的操作;
Sending Pointer ACTION_MOVE 代表当前执行了一个滑动界面的操作。
:Sending Pointer ACTION_DOWN x=47.0 y=438.0
:Sending Pointer ACTION_UP x=47.0 y=438.0
Sleeping for 300 milliseconds
:SendKey (ACTION_DOWN): 20 //KEYCODE_DPAD_DOWN
:SendKey (ACTION_UP): 20 //KEYCODE_DPAD_DOWN
Sleeping for 300 milliseconds
:Sending Pointer ACTION_MOVE x=-2.0 y=3.0
:Sending Pointer ACTION_MOVE x=4.0 y=-3.0
:Sending Pointer ACTION_MOVE x=-5.0 y=-3.0
:Sending Pointer ACTION_MOVE x=3.0 y=4.0
:Sending Pointer ACTION_MOVE x=-4.0 y=1.0
:Sending Pointer ACTION_MOVE x=-1.0 y=-1.0
:Sending Pointer ACTION_MOVE x=-2.0 y=-4.0
Monkey执行完成的log具体如下:
Events injected: 3000
:Dropped: keys=0 pointers=9 trackballs=0 flips=0
## Network stats: elapsed time=458384ms (0ms mobile, 458384ms wifi, 0msnot
connected)
// Monkey finished
monkey在手机APP自动化测试中是一个非常重要的工具,要学会使用并会分析日志。
浙公网安备 33010602011771号