51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 827|回复: 1
打印 上一主题 下一主题

如何使用monkey进行稳定性测试(全过程)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-8 16:22:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 草帽路飞UU 于 2022-8-12 15:43 编辑

一、安装monkey环境
  下载AndroidSDK环境和环境变量(需要先安装java环境)。
  配置环境教程:https://www.jianshu.com/p/c3e1fe6f61c4
  安卓设备(真机/模拟器)。
  二、连接设备
  1.手机打开USB调试模式
  2.cmd命令行输入 adb devices

这样显示则是连接成功了
  4.连接信息解释:
  1)手机设备:显示设备的序列号,如图的b2355f8a
  2)模拟器:显示ip地址和端口,如127.0.0.1:8888
  3)device:已识别的设备,连接成功(这种情况即连接成功)
  4)unauthorized:没有授权,需要手机上授权后才能链接(手机授权一下解决)
  5)unkown:未识别的设备(电脑按照驱动)
  6)offine:离线设备(设备和电脑断开连接了)
  三、monkey的一些命令
  1.adb shell monkey:查看所有支持的monkey命令。
  2.adb shell monkey 100:随机发送100次操作(针对整个手机),count指事件,100即100次事件。
  3.monkey命令-事件间隔。
  1)adb shell monkey --throttle 1000 10:发送10个事件,1秒一个。1000指1000毫秒,10指10次,即一秒一次,一共10次,throttle用来控制事件发送频率。
  2)adb shell monkey --throttle 6000 10:发送10个事件,持续时间一分钟。
  4.monkey命令-指定包运行。
  1)-p<allowed-package-name>此参数指定了一个包,monkey将至允许系统启动这些包里的activity;
  2)查询指定包名:
  · adb shell dumpsys window w | findstr \/ | findstr name= 打开指定的APP在输入这个指令可以找到指定包的报名(建议用这种,手机上安装的app比较多的时候不好找)。
  · adb shell pm list package -3 (查看手机上安装的第三方安装包)。
  · adb shell pm list packages:找到手机所有包名。
  · -p<allowed-package-name1> -p<allowed-package-name2> 如果此参数指定了几个包,monkey将只允许系统启动这些包里的activity。
  · 举例:
  (1)先在手机打卡淘宝输入adb shell dumpsys window w | findstr \/ | findstr name= 找到淘宝的包名。

(2)adb shell monkey -p com.taobao.taobao --throttle 500 50 跑淘宝这个程序,50次,500毫秒一次(根据实际可随意调整参数)。

(3)这样就算是跑起来了,会看的淘宝app自己在乱跳。
四、monkey命令-日志设置
  1.-v level0 除启动提示,测试完成和最终结果之外,提供较少信息。
  2.-v-v level1 提供较为详细的测试信息,如逐个发送到activity的时间。
  3.-v-v-v level2 提供最详细的设置信息,如测试中被选中的或者未被选中的activity。
  4.例如:对淘宝每秒一次操作,一共50次,日志级别为-v级别 adb shell monkey -p com.taobao.taobao --throttle 1000 -v 50。


5.将日志导出到本地,在后面加上路径即可 如:adb shell monkey -p com.taobao.taobao --throttle 1000 -v 50>C:\Users\Desktop\monkeylog\log1

五、monkey命令-seed值,复现和验证bug
  1.seed 用来标记事件顺序(在日志里面找这个值,上两张图有标记seed值在哪)。
  2.出现异常-复现异常(用monkey如何复现)-提交bug-解决bug-验证bug(如何用monkey验证)。
  3.命令里面输入seed值,就会再执行一次这个seed值对应的操作,可以根据两次的日志来判断两次执行的内容是否一致,如:adb shell monkey -p com.taobao.taobao -s 1610217413865 --throttle 1000 -v-v-v 50>C:\Users\Desktop\monkeylog\log4

六、monkey命令-调试
  1.monkey运行过程中,我们可以通过结束进程的方式来终止monkey的执行,在运行过程中遇到异常奔溃等清除monkey会停止。未来确保执行的时间数执行完整,我们可以通过调试的选项设置来防止在运行过程中monkey命令提前结束。
  2.跑到一半关掉app进程/手机关机都可以终止。
  3.--ignore-carshes 忽略在应用程序出现crash崩溃导致的monkey停止。
  4.--ignore-timeouts 忽略在应用程序出现ANR程序无响应的问题导致monkey停止。
  5.--ignore-security-exceptions 忽略应用程序安全证书发生许可错误时导致monkey停止。
  6.例如:对淘宝进行稳定性测试,执行50次时间,忽略过程中遇到的异常,直到50次事件完成    adb shell monkey -p com.taobao.taobao --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v-v-v 50>C:\Users\Desktop\monkeylog\log55‘’


七、控制事件比例
  --pct-touch:触摸事件
  --pct-trackball:轨迹事件(滑动)
  --pct-motion:动作事件(手势)
  --pcy-nav:基本导航事件
  --pct-appswitch:启动activity事件
  --pct-majornav:主要导航事件
  --pct-ratation:屏幕选择事件
  --pct-syskeys:“系统”按键事件,如关机,音量,返回键
  具体的时间比例根据实际的项目来。
  例如跑淘宝的过程中,轨迹球事件占30%,触摸事件占30%:adb shell monkey -p com.taobao.taobao --throttle 1000 --pct-touch 30 --pct-trackball 30 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v-v-v 50>C:\Users\Desktop\monkeylog\log55
  设置了比例后就发现各个类型的事件比例不一样了。

八、分析错误日志
  1.在日志中找有哪些错误(ANR,crash,exception,timeout),出现几次。
  2.找到错误后再定位哪些app或者事件出错。
  3.提交bug,并附上日志信息。
  4.开发修复bug后,进行回归验证,使用之前的命令再执行一遍,注意seed值要一样。
  5.实在不会就把日志发给开发,让他们自己分析吧。
  (1)ANR问题(程序无响应):在日志中搜索“ANR"(application no response)
  (2)闪退问题:在日志中搜索"crash"
  (3)异常:搜索"exception"
  (4)强制退出:搜索"force closed"

















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-24 14:05 , Processed in 0.066957 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表