monkey的简单介绍
Monkey测试是Android app自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入等,看设备是否出异常。
当Monkey程序在模拟器或设备运行的时候,如果用户出发了比如点击,触摸,手势或一些系统级别的事件的时候,它就会产生随机事件,所以可以用Monkey用随机重复的方法去测试app.

 

一:前提:电脑已经安装AndroidSDK

1.设安装包: xxx.apk ,包名为:com.xxx_xxx

2.把安装包放在:C:\monkey (monkey为新建的文件夹)

3.cmd进入命令行,手机和电脑连接。手机打开开发者模式,允许调试

4.输入:adb devices ,出现下图的提示,表示连接成功,就可以进行下一步操作。

二:输入命令:cd C:\monkey 这样就进入了放置安装包的目录下,就可以安装安装包了

1.安装包:adb install xxx.apk

2.查看包名:aapt dump badging C:\monkey\xxx.apk

3. 直接运行10次 :adb shell monkey -v -p com.xxx_xxx(包名) 10

4.重复以上操作: adb shell monkey -s (seed) -v <envent-count> 如:adb shell monkey -s 1535655135292 -v 10

5.生成txt日志:adb shell monkey -v -p com.xxx_xxx(包名) 10 >./monkey_log.txt

三:指定时间参数设置

在Monkey中,虽然输入的事件是随机产生的,但是可以指定输入事件类型的百分比,让其控制在我们需要的范围内。

在Monkey中,可以设定的事件类型有:

--pct-touch <percent>:指定触摸事件的百分比。--pct-motion <percent>:指定滑动事件的百分比--pct-trackball <percent>:指定轨迹球事件的百分比--pct-nav <percent>:指定导航事件中,up、down、left、right等事件的百分比--pct-majornav <percent>:指定导航事件中,back、menu等事件的百分比--pct-syskeys <percent>:指定系统按键的百分比,包括HOME、Back、音量等。--pct-appswitch <percent>:指定Activity之间切换的比例。--pct-anyevent <percent>:指定任意事件的百分比

默认情况下,如果不设置,会是-pct-anyevent为百分之百,也就是纯随机事件。如果通过其他的参数配置了之后,如果相加的百分比不为百分百,余下的百分比部分也会生成随机事件。

四、 调试选项

--ignore-crashes   忽略崩溃

--ignore-timeouts   忽略超时

--ignore-security-exceptions   忽略安全异常

--kill-process-after-error   通知系统停止发生错误的进程;应用程序仅是静止在发生错误时的状态,系统并不会结束该应用的进程

--monitor-native-crashes   跟踪本地方法的崩溃问题

adb shell monkey -p 包名 -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v -v 10000 >D:\monkeylog.txt

 

--throttle 毫秒,在事件之间插入固定的时间毫秒延迟,使用此参数减缓monkey的运行速度;不设置此参数,事件没有延迟,将以最快的速度生成

adb shell monkey --throttle 300 -v 100

300毫秒是实际用户操作的最快300毫秒左右的一个动作事件

 

五、日志参数

-v 较少的日志信息 
-v -v 较为丰富的日志信息 
-v -v -v 最高级别的日志信息

一般情况下单个app monkey 模拟测试10万次足矣。

六、以下是app monkey测试的详细步骤
1. 先进入cmd界面,输入adb devices,查看是否正常连接。
2. 输入adb logcat | findstr START 监控app,打开你要测试的app,cmd查看app的包名。cmp=右边的就是app的包名。
3. 输入adb logcat -c 先清除下logcat日志信息
4. 输入adb logcat -v time >F:\logcat.log
5. 输入adb shell monkey -p +app包名 -v 10000 >F:\monkey.log

 

0–> –pct-touch
1–> –pct-motion
3–> –pct-trackball
6–> –pct-nav
7–> –pct-majornav
8–> –pct-syskeys
9–> –pct-appswitch
11–> –pct-anyevent

 

七、通过adb命令做回归测试 

当开发修改问题后,需要做回归测试验证是否修改ok,此时测试人员需要使用上一次跑的monkey测试中的seed值做回归测试。

** System appears to have crashed at event 468 of 1000 using seed 1557722456728

该seed值,在上次跑完脚本的时候,可以在最后一行显示打印出来,记得日志显示使用详细,即-v -v -v才能看到seed值


adb shell monkey -p +包名 -s +seed值 -v 10000 
比如 
adb shell monkey -p com.shanjian.originaldesign -s 1536629919450 -v10000

八、monkey日志分析 
当monkey测试时出现问题,此时我们需要分析定位问题,我们需要分析monkey日志

Monkey测试出现的异常的原因: 
一般是两种原因导致的,一个是crash 程序崩溃,导致crash原因如下 
a)、程序存在空指针 
b)、cpu不足 
c)、内存不足

另一种是ANR 程序无响应,导致anr无响应原因如下: 
a)、线程阻塞 
b)、cpu不足 
c)、内存不足

查找分析原因:

1. 当monkey测试出现异常终止,请打开logcat日志搜索关键字‘anrin’,如果存在该关键字,说明app出现了ANR异常,我们需要把/data/anr目录下的trace.txt文件取下来。 
2. 取下来trace.txt文件后,将出现问题的进程号对应的日志发给软件工程师定位,如果在logcat日志里没有搜索到’anrin’关键字,就搜索’nullpointer’异常关键字的上下日志,发给开发定位 
3. 当出现ANR后,需要导出,步骤如下: 
1. 输入adb shell 
2. 输入cd /data/anr/ 
3. 输入ls

退出exit后,直接在cmd下输入
4. adb pull /data/anr/traces.txt   d:\trace.txt 
5. 在logcat将出现anr问题的进程号复制,然后在trace.txt文件里按ctrl+F 查找,粘贴进程号,查找对应的问题

 

--------------------- 

作者:shawn xie123
来源:CSDN
原文:https://blog.csdn.net/xiezhiming1234/article/details/82121232
版权声明:本文为博主原创文章,转载请附上博文链接!