Monkey压力测试--用来做稳定性测试

Monkey压力测试

一、什么是Monkey

Monkey是Android SDK附带的一个工具,一个做app压力测试的工具通过某些Linux命令,产生一定数量或一定时间内的随机模拟用户操作的事件, 如点击、按键、手势等, 以及一些系统级别的事件。通常也称随机测试或者稳定性测试。

二、测试环境搭建

安装Android SDK 并配置环境变量即可。可参考:JDKadb/android环境变量配置完整教程 

三、测试步骤

1、本地创建白名单文件,如:whitelist.txt,将包名添加到该文件中

如:com.ubtechinc.cruzr.advert
com.ubtechinc.cruzr.aiui
com.ubtechinc.cruzr.behavior
com.ubtechinc.cruzr.calendar
com.ubtechinc.cruzr.clock
com.ubtechinc.cruzr.coreservices
com.ubtechinc.cruzr.cruzralbum
com.ubtechinc.cruzr.cruzrbootwizard
com.ubtechinc.cruzr.dance
com.ubtechinc.cruzr.freeguide
com.ubtechinc.cruzr.introduce
com.ubtechinc.cruzr.launcher
com.ubtechinc.cruzr.launcher2
com.ubtechinc.cruzr.map
com.ubtechinc.cruzr.music
com.ubtechinc.cruzr.navigation
com.ubtechinc.cruzr.pccontrolstub
com.ubtechinc.cruzr.power
com.ubtechinc.cruzr.servicesupport
com.ubtechinc.cruzr.systemupdate
com.ubtechinc.cruzr.syswarn
com.ubtechinc.cruzr.timer
com.ubtechinc.cruzr.user
com.ubtechinc.cruzr.video
com.ubtechinc.cruzrpowersettings
com.ubtechinc.cruzrrosexceptionstats
com.ubtechinc.settings

2、电脑连接到设备,将测试应用白名单push到Android系统,如:

adb push d:/Monkey/whitelist.txt /mnt/sdcard/data/whitelist.txt

3、登录adb:adb shell

4、调用Monkey命令

monkey --pkg-whitelist-file /mnt/sdcard/data/whitelist.txt -s 101 --pct-touch 70 --pct-motion 20 --pct-trackball 10 --throttle 300 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 50000 |logcat -v time&>/mnt/sdcard/data/monkey_1019.log

 

参数说明:

--pkg-whitelist-file /mnt/sdcard/data/whitelist.txt //测试应用白名单

--s 50 //种子序列,出问题需要用相同种子值进行复现;没测出问题,下次需要重新修改种子值再跑

--pct-touch 70 //触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)

--pct-motion 20 //动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随件机事和一个up事件组成)

--pct-trackball 10 //表示调整轨迹球事件的百分比(轨迹球事件由一个或多个随机移动组成,有时还伴随有点击)

--throttle 300 //毫秒,操作延时

--ignore-crashes //忽略无响应,继续执行

--ignore-timeouts //忽略Crash继续执行

--monitor-native-crashes //用于指定是否监视并报告应用程序发生崩溃的本地代码

--ignore-security-exceptions      //表示当应用程序遇到任何类型的权限错误时,Monkey将停止,例如,如果它尝试启动需要某些权限的活动。如果指定此选项,则Monkey将继续向系统发送事件,直到计数完成

-v 日志等级, 通过-v参数可以指定打印信息的详细级别,多一个-v多一个级别 

级别

表示

描述

0

-v

打印最基本的事件

1

-v-v

更全面的信息,如增加了那些Activity被选中

2

-v-v-v

日志记录最全面的信息 

 

50000 //事件数量

> monkey_1019.log //日志保存本地SD卡

--kill-process-after-error   //当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。当设置了此选项时,将会通知系统停止发生错误的进程。注意,正常的(成功的)结束,并没有停止启动的进程,设备只是在结束事件之后,简单地保持在最后的状态

--monitor-native-crashes     //表示Android系统原生代码中的监视和报告崩溃。如果设置了-kill-process-after-error,系统将停止

--wait-dbg               //表示停止执行中的Monkey,直到有调试器和它相连接

 

tips:

1) 若只跑指定的几个包,可以不设置白名单,直接执行指令(-p部分添加要执行的包):

adb shell

monkey -p com.ubtechinc.cruzr.music -p com.ubtechinc.cruzr.video -s 50 --pct-touch 70 --pct-motion 20 --pct-trackball 10 --throttle 300 --monitor-native-crashes -v -v -v 10000&>/mnt/sdcard/data/ monkey_1019.log

2)不指定应用,跑安卓系统

 adb shell

 monkey -s 68 --pct-touch 70 --pct-motion 20 --pct-trackball 10 --throttle 300 --monitor-native-crashes -v -v -v 50000 &>/sdcard/monkey/ monkey_1019.log

3)指定黑名单,不执行该应用

a. 创建黑名单文件blacklist.txt

b. push黑名单到Android系统:adb push d:/Monkey/whitelist.txt /mnt/sdcard/data/blacklist.txt

c. 执行的时候增加--pkg-whitelist-file /mnt/sdcard/data/ blacklist.txt

四、导出日志及日志分析

1、导出日志到本地:

adb pull /mnt/sdcard/data/ monkey_1019.log E:\Cruzr\Monkey\log\ monkey_1019.log

2、日志分析

1)无响应问题可以在日志中搜索 “ANR”,崩溃问题搜索 “CRASH”, 如果碰到这两类问题,抓取日志同时,需要提供traces.txt,具体存放目录可询问开发

2)内存泄露问题搜索"GC"(需进一步分析),异常问题搜索 “Exception”(如果出现空指针, NullPointerException,需重视) 

 

(Monkey日志内容分析:
一般测试结果分析-搜索关键字:
1.程序无响应,ANR问题:在日志中搜索“ANR”
2.崩溃问题:在日志中搜索“CRASH”
3.其他问题:在日志中搜索”Exception”
4.ForceClosed 和程序异常退出问题:在日志中搜索"Fatal" 
5.搜索“system error”)

五、如何中断测试

1、登录adb :adb shell

2、查看进程号:ps | grep monkey

3、kill掉w进程:kill <进程号>

 

 

 

操作说明:(单独一个文件夹复制过来的,仅供参考)

Cruzr Monkey测试操作说明        monkey --pkg-whitelist-file /mnt/sdcard/monkey/whitelist.txt -s 88 --pct-touch 70 --pct-motion 20 --pct-trackball 10 --throttle 800 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 50000
  
1、将测试应用白名单push到Android系统,如:
    adb push d:/monkey/whitelist.txt /mnt/sdcard/monkey/whitelist.txt
2、登录adb
    adb shell
3、调用Monkey
    monkey --pkg-whitelist-file /mnt/sdcard/monkey/whitelist.txt -s 53 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v -v 100000 &>/mnt/sdcard/monkey/b0f1ecac466e_0806-001.log
    参数说明:
        --pkg-whitelist-file /mnt/sdcard/data/whitelist.txt        //测试应用白名单
        -s 50        //种子序列(不同的随机操作系列),出问题需要用相同种子值进行复现;没测出问题,下次需要重新修改种子值再跑
        --pct-touch 70        //触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)
        --pct-motion 20        //动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随件机事和一个up事件组成)
        --pct-motion 20        “基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)
        --throttle 500        //毫秒,操作延时
        -ignore-crashes        //忽略无响应,继续执行
        --ignore-timeouts        //忽略Crash继续执行
        --monitor-native-crashes        用于指定是否监视并报告应用程序发生崩溃的本地代码
        -v        日志等级
        500000        //事件数量
        
        >>/mnt/sdcard/data/b0f1ecac46a3_0319-001.log        //标准输出日志保存本地SD卡
        &>/mnt/sdcard/data/b0f1ecac46a3_0319-001.log        //标准输出和标准错误输出日志保存到本地SD卡
        -v -v -v 500000 |logcat -v time &>/mnt/sdcard/hly-0414-002.log    //输出日志带时间戳
        
4、导出日志
    adb pull /mnt/sdcard/monkey/b0f1ec8c21b7_0327-001.log d:/Monkey/b0f1ec8c21b7_0327-001.log
    
    
单个应用跑Monkey
    adb shell monkey -p com.ubtechinc.cruzr.timer -s 50 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 500 --monitor-native-crashes -v -v -v 100000>d:/monkey/ test.log
多个应用跑Monkey    
    adb shell monkey -p com.ubtechinc.cruzr.timer -p com.ubtechinc.cruzr.launcher -s 50 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 500 --monitor-native-crashes -v -v -v 100000>d:/monkey/test.log
    
    
    
待确认:
    monkey --pkg-whitelist-file /mnt/sdcard/monkey/whitelist.txt -s 55 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 300 --monitor-native-crashes -v -v -v 50000 &>/mnt/sdcard/monkey/fss0324-006.log
    monkey --pkg-whitelist-file /mnt/sdcard/monkey/whitelist.txt -s 55 --pct-touch 70 --pct-motion 20 --pct-motion 10 --throttle 300 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v -v 30000 &>/mnt/sdcard/monkey/fss0326-003.log

转载于:https://my.oschina.net/u/3563297/blog/3081122

你可能感兴趣的:(Monkey压力测试--用来做稳定性测试)