Monkey实例化性能测试

在Monkey测试前,必须进行以下准备:

  • 手机屏幕超时设置为30分钟,防止手机进入锁屏状态。
  • 如果log文件想放电脑上,需要直接使用adb shell monkey -p ....无需插存储卡。
  • 如果log文件想放手机内,需要先进入adb shell,然后运行 monkey -p ...则插入SIM卡和存储卡后将手机开机,开启ADB模式,连接到PC(存储卡剩余空间尽量留大,建议1G以上)
  • 开启系统log。(具体可依据每个机型平台决定)
  • 调出终端,在弹出的命令窗口中,输入adb devices,检查设备是否连接
  • 在弹出的命令窗口中,输入adb shell,进入
  • 输入 Monkey命令。如下:
    (压力测试指令:monkey -p 包名 [参数] -v (-v -v) 执行次数 >导出log文件)

PC端:
monkey -p com.quanleimu.activity -v --throttle 300 --pct-touch 30 --pct-motion 20 --pct-nav 20 --pct-majornav 15 --pct-appswitch 5 --pct-anyevent 5 --pct-trackball 0 --pct-syskeys 0 -p ‘%s’ 1000 2>/Users/xyz/monkeylog.txt
(mac端可以是c:\monkeylog.txt)

上面可能日志无法写入。下面这个可以写入
adb shell monkey -p com.quanleimu.activity --throttle 300 --pct-touch 30 --pct-motion 20 --pct-nav 20 --pct-majornav 15 -vvv 1000 >/Users/XYZ/monkeylog.txt

手机端:
后缀是 /sdcard/error.txt 1>/sdcard/info.txt

image.png

结果检查与分析:
测试结束后,PC端的直接打开monkeylog.txt,分析
需要将手机连接PC,拷贝以下文件:

  • info.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时发送的各种事件,如触摸事件的位置等等。
  • error.txt:此文件在手机上的SDCARD中,主要记录了MONKEY测试时产生的一些ANR、强制关闭等异常。
  • LOG文件:此文件在手机上的LOG文件夹中中,主要主要记录程序对MONKEY测试时的响应情况。
  • 我们需要对这3个文件进行分析整理,以便提交开发人员处理。
image.png

image.png
image.png

$ adb shell monkey -p package_name -v 1000 > F:\monkeylog.cat

-p 后面的package_name为你安装在手机或模拟器上的要进行Monkey测试的APP包名

-v 表示模拟多少次事件进行测试

后面的路径为将此次测试的log输出到哪个位置

<noscript>
image

</noscript>

image

0:触摸事件百分比,即参数–pct-touch
1:滑动事件百分比,即参数–pct-motion
2:缩放事件百分比,即参数–pct-pinchzoom
3:轨迹球事件百分比,即参数–pct-trackball
4:屏幕旋转事件百分比,即参数–pct-rotation
5:基本导航事件百分比,即参数–pct-nav
6:主要导航事件百分比,即参数–pct-majornav
7:系统事件百分比,即参数–pct-syskeys
8:Activity启动事件百分比,即参数–pct-appswitch
9:键盘翻转事件百分比,即参数–pct-flip
10:其他事件百分比,即参数–pct-anyevent

分析测试报告

分析测试报告时,需要注意以下内容。

(1)注意报告中的seed值:我们刚才执行monkey时,没有指定seed,在报告一开始,可以看到其自动生成的seed值,见下图红色部分。如果seed相同,则两次Monkey测试所产生的事件序列也相同。

<noscript>
image

</noscript>

image

示例:

Monkey 测试1:adb shell monkey -p com.airbnb.lottie –s 10 -v 100

Monkey 测试2:adb shell monkey -p com.airbnb.lottie –s 10 -v 100

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的。

​(2)注意查找日志中的无响应问题和崩溃问题。无响应问题可以在日志中搜索 “ANR” ,崩溃问题搜索 “CRASH” ,内存泄露问题搜索"GC"(需进一步分析),异常问题搜索 “Exception”(如果出现空指针, NullPointerException,需格外重视)。

例如:

<noscript>
image

</noscript>

image

(3)为了进一步分析问题的来源,可以找到Log中出现问题处的前一次Switch,随后根据Log主要是查看相关的Activity。

例如下面的Log执行的就是MainActivity。

:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.airbnb.lottie/.samples.MainActivity;end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容