目录
一、为什么要做monkey测试
背景:随着移动互联网的崛起,越来越多的APP进入我们的生活,如微信、抖音、淘宝等,这些常用APP一般用户量比较大、在线时间较长,如抖音日活量8亿,在线时间平均3小时起步,所以在测试APP的过程中,我们除了要考虑功能的准确性,兼容性等外,还需要考虑到APP的稳定性。市面上,一般采用monkey工具来测试Android APP的稳定性,iOS的稳定性一般由开源社区提供iOSmonkey 来测试稳定性。
monkey测试时间节点: APP功能基本稳定,在预发布和验收之前
常用工具:****monkey 、Python 、git、gitlab、Jenkins
二、什么是monkey测试
monkey测试Android自动化的一种手段,monkey本身十分简单,就是用使用脚本去模拟用户一系列常用操作,如设置屏幕亮度、调节声音、滑动、手势输入等等,整个过程是伪随机的,随机体现在动作的随机,伪表示可通过 -s 即seed值来重现上一次的操作过程。
三、monkey测试环境准备
一、环境准备
安装 jdk1.8,并添加到path
安装 Android SDK ,并添加到path
验证环境是否安装成功:
jdk :
SDK:
如果如上述一样,显示对应的版本号SDK和jdk 安装成功
二、连接设备
手机 :
- 使用数据线连接手机
- 打开手机开发者模式,打开USB调试功能
- 在DOS窗口输入adb devices ,若出现设备号,则表示连接成功
模拟器:
- 打开模拟器
- DOS窗口输入命令:adb connect IP:port,如adb connect 127.0.0.1:7555
- 在DOS窗口输入adb devices ,若出现设备号,则表示连接成功
以模拟器举个栗子:
PS:模拟器端口不知道的可以去官网查看,真机连接后,直接用adb devices 即可
四、monkey测试怎么做
一、monkey常用命令
查看monkey参数 adb shell monkey
C:\Users\zyd>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
C:\Users\zyd>
对整机进行200次事件操作:adb shell monkey 200
- p 指定应用包名:adb shvell monkey -p com.xueqiu.android 1000
- ignore-crashes :忽略崩溃
在脚本运行过程中,一般遇到崩溃,monkey就会终止,加上忽略参数,就可以让脚本正常运行,并记录下崩溃时间与详细原因。
- ignore-timeouts:忽略超时
忽略脚本过程中应为超时导致的问题
- ignore-security-exceptions :忽略安全证书问题
忽略脚本过程中应为安全证书问题导致的问题
- v 指定日志等级:adb shell monkey -p com.xueqiu.android -v 1000
最低等级为 -v
最高等级为 -v -v -v
由于日志的量比较大,一般都会采用重定向去输出日志信息
- s 指定seed值:adb shell monkey -p com.xueqiu.android -s 1235 1000
seed值又称为序列值,或者种子值,常用来复现问题,果两次的seed一样,那么表示脚本模拟的动作顺序是一样的,但是不保证操作的对象是一样的。
-throttle MILLISEC 延迟时间
事件与事件之间的间隔时间,工作中一般是450ms
工作中的事件数:30w次,延迟时间:450ms ,脚本执行时间8-10小时
五、结果分析:
// Monkey finished 表示monkey测试结束
失败的常见原因:
通过对日志进行关键字搜索查看bug
1.crash奔溃
crash 提交bug时,添加logcat日志即可。
2.ANR 无响应
ANR提交bug时,adb shell 、data/anr/traces.txt,需要提交traces.txt文件。
monkey异常中断
- 手机异常关机
- 手机异常重启
- 手机CPU温度异常等等
bug提交
标题:【monkey】【crash/重启/…】APP在执行monkey测试发生crash/重启/…
复现步骤:
- 环境
- 命令
- 查看结果
预期结果: monkey执行无异常
实际结果: monkey执行过程中出现crash
根据关键字 分析logcat日志,如 ANR/fatal/reboot/OOM/exception
# 重定向下载logcat日志
adb logcat -v time>E:\APPLOG\logcat.txt
adb shell monkey -p com.xueqiu.android - 300
六、完整的monkey脚本:
adb shell monkey --throttle 450 --ignore-security-exceptions --ignore-crashes --ignore-timeouts -v -v -v -p com.xueqiu.android 200>E:\APPLOG\logcat.txt
logcat文件如下:
版权归原作者 张三♞ 所有, 如有侵权,请联系我们删除。