• monkey 压测


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

    二、monkey的使用
    monkey:

    adb shell monkey -h

    -p 应用的包名

    adb shell monkey -p com.lilysgame.calculatorjw 100

    -v:用于调控monkey运行日志的等级

    -v:显示开始、事件、结束结果几个数据

    -v -v:提供较为详细的测试信息,如逐个发送到Activity的 事件

    -v -v -v:最详细的日志信息

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

    -s:种子数

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

    常见面试题:做了一次monkey测试,出现一个bug,怎么复现?

    指定和上一次相同的种子数,再运行一遍

    -s 任意的数字或者字母

    adb shell monkey -p com.lilysgame.calculatorjw -v -s 种子数 100 adb shell monkey -p com.lilysgame.calculatorjw -v -s 20220309 100 adb shell monkey -p com.lilysgame.calculatorjw -v -s 20220309 100

    –throttle:指定事件之间的时间间隔

    调整发送事件的频率

    –throttle 毫秒数

    adb shell monkey -p com.lilysgame.calculatorjw -v -s 20220309 --throttle 2000 100

    –pct-touch:调整触摸事件百分比

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

    –pct-touch 整数,其实就是该事件的比例,要求整数不能超过100

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

    adb shell monkey -p com.tencent.mobileqq -v -v --pct-touch 100 200

    –pct-motion:调整手势滑动事件百分比

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

    –pct-motion 整数,其实就是该事件的比例,要求整数不能超过100

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

    adb shell monkey -p com.tencent.mobileqq -v -v --pct-motion 100 200

    –pct-rotation:旋转屏幕事件。

    –pct-rotation 整数,其实就是该事件的比例,要求整数不能超过100

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

    adb shell monkey -p com.tencent.mobileqq -v -v --pct-rotation 100 200

    –pct-appswitch:调整手势滑动事件百分比

    调整app中的activity的切换比例。

    –pct-appswitch 整数,其实就是该事件的比例,要求整数不能超过100

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

    adb shell monkey -p com.tencent.mobileqq -v -v --pct-appswitch 100 200

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

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

    adb shell monkey -p com.tencent.mobileqq –-ignore-crashes -v 1000

    –ignore-timeouts : 忽略超时

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

    adb shell monkey -p com.tencent.mobileqq –-ignore-timeouts -v 1000

    命令中用到了–pct-touch和–pct-motion

    –pct-touch 70: ‘点击’事件占所有事件的70%
    –pct-motion 30: ‘滑动’事件占所有事件的30%
    //两个加起来是100,代表不会进行其他事件操作,如轨迹事件,导航事件等等,指定这两种操作后,就极大的降低了monkey点到被测app外面的概率(触发到音量键等系统按键)
    -p 指定要进行monkey测试的包,如果不使用参数,则会随机选择一个应用进行测试,也可以选中多个测试包一起运行
    -c 指定activity的category类别,可以有多个
    –throttle 设置每个事件结束后延迟多少时间再继续下一个事件,降低cpu压力;如果不设置,事件与事件之间将不会延迟,事件将会尽快生成;一般设置300ms,因为人最快300ms左右一个动作
    -v 指定日志级别 -v level1 -v -v level2 -v -v -v level3,level3会输出最详细的日志信息
    -s 伪随机的事件seed值,可以通过-s参数复现问题,不指定就会随机生成,日志中第一行会有
    –ignore-crashes 忽略异常崩溃
    –ignore-timeouts 忽略ANR(忽略应用无响应错误)
    –ignore-security-exceptions 忽略一些许可错误,比如证书许可,网络许可
    –monitor-native-crashes 监视并报告native(原生程序)层发送的崩溃错误
    –ignore-native-crashes 忽略native(原生程序)层代码的崩溃错误
    –kill-procress-after-error 用于在发送错误后杀死进程
    –hprof 设置后,在Monkey事件序列之前和之后立即生产分析报告,保存于data/mic目录,不过将会生成大量几兆文件,谨慎使用
    –pct-touch 设置触摸事件的百分比,即手指对屏幕进行点击抬起的动作
    例如‘–pct-touch 30%’
    –pct-motion 设置移动(滑动)事件百分比,即点击屏幕,然后直线运动,最后抬起这种运动。
    –pct-trackball 设置轨迹球事件百分比,这种事件类型是一个或者多个随机移动,包含点击事件,这里可以是曲线运动,不过现在手机很多不支持,这个参数不常用
    –pct-syskeys 设置系统物理按键事件百分比,比如home键,音量键,返回键,拨打电话键,挂电话键等
    –pct-nav 设置基本的导航按键事件百分比,比如输入设备上的上下左右四个方向键,不常用
    –ptc-majornav 设置主导航事件的百分比
    –pct-appswitch 设置monkey使用startActivity进行activity跳转事件的百分比,保证界面的覆盖情况
    –pct-flip 键盘(手机键盘)事件主要是一些与键盘相关的操作的百分比。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等,这里主要是键盘的打开和关闭操作
    –ptc-anyevent 设置其它事件百分比
    –pct-pinchzoom 调整缩放事件的百分比

    0:–pct-touch//touch events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件)
    1:–pct-motion//motion events
    
    percentage手势事件百分比(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯
    
    2:–pct-pinchzoom//pinch zoom events percentage二指缩放百分比,即智能机上的放大缩小手势操作
    
    3:–pct-trackball//trackball events
    
    percentage轨迹球事件百分比(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)
    
    4:–pct-rotation//screen rotation events percentage屏幕旋转百分比,横屏竖屏
    
    5:–pct-nav//nav events
    
    percentage”基本”导航事件百分比(导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有
    
    6:–pct-majornav//major nav events
    
    percentage”主要”导航事件百分比(这些导航事件通常会引发UI的事件,例如5-way pad的中间键、回退键、菜单键)
    
    7:–pct-syskeys//system(key) operations
    
    percentage”系统”按钮事件百分比(这些按钮一般专供系统使用,如Home, Back, Start Call, End,Call,音量控制) 
    
    8:–pct-appswitch//app switch events
    
    percentage启动activity事件百分比。在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
    
    9:–pct-flip//keyboard flip
    
    percentage键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回
    
    10:–pct-anyevent//anyevents
    
    percentage其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    测试执行结束后,打开日志最后查看最后5行信息

    Events injected: 50

    //执行事务次数:50次

    Sending rotation degree=0, persist=false

    //对屏幕旋转事件的旋转度数=0,没有执行旋转事务

    Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0

    //丢弃的数据包:键=0,指针=0,轨迹球=0,键盘点击=0,屏幕翻转=0

    #Network stats: elapsed time=71424ms (0ms mobile, 0ms wifi, 71424ms not connected)

    //网络统计信息:运行时间=71424ms(手机 0ms,wifi 0ms,未连接 71424ms)

    // Monkey finished //monkey 测试结束

  • 相关阅读:
    【从零开始的Java开发】2-10-4 Servlet与jsp进阶:请求与响应的结构、请求转发与响应重定向、Cookie
    哪款蓝牙耳机适合学生党?开学季值得买的蓝牙耳机推荐
    Academic Inquiry|创新与城市间知识溢出:社会、地理和技术的连通性和心理开放性
    实现图的遍历
    【蓝桥杯】蓝桥杯双周赛第二场ABCD题
    单精度浮点数和双精度浮点数有什么区别
    无线通信与编码_MATLAB实现Turbo码的仿真_含仿真代码_Dr.WuYufei
    基于RK3568的鸿蒙通行一体机方案项目
    云计算学习8——OpenStack高级运维企业实战竞赛题目
    Starday影响者视频能给你提升80%的流量?
  • 原文地址:https://blog.csdn.net/weixin_52270223/article/details/126096547