monkey测试

monkey特征:

  1. 随机测试,不带任何主观性(不能指定操作测试场景)
  2. 只能安卓使用,iOS不适用(安卓系统自带的工具,iOS没有)
  3. 模拟用户操作(比如:点击,输入,滑动,及系统命令(截图,声音......))

使用场景:

                  在功能性测完后,保证应用程序的健壮性和稳定性

                  开发人员可以结合monkey打印的日志和系统打印的日志,发现测试种出现的问题

monkey介入阶段:

  1. 功能基本稳定
  2. 项目验收前
  3. 最后一轮测试的回归前

(长期测试,开发初期不适用)

        

环境:

需要下载的工具:Android SDK

链接:AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载

 

下载后解压,并配置环境变量,怎么配置环境变量,可以网上百度,有很多(直接搜索Android SDK环境配置)

配置成功后:adb会出现adb版本

 如果出现:不是内部命令之类的提示,说明没有配置好环境变量

monkey使用:

adb shell monkey(打印monkey的用法)

 相关参数:

        -p:指定包名

        -s:指定seed值

        -v:打印日志

        --pct-touch:设置触摸事件百分比

        ......

示例:

        

指定应用随机操作:-p

        获取当前应用的包名:adb shell dumpsys window w|findstr \/|findstr name=

        指定应用随机操作:adb shell monkey -p 包名 100

         指定两个应用随机操作:adb shell monkey -p 包名 -p 包名 100

 打印monkey操作日志:-v(-v:日志;-v -v:详细日志;-v -v -v:非常详细日志)

        打印谷歌浏览器monkey100条命令的操作日志:adb shell monkey -p 包名  -v 100

           可以指定seed值:adb shell monkey -s 12345 -p 包名 -v 100

         事件执行百分比

 monkey 事件:
         0.触摸事件:--pct-touch
         1.手势事件:--pct-motion
         2.二指缩放事件:--pct-pinchzoom
         3.轨迹事件:--pct-trackball
         4.屏幕旋转事件:--pct-rotation
         5.运行时权限开关事件(新增事件):--pct-permission
         6.基本导航事件:--pct-nav
         7.主要导航事件:--pct-majornav
         8.系统按键事件:--pct-syskeys
         9.启动Activity事件:--pct-appswitch
         10.键盘事件:--pct-flip
         11.其他类型事件:--pct-anyevent

可以根据应用场景设置事件占比(场景:比如游戏,触摸占比较高,可以设置触摸事件占比多一些)

adb shell monkey -s 12345 -p 包名 -v --pct-touch 60 100(触摸事件占比60%)

 

 有时候会在执行20条命令后遇到崩溃,删除的场景,命令就会卡在这,如果还想执行剩下的命令,就需要设置遇到此场景,跳过,执行后面的命令

这里不详细讲了(附上一个链接,这个博主有详细讲解):monkey工具介绍及用法 - 唐三通 - 博客园 (cnblogs.com)https://www.cnblogs.com/JcHome/p/8280116.html

示例:

        adb shell monkey --ignore-crashes -p com.xxx.xxx 5000

设置等待时间:

        adb shell monkey -s 12345 -p 包名 -v --pct-touch 60 --throttle 300 100

分析log

        正常的log末尾提示:Monkey finished

 异常log,比如崩溃,闪退,提示:monkey aborted due to error.

 

无响应

 

 

参考这个博主写的adb命令:

(4条消息) 测试工作中常使用的adb+monkey命令以及logcat日志分析_@流浪地球的博客-CSDN博客_adb monkey 日志分析https://blog.csdn.net/qq646642124/article/details/94990422

adb安卓monkey测试及log日志分析,可以查看这个博主写的:(4条消息) adb 安卓monkey测试以及log日志分析_shawn xie123的博客-CSDN博客_monkey跑10​​​​​​万次要多久hhttps://blog.csdn.net/xiezhiming1234/article/details/82121232

monkey测试常被问道的问题:

  1. monkey测试怎么做?
  2. monkey是针对什么测试?
  3. monkey测试哪些事件?
    1.参考:
        简单答案:就是一条命令(很简单)
        其他答案:连接手机-使用adb shell monkey命令执行操作,当然可以根据需求,设置指定的参数,比如指定设备,执行app包,显示日志,指定seed(随机数种子)等等,执行100或者1000条命令
    
    2.参考:
        monkey是针对应用的稳定性、健壮性测试
    3.参考:
        monkey不能指定事件,它是随机操作的,不能指定它操作场景,但是可以设置事件执行百分比,monkey有12个事件,可以根据app的需求,设置触摸事件百分比或者其他事件百分比,执行后看app有没有crash或者anr发生

打印日志文件

先在D盘中建立文件夹,例如:monkey_log,然后输入下方的命令

示例:adb shell monkey -p 应用程序包名 -s 124535 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 >D:\monkey_log\java_monkey_log.txt

 

adb shell monkey -p 应用程序包名 -s 124535 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v --throttle 500 10000 >D:\monkey_log\java_monkey_log.txt

说明:monkey作用包:应用程序包名

产生时间的序列的种子值:124535

指定send值、忽略程序崩溃忽略超时监视本地程序崩溃详细信息级别是2每条命令等待500毫秒产生10000个随机事件

测试结果分析(关键词搜索):

  1. ANR问题(程序无响应):在日志中搜索“ANR"(application no response)
  2. 闪退问题:在日志中搜索"crash"
  3. 异常:搜索"exception"
  4. 强制退出:搜索"force closed"
  5. error、timeout

建议:测试某app时,杀掉其他应用进程

提示:

1、:Sending Flip keyboardOpen=false
Got IOException performing flipjava.io.FileNotFoundException: /dev/input/event0: open failed: EACCES (Permission denied)
    // Injection Failed(这些可能是monkey自己报错,不用管)

2、一般,0 CRASH,  0 ANR 是测试标准

3、执行失败输入的相应结果

// 显示Monkey 执行失败
** Monkey aborted due to error.
// 执行的事件数量
Events injected: 8
// 旋转的角度为0
:Sending rotation degree=0, persist=false
// 丢失的事件数量,按键0,提示0,轨迹球0,翻转0,旋转0
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
// 网络状态,移动网络 0ms,Wi-Fi 0ms,无网 405ms
## Network stats: elapsed time=405ms (0ms mobile, 0ms wifi, 405ms not connected)
// 提示在执行到第8 个事件时出现Crash ,以及所使用的随机种子值
** System appears to have crashed at event 8 of 10 using seed 1454215444564

4、crash分析

需要详细的日志分析可以看看这位大佬的分享

(20条消息) monkey日志分析详解_EmprOr的博客-CSDN博客_monkey日志分析https://blog.csdn.net/EmprOr/article/details/117299534

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值