首页 > 其他分享 >APP测试 - Monkey遍历命令详解

APP测试 - Monkey遍历命令详解

时间:2023-01-04 18:23:00浏览次数:69  
标签:遍历 Monkey -- APP ignore 测试 1000 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测试。

 

 

 

 

 

 

 

 

 

 

 

标签:遍历,Monkey,--,APP,ignore,测试,1000,monkey
From: https://www.cnblogs.com/xiaolintongxue1/p/17025686.html

相关文章

  • power app portal 多语言配置
    官方文档:https://learn.microsoft.com/en-us/power-apps/maker/portals/configure/enable-multiple-language-support门户中可以设置很多语言,首先需要在当前环境中启用:1......
  • 苹果app怎么上架
    1、苹果要求版本更新必须使用iOS版本更新内置更新机制。Design:PreambleDesignPreambleYourappincludesaresponsiveversionbuttonoralertstheusertoupdate......
  • 最新最全的JavaScript入门视频,包含小程序和uniapp相关的JavaScript知识学习
    写在前面我们学习JavaScript不仅可以用于web网站开发,也可以用于小程序,uniapp项目的开发,所以我们学习JavaScript很重要。准备工作我们这里学习JavaScript用的是小程序开发者......
  • iOS一个公司能上架多少个APP
    跨平台开发是软件开发中一个重要的概念,即不依赖于操作系统,也不信赖硬件环境。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。诸如java,delphi和易语言,都已......
  • 【FAQ】OpenHarmony开发板运行HAP应用,报错ERR_APPEXECFWK_INSTALL_FAILED_PARSE_DEVIC
    【问题描述】基于BearPi-HMMicro开发板开发OpenHarmony应用,在安装HAP到开发板时,发生错误:ERR_APPEXECFWK_INSTALL_FAILED_PARSE_DEVICETYPE_ERROR针对这个问题应该是Config.......
  • 混合开发(Hybrid App)有哪些优劣点
    从当前移动开发的实际情况来看,移动端的开发方式三分天下:纯原生(NativeApp)、混合开发(HybirdApp)、网页应用(WebApp)。 那么,混合式开发与其他的两种开发模式相比,具有哪些优劣......
  • App ui界面布局基本原则
     页面布局顾名思义就是对页面的文字、图形或表格进行排布、设计。优秀的布局,需要对页面信息进行完整的考虑。即要考虑用户需求、用户行为,也要考虑信息发布者的目的、目......
  • 安卓app上架流程
    ​上传APP的时候,遇到了问题,一直卡在AuthenticatingwiththeiTunesstore提示这里,​解决办法:在ApplicationLoader里面登录需要上传APP的开发者帐号就可以了​证书我们这边......
  • 苹果app怎么上架
     1、苹果要求版本更新必须使用iOS版本更新内置更新机制。Design:PreambleDesignPreambleYourappincludesaresponsiveversionbuttonoralertstheuserto......
  • uniapp 用 uView 组件库中的u-picker 实现地区的 省-市-区 三级联动
    组件的引入就不多赘述了直接看使用方法地址我是引入的json文件数据结构大概是这个样子例1 例2   1,先做个按钮做弹窗显示<u-cell:border="true">......