当前位置: 首页 > 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 【解析】 在采用结构化方法进行系统分析时,…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...