稳定性测试工具-Monkey
Posted 法宣技术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了稳定性测试工具-Monkey相关的知识,希望对你有一定的参考价值。
前言
近期测试的项目中,设备端安装的APP,使用过程中,出现过:1.视频时间大于10分钟后,APP出现卡死情况;2.APP打开使用过程中,频繁弹出停止应用弹框,导致APP崩溃。所以为了尽早暴露这些问题,本文来给大家讲解一下稳定性测试工具-Monkey。
一、环境搭建及前期准备
1. 下载androidSDK
2. 配置Android环境变量
(1)添加环境变量Android_HOME,值是Android SDK的路径;
(2)Android SDK下的platform-tools路径和tools路径添加到环境变量Path(%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;)
3. 获取待测包名
(1)查看设备上所有的第三方应用的包名,从中找到要测试的包名
命令:adb shell pm list package -3
(2)根据待测包的本地路径,获取正确包名
命令:aapt dump badging 待测包完整路径
4. 连接设备
命令:adb devices
二、Monkey使用实例
1. 执行Monkey命令:
adb shell monkey -p package.name -s 1000 --pct-touch 30 --pct-motion 25 --pct-appswitch 25 --pct-nav 10 --pct-majornav 5 --throttle 1000 --monitor-native-crashes -v -v 100000 >打印日志保存的完成路径(本机路径)
实际测试中,需要根据待测包的实际使用情况, 确定命令中使用的具体参数。
本命令中参数设置思路:
(1)仅测试一个APP,故:设置参数 -p package.name
(2)seed值,第一次运行可以不设置,设置目的:产生相同的序列,因上次运行后seed值是1000,为了复现问题,故:设置参数 -s 1000
(3)待测APP,常用操作:点触、滑动、系统按键(返回、HOME等)、键盘;
故:设置参数 --pct-touch 30 --pct-motion 25 --pct-appswitch 25 --pct-majornav 20
点触事件占30%,手势事件占比25%,Activity跳转事件占比25%,j基本导航时间占比10%,主导航事件占比10% 。
(4)设置各个操作的时延,可以根据实际点触使用时长设置;
故:设置参数 --throttle 1000(将时延设置成1000毫秒)
(5)测试过程中,发生过本地代码导致的崩溃行为;
故:设置参数 --monitor-native-crashes
(6)打印的日志等级,根据需要设置,故:参数设置 -v -v(1级)
(7)随机事件数,根据实际需要设置此数值,故:设置为 100000
(8)因测试目的是暴露APP崩溃或超时等问题,故未设置调试选项,如:--ignore-crashes、--ignore-timeouts 等。
2. Monkey运行中停止类型
(1)自动停止
A.正常停止
命令中设置的随机事件数执行完成,正常停止,报告中可以搜索到关键字:Finished。
B. 异常停止
1)如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。
2)如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。
3)如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。
(2)手动停止
如果想中途暂停Monkey命令的执行,可以用如下命令:
1)输入:adb shell, 进入shell模式;
2)输入:ps | grep monkey,查看monkey的进程号;
3)输入:kill -9 进程号;
4)输入:exit,退出shell模式。
3. 报告分析
(1)打开日志文件,查找关键字:ANR(程序无响应)、CRASH(崩溃)、Exception(异常)、androidruntime、out of memory、null pointer,若存在,则说明发生异常,需要提交开发来核查。
(2)打开日志文件,查找关键字:Finished,若存在,则证明Monkey正常结束。
4. 若需核查,需提交给开发的内容
(1)Monkey的测试报告;
(2)被测设备的信息。
三、Monkey的简介
Monkey 是Android SDK自带的命令行测试工具,通过向设备发送伪随机事件流(如:模拟用户触摸屏幕、滑动Trackball、按键等),对应用程序进行稳定性、健壮性测试。开发人员结合Monkey打印的日志和系统打印的日志,解决测试中出现的问题。
四、Monkey命令及常用参数
1. 基本语法
adb shel l monkey [options] <event-count>
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。
如:adb shell monkey -p 具体包名 -v 500,意思是:对指定的包名(APP),并向发送500个伪随机事件。
2. 常用参数
(1)-help 查看Monkey的用法。
命令:adb shell monkey -help。
(2)-p 用于约束,用此参数指定一个或多个包。指定之后,Monkey将只允许系统指定的APP。如果不指定,Monkey将允许系统启动设备中的所有APP。指定多个包,需要使用多个-p。
举例:adb shell monkey -p 包名1 -p 包名2 -v 100
(3)-v 用于指定反馈的信息级别(即:打印的日志的详细程序),总共分3个级别:
-v,日志级别Level0,除启动提示、测试完成和最终结果之外,提供较少信息;
-v -v,日志级别Level1,提供较为详细的测试信息,如逐个发送Activity的事件;
-v -v -v,日志级别Level2,提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。
举例:adb shell monkey -p 包名 -v -v -v 100
(4)-s 用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同。一般测试过程中出现崩溃,可以通过seed值来完成复现。
(5)--throttle <毫秒> 用于指定用户操作(即事件)间的时延,单位:毫秒。
(6)--randomize-throttle 用于在事件之间插入随机延迟,随机延迟范围为0到throttle设置的时间,单位:毫秒。
举例:adb shell monkey -p 包名 --throttle 500 --randomize-throttle 100
(7)Monkey百分比事件对应的参数:
a. 点击事件百分比,参数 --pct-touch <percent>;
b. 滑动事件百分比,参数 --pct-motion <percent>;
c. 缩放事件百分比,参数 --pct-pinchzoom <percent>;
d. 基本导航时间百分比,参数 --pct-nav <percent>;
e. 主要导航事件百分比,参数 --pct-majornav <percent>;
f. 系统按键事件百分比,参数 --pct-syskeys <percent>;
g. 键盘唤出隐藏事件百分比,参数 --pct-filp <percent>;
h. Activity启动事件百分比,参数 --pct-appswitch <percent>;
i. 轨迹球事件百分比,参数 --pct-trackball <percent>;
j. 屏幕旋转事件百分比,参数 --pct-rotation <percent>;
k. 其它事件百分比,参数 --pct-anyevent <percent>;
(8)调试选项
1)--ignore-crashes 忽略异常。
通常,当程序崩溃或失控异常时,Monkey将停止运行。若设置了此选项,Monkey遇到异常不会停止,将继续向待测系统发送事件,直至计数完成。
2)--ignore-timeouts 忽略超时。
通常,当程序发生任何超时错误时,Monkey将停止运行。若设置了此选项,Monkey遇到超时,将继续向待测系统P发送时间,知道计数完成。
3)--ignore-security-exceptions 忽略许可错误。
通常,当程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。若设置了此选项,Monkey将继续向待测系统发送事件,直至计数完成。
4)--kill-process-after-error 发生错误直接杀掉进程。
通常,当Monkey由于一个错误停止时,出错的应用程序依旧是处于运行状态。若设置了此选项,将会通知系统停止运行此进程。
5)--monitor-native-crashes 跟踪本地代码导致的崩溃问题。
6)--wait-dbg 暂停止运行中的Monkey,直到有调试器和它相连接。
举例:adb shell monkey --wait-dgb
相关参考:
https://www.cnblogs.com/chengchengla1990/p/5641086.html
https://www.cnblogs.com/ceshisanren/p/5639876.html
以上是关于稳定性测试工具-Monkey的主要内容,如果未能解决你的问题,请参考以下文章