APP测试 - Monkey遍历命令详解

1、启动monkey

# 对手机点击1000次,不限制应用

adb shell monkey 1000

# 限制在设置的应用中,点击1000次

adb shell monkey -p com.cleanmaster.mguard 1000

# 设置点击事件的间隔为50ms

adb shell monkey -p com.cleanmaster.mguard 1000 --throttle 100

2、停止monkey

# 查看monkey的进程id

ps | grep monkey

# 根据pidnum来杀死进程

Kill pid

 

3、增加monkey执行健壮性

程序发生异常时,不终止测试

# 忽略崩溃

--ignore-crashes

# 忽略ANR

--ignore-timeouts

# 忽略证书或认证异常

--ignore-security-exceptions

# 忽略本地代码发生的崩溃

--ignore-native-crashes

4、log设置

# 设置输出log位置

adb shell monkey -p com.cleanmaster.mguard 2>/sdcard/monkey 1>/sdcard/monkey 1000

# 设置电脑输出log位置

adb shell monkey -p com.cleanmaster.mguard 2>/Users/lizhen/cmcm/workspace/monkey/errer.txt 1>/Users/lizhen/cmcm/workspace/monkey/info.txt 1000

# 使用-v指定log详细级别

# Monkey的日志输出有3个级别:默认的-v是level 0,-v -v日志级别为level 1,-v -v -v日志级别为level 2。日志的级别越高,其详细程度也越高。为了方便问题的定位,将日志级别设置为level2。

adb shell monkey -p com.cleanmaster.mguard -v -v 2>./errer_lev1.txt 1>./info_lev1.txt --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes 5000

 

5、设置monkey事件百分比

调整触摸事件的百分比

adb shell monkey -p com.yxy91.creativecat.beta --pct-touch 10 -v 1000

说明:--pct-{+事件类别}{+事件类别百分比}用于指定每种类别事件的百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比),--pct-touch {+百分比}用于调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。

详情查看之前写的文档:命令详解

 

6、monkey复现之seed值

使用-s参数来指定命令执行的seed值

Monkey会根据seed值来生成对应事件流,同一个seed生成的事件流是完全相同的。这里指定了seed值,是为了测试发现问题时,便于进行问题复现。

# 已证实,seed值设置有效。

# ⚠️:每次开始前,app状态要一致,seed一致性才有效

adb shell monkey -p com.cleanmaster.mguard -s 1 -v -v 1000

 

7、monkey测试策略

(1)使用 --throttle 来控制事件间隔

指定操作之间的时间间隔,一方面是希望能更接近用户的操作场景,正常用户操作都会有一定的时间间隔;另一方面也是不希望因为过于频繁的操作而导致系统崩溃,尤其是在比较低端的手机上执行测试时。因此通过–throttle设置Monkey每个操作固定延迟0.4秒。

(2)使用 --ignore-crashes --ignore-timeouts

在执行Monkey测试时,会因为应用的崩溃或没有响应而意外终止,所以需要在命令中增加限制参数–ignore-crash和–ignore-timeouts,让Monkey在遇到崩溃或没有响应的时候,能在日志中记录相关信息,并继续执行后续的测试。

(3)修改注入事件的比例

比如增加–pct-syskeys的比例,这样就可以增加触发返回键的比例,避免monkey测试长时间停留在一个界面,增加monkey覆盖的界面范围。

(4)指定要启动的Activity

如果没有指定的activity,那么就会启动含有 Intent.CATEGORY_LAUNCHER 或 Intent.CATEGORY_MONKEY 的activity。可以使用 -c 来指定启动一个Activity,该activity必须至少包含一个指定的category,才能被启动,否则启动不了。

  • 前面介绍了几种常见的Monkey测试方法,但在实际项目中,选择哪种Monkey测试策略,则需要根据实际项目的情况来做判断。主要是看测试目的及被测应用自身的特点。
  • 假如我们想测试浏览器的双指缩放功能是否有异常,那就需要选择–pct-pinchzoom参数,调大双指缩放事件的占比进行Monkey测试;
  • 假如我们想验证ROM的横竖屏切换功能是否正常,那就需要选择–pct-rotation参数,调大横竖屏切换事件的占比进行Monkey测试;
  • 假如我们想验证重复某种特定操作时,应用是否会存在异常,那可以选择-f参数,自定义Monkey脚本进行验证;
  • 假如我们想验证长时间操作时应用是否会存在内存泄漏,那就需要结合-hprof参数和dumpsys meminfo<进程名>进行Monkey测试。

 

 

 

 

 

 

 

 

 

 

 

posted @ 2023-01-04 18:13  小林同学_Scorpio  阅读(153)  评论(0编辑  收藏  举报
1