当前位置: 首页 > 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

 

http://www.lryc.cn/news/70241.html

相关文章:

  • Linux安装Docker(这应该是你看过的最简洁的安装教程)
  • 使用AES算法加密技术集成Java和Vue保护您的数据,代码示例和算法原理
  • vcruntime140_1.dll丢失怎样修复,推荐4个vcruntime140_1.dll丢失的修复方法
  • 快来试试这几个简单好用的手机技巧吧
  • OneDrive同步角标消失 - 解决方案
  • 自学网络安全【黑客】,一般人我劝你还是算了吧
  • Java集合工具:first和last
  • leetcode 905. 按奇偶排序数组
  • 密码学安全性证明(一)Cramer-Shoup密码系统
  • Asp.net Core系列学习(1)
  • IDEA 2022.2 安装以及自定义优化
  • 【华为OD机试真题2023B卷 JAVA】阿里巴巴找黄金宝箱(II)
  • Python对Excel文件多表对多表之间的匹配(两种不同表头)——之json版
  • shiro环境搭建
  • 一文读懂selenium自动化测试(基于Python)
  • 如何高效地在网上找开源项目
  • 2023系统分析师---冲刺资料必备知识点三
  • 集成Bean Validation 1.1(JSR-349)到 SpringMVC
  • 【软考中级】软件设计师选择题题集(一)
  • 10个炫酷特效的网页写法(附源码),拿去就能用,奈斯奈斯
  • vscode开发stm32的编译环境配置教程
  • Live800在线客服系统:客户体验即是业绩来源
  • SAP工具箱 MR22自定义BAPI
  • ASP.NET 网上选课系统的设计与实现(源代码+论文)
  • SpringMVC学习总结(路由映射、参数传递、转发和重定向...)
  • 基于MAC地址的ACL配置
  • 软件设计师 计算机网络
  • Gradle ——Gradle安装与配置
  • 网络安全这条路到底该怎么走?
  • 【C++】位图(海量数据处理)