ADB之Monkey测试

本文介绍了Android的ADBMonkey测试工具,包括其功能如随机事件生成、压力测试和自动化测试的应用场景,详细讲解了命令行参数、日志控制、延迟设置以及黑白名单和百分比测试的使用方法。
摘要由CSDN通过智能技术生成

ADB之Monkey测试

官方文档地址:https://developer.android.com/studio/test/monkey.html

Monkey简介

  • Monkey 是一个在模拟器或设备上运行的程序,可生成伪随机用户事件(例如点击、轻触或手势)流以及很多系统级事件。您可以使用 Monkey 以随机且可重复的方式对正在开发的应用进行压力测试。
  • Monkey测试是Android平台自动化测试的一种手段,用过Monkey程序模拟用户触摸屏幕、滑动Trackball(轨迹球)、按键等操作来对设备上面的程序进行压力测试,检测程序多久的时间会发生异常
  • Monkey是一个命令行工具
  • 弱点:Monkey虽然可以根据一个指定的命令脚本发送按键消息,但其不支持条件判断,也不支持读取待检测界面的值来执行验证操作

Monkey测试应用场景

  • Monkey可以做压力测试,也可以用来做自动化测试
  • 一般使用场景:等待我们的产品稳定,没有太多bug的时候,一般会使用Monkey进行压力测试,以测试程序的稳定性,健壮性(程序的健壮性包含程序是否稳定,是否会发生崩溃,闪退等等),以及包含整机测试(手机厂商等等)等
  • 安卓模拟器的弱点:不能模拟定位,一些硬件传感器(比如重力传感器,陀螺仪传感器,红外传感器等等)

Monkey命令

  • 基本使用

    ## monkey 是基于我们adb命令的操作,所以我们还是使用adb命令
    adb shell monkey 参数选项 发送的操作
    
  • 对应用发送随机事件

    ## 使用monkey对qq音乐进行2000次的随机事件的测试
    ## 事件的次数一定要在最后面
    adb shell monkey -p com.tencent.qqmusic 2000
    
  • 伪随机数生成器

    ## 可以利用此参数对monkey产生的随机事件进行随机数字绑定,绑定之后我们下次可以直接通过此随机数字直接复现之前的所有操作
    adb shell monkey -p com.tencent.qqmusic -s 111 200
    ## 上述命令中的-s 111就是我们为此次随机事件指定的伪随机数,200是执行的随机测试次数,再次执行此命令所产生的随机事件以及效果是相同的
    

- 指定反馈日志的级别

  ```shell
  -v 日志级别level 0
  -v -v 日志级别level 1
  -v -v -v 日志级别level 2
  adb shell monkey -p com.tencent.qqmusic -s 111 -v -v -v 200 
  ## 我们也可以通过重定向将日志内容重定向输出到本地电脑文件中
  adb shell monkey -p com.tencent.qqmusic -s 111 -v -v -v 200 > d:\monkey.log
  • 插入固定的延迟时间

    ## 在命令中插入--throttle 可以让我们的monkey测试每项随机事件的点击不再那么频繁,指定延迟时间为毫秒
    --throttle 
    ## 执行上面的测试,但是我们让每项之间的时间延迟为500毫秒
    ## 1秒=1000毫秒
    adb shell monkey -p com.tencent.qqmusic -s 111 -v -v -v --throttle 500 200 
    
  • 随机延迟

    --randomize-throttle
    ## 以下我们的延迟就会在0-500毫秒之间随机延迟
    adb shell monkey -p com.tencent.qqmusic -s 111 -v -v -v --throttle 500 --randomize-throttle 200 
    
  • 黑白名单

    ## 将想要测试的应用添加到白名单中,然后使用白名单对想要测试的应用进行测试
    1、把需要设置的包名写到一个文本文件中,记得路径和文档名称最好是英文,每个应用使用换行区分开
    2、把这个文件拉倒你的安卓手机中的/data/local/tmp目录下
    --pkg-whitelist-file 白名单
    ## 执行白名单测试
    ## tmp是手机的临时缓存目录
    abd shell monkey --pkg-whitelist-file /data/local/tmp/文件名 100
    
    --pkg-blacklist-file 黑名单
    ## 执行黑名单测试
    abd shell monkey --pkg-blacklist-file /data/local/tmp/文件名 100
    
  • 百分比测试

    ## 详细见下面命令选项参考表格
    ## 命令格式--pct-roation
    adb shell monkey {+事件参数} 事件次数
    ## 比如我们要测试QQ音乐让他的旋转事件占比达到10%
    adb shell monkey -p com.tencent.qqmusic --pct-roation 10 100
    
  • 命令选项参考

    下表列出了可以在 Monkey 命令行中添加的所有选项。

选项说明
--help输出简单的使用指南。
-v命令行上的每个 -v 都会增加详细程度级别。level 0(默认值)只提供启动通知、测试完成和最终结果。level 1 提供有关测试在运行时(例如发送到您的 Activity 的各个事件)的更多详细信息。level 2 提供更详细的设置信息,例如已选择或未选择用于测试的 Activity。
-s伪随机数生成器的种子值。如果您使用相同的种子值重新运行 Monkey,它将会生成相同的事件序列。
--throttle 在事件之间插入固定的延迟时间。您可以使用此选项减慢 Monkey 速度。如果未指定,则没有延迟,系统会尽快地生成事件。
--pct-touch 调整轻触事件所占百分比。(轻触事件是指屏幕上的单个位置上的按下/释放事件。)
--pct-motion 调整动作事件所占百分比。(动作事件包括屏幕上某个位置的按下事件,一系列伪随机动作和一个释放事件。)
--pct-roation调整旋转事件所占百分比(手机旋转横屏竖屏)
--pct-trackball 调整轨迹球事件所占百分比。(轨迹球事件包括一个或多个随机动作,有时后跟点击,现在大部分新款手机基本没有轨迹球了。)
--pct-nav 调整“基本”导航事件所占百分比。(导航事件包括向上/向下/向左/向右,作为方向输入设备的输入,不常用。)
--pct-majornav 调整“主要”导航事件所占百分比。(这些导航事件通常会导致界面中的操作,例如 5 方向键的中间按钮、返回键或菜单键。)
--pct-syskeys 调整“系统”按键事件所占百分比。(这些按键通常预留供系统使用,例如“主屏幕”、“返回”、“发起通话”、“结束通话”或“音量控件”。)
--pct-appswitch 调整 Activity 启动次数所占百分比。Monkey 会以随机间隔发起 startActivity() 调用,以最大限度地覆盖软件包中的所有 Activity(app切换)。
--pct-flip调整键盘唤出隐藏的百分比
--pct-anyevent 调整其他类型事件所占百分比。这包括所有其他类型的事件,例如按键、设备上的其他不太常用的按钮等等。
-p 如果您通过这种方式指定一个或多个软件包,Monkey 将仅允许系统访问这些软件包内的 Activity。如果应用需要访问其他软件包中的 Activity(例如选择联系人),您还需要指定这些软件包。如果您未指定任何软件包,Monkey 将允许系统启动所有软件包中的 Activity。要指定多个软件包,请多次使用 -p 选项 - 每个软件包对应一个 -p 选项。
-c 如果您通过这种方式指定一个或多个类别,Monkey 将仅允许系统访问其中一个指定类别中所列的 Activity。如果您没有指定任何类别,Monkey 会选择 Intent.CATEGORY_LAUNCHER 或 Intent.CATEGORY_MONKEY 类别所列的 Activity。要指定多个类别,请多次使用 -c 选项 - 每个类别对应一个 -c 选项。
–dbg-no-events指定后,Monkey 将初始启动到测试 Activity,但不会生成任何其他事件。为了获得最佳结果,请结合使用 -v、一个或多个软件包约束条件以及非零限制,以使 Monkey 运行 30 秒或更长时间。这提供了一个环境,您可以在其中监控应用调用的软件包转换操作。
--hprof如果设置此选项,此选项将在 Monkey 事件序列之前和之后立即生成分析报告。这将在 data/misc 下生成大型(约为 5Mb)文件,因此请谨慎使用。要了解如何分析性能分析报告,请参阅分析应用性能
--ignore-crashes通常,当应用崩溃或遇到任何类型的未处理异常时,Monkey 将会停止。如果您指定此选项,Monkey 会继续向系统发送事件,直到计数完成为止。
--ignore-timeouts通常情况下,如果应用遇到任何类型的超时错误(例如“应用无响应”对话框),Monkey 将会停止。如果您指定此选项,Monkey 会继续向系统发送事件,直到计数完成为止。
--ignore-security-exceptions通常情况下,如果应用遇到任何类型的权限错误(例如,如果它尝试启动需要特定权限的 Activity),Monkey 将会停止。如果您指定此选项,Monkey 会继续向系统发送事件,直到计数完成为止。
--kill-process-after-error通常情况下,当 Monkey 因出错而停止运行时,出现故障的应用将保持运行状态。设置此选项后,它将会指示系统停止发生错误的进程。注意,在正常(成功)完成情况下,已启动的进程不会停止,并且设备仅会处于最终事件之后的最后状态。
--monitor-native-crashes监视并报告 Android 系统原生代码中发生的崩溃。如果设置了 --kill-process-after-error,系统将会停止。
--wait-dbg阻止 Monkey 执行,直到为其连接了调试程序。
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值