前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >app测试之Monkey-随机事件测试

app测试之Monkey-随机事件测试

作者头像
找Bug
发布2022-07-22 15:19:26
7870
发布2022-07-22 15:19:26
举报
文章被收录于专栏:你的Bug我做主

Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击、滑动、Application切换、横竖屏、应用关闭)实现对正在开发的应用程序进行压力测试。monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法,只针对Activity做测试,不能对Service做测试。

一、Monkey 命令基本参数介绍

1、–help : 列出简单的用法

代码语言:javascript
复制
adb shell monkey -help

2、指定应用命令-p,允许启动的app包名

比如先启动计算器:adb shell pm list package -3(找到打开的包)

adb shell monkey -p com.lilysgame.calculatorjw 1000(随机点击1000次)

如不加-p参数,也就是不指定包,随机点击app,所有的app都有可能启动并执行

adb shell monkey 1000

3、-v : 操作日志记录

命令行的每一个-v将增加反馈信息的级别。

  • -v:Level 0(缺省值)除 启动提示、测试完成和最终结果之外,提供较少信息。
  • -v -v :Level 1提供较为详细的测试信息,如逐个发送到Activity的 事件。
  • -v -v -v :Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。

例:

adb shell monkey -p com.lilysgame.calculatorjw -v 1000

4、-s种子数

指定了相同的种子数,那么这两次monkey运行所发送的事件类型和顺序就是一样的

作用:做了一次monkey测试,出现了一个bug要复现。指定和上一次相同的种子数,再运行一遍

-s后边可以是任意的数字或字母

例:

adb shell monkey -p com.lilysgame.calculatorjw -v 100

adb shell monkey -p com.lilysgame.calculatorjw -v -s 1646799424729 100

5、--throttle :插入固定延迟,事件的间隔数

在事件之间插入固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被执行。

  • 案例:随机执行 100 个事件,每个事件之间延迟 500 毫秒被执行。

例:

adb shell monkey -p com.lilysgame.calculatorjw --throttle 500 -v 100

6、调整触摸事件百分比

触摸事件不单单是按键,它泛指发生在某一位置的一个down-up事件。

#调整触摸事件百分比为80%

例:

adb shell monkey -p com.lilysgame.calculatorjw --pct-touch 80 -v 100

7、调整手势事件百分比(滑动)

#调整手势占比为100%

例:

adb shell monkey -p com.lilysgame.calculatorjw --pct-motion 100 -v 100

8、调整屏幕旋转事件百分比

--pct-rotation 后面接屏幕旋转事件的比例值。

例:

adb shell monkey -p com.lilysgame.calculatorjw --pct-rotation 50 -v 100

9、调整应用启动事件的百分比

如果你希望调整应用启动事件的百分比。

--pct-appswitch:后面接应用启动事件百分比。

例:

adb shell monkey -p com.lilysgame.calculatorjw --pct-appswitch 50 -v 100

10、--ignore-crashes : 忽略操作是崩溃异常

通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

adb shell monkey -p com.lilysgame.calculatorjw --ignore-

crashes -v 100

11、--ignore-timeouts :忽略超时

通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

adb shell monkey -p com.lilysgame.calculatorjw --ignore-

timeouts -v 100

12、--ignore-security-exceptions :忽略程序发生许可异常

通常,当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

adb shell monkey -p com.lilysgame.calculatorjw --ignore-

security-exceptions -v 100

常见的app测试的问题

crash问题崩溃,可通过日志查看

ANR问题,应用程序不响应

exception问题

二、Monkey随机测试实战

1、测试案例

对QQ进行随机测试,测试希望通过Monkey来模拟用户的随机操作,检查被测应用是否会出现异常(应用崩溃或者无响应)。

2、需求分析

这个测试的目的是希望模拟用户操作,因此需要让Monkey执行的事件尽可能地接近用户的常规操作,这样才可以最大限度地发现用户使用过程中可能出现的问题。

  • 测试是指定应用,因此需要使用-p指定被测app包名:com.tencent.mobileqq
  • 触摸事件和手势事件是用户最常见的操作,所以通过--pct-touch和--pct-motion将这两个事件的占比调整到40%与25%;
  • 目标应用包含了多个Activity,为了能覆盖大部分的Activity,所以通过--pct-appswitch将Activity切换的事件占比调整到10%;
  • 被测应用在测试中出现过不少横竖屏之间切换的问题,这个场景也必须关注,因此通过--pct-rotation把横竖屏切换事件调整到10%;
  • 使用-s参数来指定命令执行的seed值 Monkey会根据seed值来生成对应事件流,同一个seed生成的事件流是完全相同的。这里指定了seed值,是为了测试发现问题时,便于进行问题复现。
  • 使用--throttle参数来控制Monkey每个操作之间的时间间隔,一方面是希望能更接近用户的操作场景,正常用户操作都会有一定的时间间隔;另一方面也是不希望因为过于频繁的操作而导致系统崩溃,尤其是在比较低端的手机上执行测试时。因此通过--throttle设置Monkey每个操作固定延迟0.4秒;
  • 使用--ignore-crashes和--ignore-timeouts参数使Monkey遇到意外时能继续执行,在执行Monkey测试时,会因为应用的崩溃或没有响应而意外终止,所以需要在命令中增加限制参数--ignore-crash和--ignore-timeouts,让Monkey在遇到崩溃或没有响应的时候,能在日志中记录相关信息,并继续执行后续的测试;
  • 使用-v指定log的详细级别Monkey的日志输出有3个级别:日志的级别越高,其详细程度也越高。为了方便问题的定位,这里将日志设为 -v -v。

3、monkey指令

例:

adb shell monkey -p com.tencent.mobileqq --throttle 400 --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 --ignore-crashes --ignore-timeouts -v -v 200

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 找Bug 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Monkey 命令基本参数介绍
  • 二、Monkey随机测试实战
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档