稳定性测试工具-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

2seed值,第一次运行可以不设置,设置目的:产生相同的序列,因上次运行后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 -v1级)

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(异常)、androidruntimeout of memorynull pointer,若存在,则说明发生异常,需要提交开发来核查。

2)打开日志文件,查找关键字:Finished,若存在,则证明Monkey正常结束。

 

4. 若需核查,需提交给开发的内容

(1)Monkey的测试报告;

(2)被测设备的信息。


三、Monkey的简介


Monkey 是Android SDK自带的命令行测试工具,通过向设备发送伪随机事件流(如:模拟用户触摸屏幕、滑动Trackball、按键等),对应用程序进行稳定性、健壮性测试。开发人员结合Monkey打印的日志和系统打印的日志,解决测试中出现的问题。


四、Monkey命令及常用参数


   1. 基本语法

        adb  shel l  monkey  [options]  <event-count>

          如果不指定optionsMonkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。

          如: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 用于在事件之间插入随机延迟,随机延迟范围为0throttle设置的时间,单位:毫秒。

      举例:adb shell monkey -p 包名 --throttle 500 --randomize-throttle 100

7Monkey百分比事件对应的参数:  

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的主要内容,如果未能解决你的问题,请参考以下文章

使用Monkey对apk做稳定性测试

monkey+adb命令 稳定性测试

稳定性测试工具-Monkey

基于Monkey的稳定性测试

monkey 稳定性测试

android稳定性测试