零操作难度,轻松进行应用测试,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 {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // 在这里创建 Monkey 测试 Intent
        Intent 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 Activity
        ComponentName activityName = new ComponentName(this, MainActivity.class);
        intent.setComponent(activityName);

        // 在这里使用 Monkey 测试 Intent
        this.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

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值