Monkey测试实例(六)

monkey是Android系统自带一个命令行工具,可以运行在模拟器里或者真是设备中运行。

monkey向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试;程序是一个特定的Android应用程序, 需要指定被测程序的包名。 指定包名后, Monkey会根据包名找到对应的应用, 并启动其main activity, 然后执行Monkey测试,测试希望通过Monkey来模拟用户长时间的随机操作, 检查被测应用是否会出现异常(应用崩溃或者无响应)。

测试脚本:

adb shell monkey -p com.xxx.xxx --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 -s 12358 --throttle 400 --ignore-crashes --ignore-timeouts -v -v -v 500000

备注:测试多个指定程序需要添加多个-p 或者使用白名单的方式;

1.使用–pct-xxx参数限制Monkey执行的事件类型和占比

monkey测试的目的是希望模拟用户操作, 因此需要让Monkey执行的事件尽可能地接近用户的常规操作, 这样才可以最大限度地发现用户使用过程中可能出现的问题。 因此需要对Monkey执行的事件百分比做一些调整。触摸事件和手势事件是用户最常见的操作, 所以通过–pct-touch和–pct-motion将这两个事件的占比调整到40%与25%; 目标应用包含了多个Activity, 为了能覆盖大部分的Activity, 所以通过–pct-appswitch将Activity切换的事件占比调整到10%; 被测应用之前在测试中出现过不少横竖屏之间切换的问题, 这个场景也必须关注, 因此通过–pct-rotation把横竖屏切换事件调整到10%。

2.使用-s参数来指定命令执行的seed值

Monkey会根据seed值来生成对应事件流, 同一个seed生成的事件流是完全相同的。 这里指定了seed值, 是为了测试发现问题时,便于进行问题复现。

3.使用–throttle参数来控制Monkey每个操作之间的时间间隔

指定操作之间的时间间隔, 一方面是希望能更接近用户的操作场景, 正常用户操作都会有一定的时间间隔; 另一方面也是不希望因为过于频繁的操作而导致系统崩溃, 尤其是在比较低端的手机上执行测试时。 因此通过–throttle设置Monkey每个操作固定延迟0.4秒

4.使用–ignore-crash和–ignore-timeouts参数使Monkey遇到意外时能继续执行

在执行Monkey测试时, 会因为应用的崩溃或没有响应而意外终止, 所以需要在命令中增加限制参数–ignore-crash和–ignoretimeouts, 让Monkey在遇到崩溃或没有响应的时候, 能在日志中记录相关信息, 并继续执行后续的测试。

5.使用-v指定log的详细级别

Monkey的日志输出有3个级别: 默认的是-v level 0, -v-v日志级别为level 1, -v-v-v日志级别为level 2。 日志的级别越高, 其详细程度也越高。 为了方便问题的定位, 一般将日志级别设置为level2。

在常规的稳定性测试中, 虽然可以自定义各种事件的操作占比, 但毕竟是随机事件流。 在实际测试过程中, 难免会遇到Monkey点了我们不希望它点击的地方, 比如误点了工具栏导致网络断开的情况等。 当测试过程中Wi-Fi断开时, 是否有可能自动重连呢?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值