当前位置: 首页 > news >正文

零操作难度,轻松进行应用测试,App专项测试之Monkey测试完全指南!

 目录

 前言:

一、 Monkey测试的基础参数

1.1 事件类型参数:

1.2 覆盖包

1.3 事件数量

二、 Monkey测试的高级参数

2.1 稳定性级别

2.2 策略参数

2.3 包含选项参数

三、 附加代码

四、 总结


前言:

在移动应用的开发过程中,测试是非常重要的一个环节。而Monkey测试是一种常见的压力测试方法,可以对应用进行随机操作,模拟用户对应用的使用场景。在这篇文章中,我们将对Monkey测试的基础参数和高阶参数使用进行详细介绍,并附上实用代码。

一、 Monkey测试的基础参数

1.1 事件类型参数:

在进行Monkey测试时,需要设置事件类型来模拟用户的操作,事件类型可以包括:

    ● 点击事件
    ● 滑动事件
    ● 模拟按键事件

举个例子,您可以使用以下命令来进行点击事件模拟:

    adb shell monkey --pct-touch 50 --pct-motion 0 --pct-trackball 0 -v-v-v 1000

在上面的命令中,`--pct-touch 50` 表示50%的概率会进行一个点击操作,而 `--pct-motion 0` 和 `--pct-trackball 0` 则分别表示不会进行滑动和轨迹球操作,最后的 `1000` 表示Monkey将执行1000个事件。

1.2 覆盖包

覆盖包是指要进行Monkey测试的应用的包名。在进行Monkey测试时,必须指定覆盖包以确保针对正确的应用进行测试。

以下是如何指定覆盖包的实例:

    adb shell monkey -p com.example.app -v-v-v 1000

这里,`-p com.example.app` 告诉 Monkey 开始 monkey 测试 `com.example.app` 应用的包。

1.3 事件数量

在进行Monkey测试时,您需要指定要执行的事件数量。这是通过在命令行中设置 `--event-count` 参数来实现的。例如:

    adb shell monkey --event-count 1000 -v-v-v 1

这将指示 Monkey 执行 1000 个事件并将其输出到控制台。

二、 Monkey测试的高级参数

2.1 稳定性级别

在进行 Monkey 测试时,可以选择稳定性级别来确定 Monkey 应测试的内容。稳定性级别可以设置为:

    ● 级别 0:Monkey会随机遍历整个应用程序,包括系统组件。这是个完全随机的测试。  
    ● 级别 1:Monkey会遍历Activity或者Fragment的UI,但不会遍历系统组件。这个级别适用于针对单独的应用测试。
    ● 级别 2:Monkey会遍历特定的Activity或者Fragment,这适用于有单独入口的应用测试场景。

在使用Monkey测试时,可以在命令行中使用 `--pct-syskeys 0` 参数来设置稳定性级别,例如:

    adb shell monkey --pct-syskeys 0 -v-v-v 1000

在上述命令中, `--pct-syskeys 0` 会将稳定性级别设为 1 级别。

2.2 策略参数

Monkey测试还有一些策略参数,可以影响Monkey的事件生成方式。

例如, `--pct-trackball` 可以定义轨迹球事件的频率, `--pct-motion` 定义运动事件的频率, `--pct-nav` 可以定义导航事件的频率。下面的代码可以展示如何使用策略参数:

   adb shell monkey --pct-touch 50 --pct-motion 25 --pct-trackball 25 --pct-nav 0 -v-v-v 1000

2.3 包含选项参数

当您需要限制产生的事件范围时,您可以使用包含选项参数来进行限制。例如:

    adb shell monkey --pct-touch 50 --pct-motion 50 --pct-trackball 0 --pct-appswitch 0 --pct-rotation 0 --pct-nav 0 --pct-majornavigation 0 --pct-syskeys 0 --pct-anyevent 0 --pct-pinchzoom 0 --pct-permissions 0 -v-v-v 1000

 在上述命令中,我们使用了 `--pct-appswitch 0`、`--pct-rotation 0`、`--pct-nav 0` 和 `--pct-syskeys 0` 来限制事件只在应用内产生。`--pct-anyevent 0` 将生成非特殊事件的概率设为 0,同时 `--pct-pinchzoom 0` 和 `--pct-permissions 0` 将分别禁用缩放和权限事件。

三、 附加代码

我们来看看下面的代码片段,它展示了如何在应用的 `MainActivity` 中使用 Monkey 测试:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 在这里创建 Monkey 测试 IntentIntent intent = new Intent(Intent.ACTION_MAIN);intent.setPackage(getPackageName());intent.addCategory(Intent.CATEGORY_LAUNCHER);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);// 确保你指定了你想要测试的 Activity,这里是 Main ActivityComponentName activityName = new ComponentName(this, MainActivity.class);intent.setComponent(activityName);// 在这里使用 Monkey 测试 Intentthis.startActivity(intent);} 
}

这是一个使用 Java 语言编写的代码片段。它实现了两个主要步骤:

1. 在 `MainActivity` 中创建了一个 Monkey 测试 Intent。
2. 在 `MainActivity` 中使用 Monkey 测试 Intent 来启动应用程序。

在这个例子中,我们仅测试了一个模拟的 `MainActivity`,但用户可以根据需要设置任何 Activity。Monkey 测试将以繁琐的方式模拟随机操作,这样用户可以确定应用程序在不同的使用场景下的稳定性。

四、 总结

在这篇文章中,我们介绍了 Monkey 测试的基础参数和高阶参数的使用方法,并为您提供了一些实用的代码。

对于跨平台开发人员和测试人员而言,Monkey 测试是一种强大的测试解决方案。通过使用随机事件和系统调用,Monkey 测试可以有效地测试应用程序的稳定性和可靠性,从而确保应用程序在各种使用场景下能够正常运行。

希望这篇文章能够帮助您更好地使用 Monkey 测试,从而开发出更加健壮的应用程序。

  作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,如果你用得到的话可以直接拿走,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

获取方式:留言【自动化测试】即可获取
【自动化测试交流】:574737577(进群备注ccc)icon-default.png?t=N4N7http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=kBejXNHnzeKNqwOzwf8uRo-EPmQUZ7wl&authKey=yTwGvzhroHT6GcHrdGUH7BAFUlC4RFn1POhNBRXhQGm3qkeBc4%2F7DGYk%2Byi9vymF&noverify=0&group_code=574737577

 

相关文章:

零操作难度,轻松进行应用测试,App专项测试之Monkey测试完全指南!

目录 前言: 一、 Monkey测试的基础参数 1.1 事件类型参数: 1.2 覆盖包 1.3 事件数量 二、 Monkey测试的高级参数 2.1 稳定性级别 2.2 策略参数 2.3 包含选项参数 三、 附加代码 四、 总结 前言: 在移动应用的开发过程中&#xff0…...

Linux安装Docker(这应该是你看过的最简洁的安装教程)

Docker是一种开源的容器化平台,可以将应用程序及其依赖项打包成一个可移植的容器,以便在不同的环境中运行。Docker的核心是Docker引擎,它可以自动化应用程序的部署、扩展和管理,同时还提供了一个开放的API,可以与其他工…...

使用AES算法加密技术集成Java和Vue保护您的数据,代码示例和算法原理

1 算法的原理: AES是一种对称加密算法,也就是说加密和解密使用的是同一个密钥。其基本原理是将明文分成固定大小的块(128位),然后使用密钥对每个块进行加密操作,最后生成密文。在加密过程中,还需要使用一个向量(IV)来增加安全性,避免相同的明文块生成相同的密文块。…...

vcruntime140_1.dll丢失怎样修复,推荐4个vcruntime140_1.dll丢失的修复方法

vcruntime140_1.dll文件是Microsoft Visual C Redistributable for Visual Studio 2015运行库的一部分,它是一个用于支持Visual C构建的应用程序的系统文件。这个文件包含了在运行C程序时所需要的函数和类库,主要负责向应用程序提供运行时环境。如果电脑…...

快来试试这几个简单好用的手机技巧吧

技巧一:相机功能 苹果手机的相机功能确实非常出色,除了出色的像素之外,还有许多其他实用功能可以提升拍摄体验。 这些相机功能提供了更多的选择和便利性,使用户能够更好地适应不同的拍摄需求。 自拍功能:通过选择自…...

OneDrive同步角标消失 - 解决方案

问题 在电脑端使用OneDrive时,文件管理器OneDrive文件夹内的文件会在左下角显示同步状态,如下图。若没有显示同步角标,则此功能出现异常,下文介绍如何显示同步角标。 值得一提的是,同步角标只起到显示作用&#xff0…...

自学网络安全【黑客】,一般人我劝你还是算了吧

前言:我是劝一般人算了,看你是一般人还是。。。 一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全2.不要刚开始就深度学习网络安全3.收集适当的学习资料4.适当的报班学习二、学习网络安全的些许准备 1.硬件选择2.软件选择3.外语能力三、网…...

Java集合工具:first和last

在平常开发过程中,我们经常会遇到截取列表片段的需求,比如取列表中前4个元素、取后四个元素。Java的List提供了subList方法,可以用来完成这些工作,但是使用起来并没有那么便利,比如取前四个元素: list.sub…...

leetcode 905. 按奇偶排序数组

题目描述解题思路执行结果 leetcode 905. 按奇偶排序数组 题目描述 按奇偶排序数组 给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。 返回满足此条件的 任一数组 作为答案。 示例 1: 输入:…...

密码学安全性证明(一)Cramer-Shoup密码系统

Cramer-Shoup密码系统来自于A Practical Public Key CryptosystemProvably Secure against Adaptive ChosenCiphertext Attack这篇论文 CDH问题回顾: 已知(g,g^x, gk)能否计算gxk DDH问题回顾: 已知(g,g^x, g^k ,D)能否判断D是否等于g^xk 注意…...

Asp.net Core系列学习(1)

Asp.net Core 6系列学习 文章目录 Asp.net Core 6系列学习Asp.net Core 概述一、在 ASP.NET 4.x 和 ASP.NET Core 之间进行选择二、适用于服务器应用的 .NET 与 .NET Framework三、ASP.NET Core Web UI1.服务器和客户端呈现 UI 的优势和成本2.服务器呈现的 UI 四、可用的 ASP.N…...

IDEA 2022.2 安装以及自定义优化

IDEA2022.2 安装以及自定义优化 文章目录 IDEA2022.2 安装以及自定义优化安装图解获取激活码自定义优化文件编码设置设置类文档注释和方式注释模板方法分割线 常用插件离线安装 安装图解 静默卸载(旧版本的设置和配置将不会被删除) 获取激活码 略…...

【华为OD机试真题2023B卷 JAVA】阿里巴巴找黄金宝箱(II)

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 阿里巴巴找黄金宝箱(II) 知识点数组哈希表优先级队列 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从0~N的箱子,每个箱子上…...

Python对Excel文件多表对多表之间的匹配(两种不同表头)——之json版

首先Excel文件多表对多表之间的匹配(VLOOKUP),有多种办法, 1:将Excel文件导入Mysql或其他数据库,然后将两种表合并成一张表,接着用数据库匹配 2:将两种表内容,复制粘贴到一起,各自分别保存成一张表&#xf…...

shiro环境搭建

源码部署 这种方法相对复杂,如果不需要分析源码直接用docker就行 前置条件:Maven Ideal Tomcat 下载方式1:https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4,然后将文件夹导入ideal下载方式2:将shiro…...

一文读懂selenium自动化测试(基于Python)

前言 我们今天来聊聊selenium自动化测试,我们都知道selenium是一款web自动化测试的工具,它应该如何去运用呢?我们接着看下去。 ​1、Selenium简介: 1.1 Selenium: Selenium是一款主要用于Web应用程序自动化测试的工具集合。Sele…...

如何高效地在网上找开源项目

开源项目是发展技能、分享想法和成为开发社区一员的好方法。开源意味着软件功能背后的源代码与所有想要阅读它的人公开共享。这意味着你可以准确地看到一个系统是如何工作的——一旦你愿意冒险,就为它做出贡献。除了向所有人开放贡献外,这种开放代码库通…...

2023系统分析师---冲刺资料必备知识点三

视图的优点: 视图能简化用户的操作;视图机制可以使用户以不同的方式查询同一数据;视图对数据库重构提供了一定程度的逻辑独立性;视图可以对机密的数据提供安全保护; ER图、实体、联系、联系的类型: 分布…...

集成Bean Validation 1.1(JSR-349)到 SpringMVC

Spring4新特性——集成Bean Validation 1.1(JSR-349)到 SpringMVC Bean Validation 1.1当前实现是Hibernate validator 5,且spring4才支持。接下来我们从以下几个方法 讲解Bean Validation 1.1,当然不一定是新特性: 1. 集成Bean Valida…...

【软考中级】软件设计师选择题题集(一)

海明校验码是在n个数据位之外增设k个校验位,从而形成一个k+n位的新的码字, 使新的码字的码距比较均匀地拉大。n与k的关系是(1)。 (1)A.2k - 1≥n + k  B.2n - 1≤ n + k   C.n = k  D.n-1≤k 【答案】A 【解析】 【答案】B A 【解析】 在采用结构化方法进行系统分析时,…...

idea大量爆红问题解决

问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...