Monkey测试

一、什么是Monkey测试

Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上。 Monkey会发送伪随机的用户事件流(点击、触摸、手势等一些系统级别的事件),适合对app做压力测试,来观察被测应用程序的稳定性和可靠性。

1. 在Android文件系统中的存放路径是:/system/framework/monkey.jar。

2. monkey.jar程序是由一个名为“ monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey。

二、操作步骤

1. 安装adb, 并加入到环境变量。使用adb与设备进行连接。

获取设备列表及设备状态命令:adb devices

2. 获取安装包

列出android设备上的所有app命令:adb shell pm list package

3. 执行monkey命令测试

三、命令说明

adb shell monkey "参数"  > monkey.log

示例:

adb shell monkey --pkg-whitelist-file  /data/whitelist.txt -s $RANDOM  --monitor-native-crashes --ignore-security-exceptions --ignore-crashes --pct-syskeys 0 -v-v-v  --throttle 500  2000    >>sdcard/Monkey.log

 参数:--pkg-whitelist-file 白名单

只测试白名单中的包名,把你设置的白名单的包名写到一个txt文档里面,记得路径和文档名字都是英文

参数:-s 指定测试的种子值(编号)

用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
Monkey测试1:adb shell monkey -p com.xxx.xxx –s 10 100
Monkey测试2:adb shell monkey -p com.xxx.xxx –s 10 100
说明:两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的,用于回归测试。

参数:--monitor-native-crashes

监视并报告Androids系统本地代码的崩溃事件

参数:--ignore-security-exceptions

用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。

参数:--ignore-crashes

用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。

参数:--pct-syskeys

系统事件百分比

参数:-v

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分 3 个级别,以 -v 参数在命令中的个数决定级别, -v 参数个数越多日志就越详细。

参数:--throttle

每个事件结束后的间隔时间。用于降低系统压力。如果不指定,系统会尽快的发送事件序列。

用于指定用户操作(即事件)间的时延,单位是毫秒。

--throttle 500  2000:对xxx发送2000个随机指令,每次间隔时间是500ms

四、日志分析

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

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

如果出现空指针 NullPointerException ,就一定是 bug 。
1. 程序无响应的情况:搜索关键字 “ANR in”
2. 崩溃的情况 1 :搜索关键字 “CRASH”
3. 崩溃的情况 2 :搜索关键字 “Exception”
4. 内存溢出的情况:搜索关键字 “OOM”
5. 测试成功的情况:搜索关键字 “Monkey finis hed”

参考文章:

Monkey简介及用法 - 简书 (jianshu.io)

(55条消息) 【Monkey测试】Monkey测试详解_千重萌的博客-CSDN博客

你可能感兴趣的:(Python,android,adb)