Monkey工具--App专项稳定性测试

目录

App稳定性测试

定义

方法

Monkey工具

定义

实现原理

使用步骤

 命令大全

count: 事件数

基本配置选项参数

调试选项

事件类型和频率参数

日志分析

关闭正在运行的Monkey


App稳定性测试

定义

稳定性测试是指软件长时间的持续运行中,系统版本是否稳定,能否持续的为用户提供服务

方法

自动化测试:工具或代码  --Monkey工具随机测试事件    Appium自动化测试代码固定测试事件

人工测试:人工操作

Monkey工具

定义

Monkey向系统发送随机的事件流(如按键输入、触摸屏输入和手势输入等),实现对正在测试的应用程序进行稳定性测试。帮助测试人员更好的模拟用户操作,确保测试App的稳定性

实现原理

通过adb命令调用monkey.shell文件,再执行monkey.jar文件,调用安卓守护进程,在设备上进行随机测试

使用步骤

1.连接设备

2.输入命令 adb shell monkey

 命令大全

usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
              [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
              [--ignore-crashes] [--ignore-timeouts]
              [--ignore-security-exceptions]
              [--monitor-native-crashes] [--ignore-native-crashes]
              [--kill-process-after-error] [--hprof]
              [--pct-touch PERCENT] [--pct-motion PERCENT]
              [--pct-trackball PERCENT] [--pct-syskeys PERCENT]
              [--pct-nav PERCENT] [--pct-majornav PERCENT]
              [--pct-appswitch PERCENT] [--pct-flip PERCENT]
              [--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
              [--pct-permission PERCENT]
              [--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
              [--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
              [--wait-dbg] [--dbg-no-events]
              [--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
              [--port port]
              [-s SEED] [-v [-v] ...]
              [--throttle MILLISEC] [--randomize-throttle]
              [--profile-wait MILLISEC]
              [--device-sleep-time MILLISEC]
              [--randomize-script]
              [--script-log]
              [--bugreport]
              [--periodic-bugreport]
              [--permission-target-system]
              COUNT

2.1 事件数

count: 事件数

测试时间=(事件数*延迟时间)通过事件数来测试稳定性

2.2 选项

基本配置选项参数

如设置只针对单独的一个包进行测试,设置等待时间等

  • -p 
  • --throttle
  • -v
  • -s

-p:ALLOWED_PACKAGE

指定允许进行测试的应用包名,可多次使用该选项指定多个包名。指定包后,Monkey将只允许系统启动指定的APP。如无指定包,Monkey将允许系统启动设备中的所有APP

adb shell monkey -p com.example.app1 -p com.example.app2 100

此命令会对 com.example.app1 和 com.example.app2 这两个应用进行 100 次随机事件测试

--throttle:MILLISEC

这个选项用于设置随机事件之间的延迟时间,单位是毫秒。借助设置延迟时间,你能够控制事件的发送频率,从而模拟出不同的用户操作速度

adb shell monkey --throttle 500 -p com.example.app 200

此命令会向 com.example.app 应用发送 200 个随机事件,并且每个事件之间会间隔 500 毫秒

-v:

该选项用于设置日志的详细级别。-v 可以使用多次,每多使用一次,日志的详细程度就会增加一级。具体分为以下三个级别

-v  Level 0 除启动提示、测试完成和最终结果外,提供较少的信息

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

-v-v-v  Level 2 提供最为详细的设置信息,包含各种调试信息,如测试中被选中和未被选择的Activity

adb shell monkey -v -v -p com.tencent.mobileqq 100 >> D:/logs/logcat.txt

此命令会输出更详细的日志信息,同样向 com.tencent.mobileqq 应用发送 100 个随机事件,最好将日志导出到本地

-s:SEED

在Monkey运行过程中,肯定会发现异常、崩溃、无响应等问题,对于此类问题如何如何进行复现呢?  答:借助-s <seed>

seed为伪随机数生成器生成的值。如果用相同的seed值再次运行Monkey,它将执行相同的事件序列。这在需要重现某个测试场景时非常有用(复现Bug、回归测试)

    调试选项

    • --ignore-crashes                   忽略在应用程序出现crash时导致的monkey停止
    • --ignore--timeouts                 忽略在应用程序出现ANR问题时导致monkey停止
    • --ignore-security-exceptions 忽略应用程序发生许可错误时导致monkey停止
    • --kill-process-after-error      当应用程序发生错误时,应用程序停止运行并保持在当前错误状态

    --ignore-crashes:

    使用 monkey 命令对应用进行测试时,应用可能会因为各种原因(如代码逻辑错误、内存泄漏等)而崩溃。如果使用了 --ignore-crashes 选项,monkey 命令在遇到应用崩溃的情况时,会忽略这个错误,继续向应用发送后续的随机事件,而不会因为崩溃就停止测试

    adb shell monkey --ignore-crashes -p com.example.app 500
    此命令会对 com.example.app 应用发送 500 个随机事件,若应用在测试过程中崩溃,monkey 命令会继续执行后续事件的注入

    --ignore--timeouts

    应用在处理某些复杂操作时,可能会出现无响应(ANR,Application Not Responding)的情况,也就是所谓的超时。当使用 --ignore-timeouts 选项后,monkey 命令在遇到应用无响应的情况时,会忽略这个超时错误,继续向应用发送随机事件,而不是停止测试

    adb shell monkey --ignore-timeouts -p com.example.app 800
    该命令会向 com.example.app 应用发送 800 个随机事件,若应用出现无响应的情况,monkey 命令会继续执行测试。

    --ignore-security-exceptions

    在应用运行过程中,可能会触发一些安全异常,例如权限不足、非法访问等。使用 --ignore-security-exceptions 选项后,monkey 命令在遇到这些安全异常时,会忽略它们,继续向应用发送随机事件,而不是停止测试

    adb shell monkey --ignore-security-exceptions -p com.example.app 600
    此命令会对 com.example.app 应用发送 600 个随机事件,若应用触发了安全异常,monkey 命令会忽略该异常并继续测试

    --kill-process-after-error

    当应用在测试过程中出现错误(如崩溃、超时、安全异常等)时,--kill-process-after-error 选项会让 monkey 命令在检测到错误后,停止应用程序的运行并保持在当前错误状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)

    adb shell monkey --kill-process-after-error -p com.example.app 300
    该命令会向 com.example.app 应用发送 300 个随机事件,若应用在测试过程中出现错误,monkey 命令会杀死该应用的进程

    事件类型和频率参数

    •  --pct-touch PERCENT
    • --pct-motion PERCENT
    • --pct-trackball PERCENT
    • --pct-syskeys PERCENT
    • --pct-nav PERCENT
    • --pct-majornav PERCENT
    • --pct-appswitch PERCENT 
    • --pct-flip PERCENT
    • --pct-anyevent PERCENT
    • --pct-pinchzoom PERCENT
    • --pct-permission PERCENT

    事件名称事件描述
    --pct-touch触摸事件百分比实际操作类似于点击
    --pct-motion滑动事件百分比实际操作是一个没有拐弯的直线滑动操作
    --pct-pinchzoom缩放事件百分比智能手机上的放大缩小手势操作
    --pct-trackball轨迹球事件百分比一系列的曲线滑动操作(目前很少用)
    --pct-rotation手机屏幕在横竖屏之间不断地切换
    --pct-permission权限替换掉了老版本中的 --pct-rotation 屏幕旋转
    --pct-nav基本导航事件百分比设备上、下、左、右键(目前很少用)
    --pct-majornav主要导航事件百分比键盘的中间键、回退按键、菜单按键
    --pct-syskeys系统事件百分比点击 Home 键、返回键、音量调节键等
    --pct-appswitchActivity 启动事件百分比某个页面切换事件
    --pct-flip键盘翻转事件百分比点击输入框、键盘弹起、点击输入框以外区域、键盘收回等
    --pct-anyevent其他事件百分比除了上面的一些其他事件,如按键、其他不常用的设备上的按钮等(目前很少用)

     --pct-touch PERCENT(序号0)

    该参数用于设置触摸事件(如屏幕点击)在所有随机事件中所占的百分比。触摸事件模拟用户用手指点击屏幕上的某个位置

    adb shell monkey --pct-touch 30 -p com.example.app 500
    此命令会向 com.example.app 应用发送 500 个随机事件,其中大约 30%(即 150 个左右)为触摸事件

    --pct-motion PERCENT(序号1)

    用于设置滑动事件的百分比。滑动事件模拟用户在屏幕上进行滑动操作,像上下滑动屏幕浏览内容、左右滑动切换页面等

    adb shell monkey -p com.tencent.mobileqq --pct-motion 40 100
    该命令发送的 100 个随机事件中,约 40%(40 个左右)为滑动事件

    --pct-trackball PERCENT(序号3)

    设置轨迹球事件的百分比。虽然现在很多 Android 设备没有物理轨迹球了,但该参数可模拟类似轨迹球的操作,如在虚拟轨迹球区域的滚动操作

    adb shell monkey --pct-trackball 10 -p com.example.app 500
    意味着 500 个随机事件中约 10%(50 个左右)是轨迹球事件

    --pct-syskeys PERCENT(序号8)

    设置系统按键事件的百分比。系统按键事件包括返回键、菜单键、主页键等系统级按键的操作

    adb shell monkey -p com.example.app --pct-syskeys 15 100
    表示 500 个随机事件中约 15%(75 个左右)为系统按键事件

    --pct-nav PERCENT(序号6)

    设置基本导航事件的百分比。基本导航事件通常指上下左右方向键的操作,用于在应用界面中进行导航

    adb shell monkey --pct-nav 12 -p com.example.app 500
    即 500 个随机事件中约 12%(60 个左右)为基本导航事件

    --pct-majornav PERCENT(序号7)

    设置主要导航事件的百分比。主要导航事件包括确定键、返回键等在应用导航中起关键作用的按键操作

    adb shell monkey --pct-majornav 8 -p com.example.app 500
    说明 500 个随机事件中约 8%(40 个左右)为主要导航事件

    --pct-appswitch PERCENT (序号9)

    设置应用切换事件的百分比。应用切换事件模拟用户在不同应用之间进行切换的操作

    adb shell monkey --pct-appswitch 5 -p com.example.app 500
    表明 500 个随机事件中约 5%(25 个左右)为应用切换事件

    --pct-flip PERCENT(序号10)

    设置键盘翻转事件的百分比。在一些支持物理键盘翻转的设备上,该参数可模拟键盘展开或收起的操作

    adb shell monkey --pct-flip 3 -p com.example.app 500
    表示 500 个随机事件中约 3%(15 个左右)为键盘翻转事件

    --pct-anyevent PERCENT (序号11)

    设置其他类型事件的百分比。当以上特定类型事件都不匹配时,就归为其他类型事件

    adb shell monkey --pct-anyevent 7 -p com.tencent.mobileqq 500
    意味着 500 个随机事件中约 7%(35 个左右)为其他类型事件

    --pct-pinchzoom PERCENT(序号2)

    设置缩放事件的百分比。缩放事件模拟用户在屏幕上进行双指缩放的操作,如放大或缩小图片、地图等

    adb shell monkey --pct-pinchzoom 6 -p com.tencent.mobileqq -v 500
    说明 500 个随机事件中约 6%(30 个左右)为缩放事件

    --pct-permission PERCENT(序号5)

    设置权限请求事件的百分比。权限请求事件模拟应用向用户请求各种权限的操作,如请求访问相机、存储等权限

    adb shell monkey --pct-permission 15 -p com.tencent.mobileqq -v 500
    表示 500 个随机事件中约 4%(20 个左右)为权限请求事件

    日志分析

    经过Monkey测试出现异常后,需要去查看日志信息,检查在运行过程中是否有相应Exception错误出现。如NullPointerException空指针、ClassCastException类型转换异常等

    adb shell monkey -p com.tencent.mobileqq -v 100 >D:\log.txt
    导出日志

    1. 在日志找有哪些错误

    2. 找到错误后再定位是哪些APP或者事件出错

    3. 提交BUG,并附上日志信息

    4. 开发修复BUG后,进行回归测试【设置SEED值】

    常见错误结果

    程序无响应,ANR问题:查找ANR

    崩溃问题:查找CRASH

    其他问题:查找Exception、FATAL

    关闭正在运行的Monkey

    重新打开CMD

    adb shell ps | find "monkey" 查看正在运行monkey进程的pid

    adb shell kill 进程号

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值