Monkey做压力稳定性测试

  • 准备工作:
  1. 进入cmd进入命令界面,查看设备是否连接:adb devices -l,获得设备序列号:adb get-serialno
  2. 连接真机或模拟器:adb connect 127.0.0.1:62001
  3. 如果有多个模拟器或者Android设备同时连接上adb,那么可以通过命令来选择指定的目标设备。在执行adb命令时一般在命令前加入 –s <序列号>即可进入shell 命令模式:adb -s 序列号 shell
  • 压力稳定性测试之前需进行需求分析
    1.分析被测应用的app,通过命令去获取包名
    2.根据app的属性去定11事件的具体百分比
    3.防止运行时出现问题,指定一个复现的流水号: -s 流水号
    4.防止突然事件:–ignore-crashes:忽略崩溃 --ignore-timeouts:忽略超时
    5.记录日志,分成正确日志和错误日志:Monkey [option] 1>d:\monkey.txt 2>d:\error.txt
    Monkey 的运行日志和异常日志将被分开保存。此时 Monkey 的运行日志将被保存在 monkey.txt 文件中,而异常日志将被保存在 error.txt 中
    如果 Monkey 执行期间存在 Crash (崩溃)或 ANR ( Application Not Responding ,应用程序无响应), error.txt 中会显示错误日志

  • 具体执行命令:
    adb shell monkey -p com.eccalc.ichat --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 -s 1777 --throttle 3000 --ignore-crashes --ignore-timeouts -v -v 200 >d:\log.txt

  • 日志分析
    Monkey 运行时输出的日志一般包含四类信息,分别是测试命令信息、伪随机事件流信息、异常信息、 Monkey 执行结果信息。
    在这里插入图片描述
    日志内容分析:
    一般测试结果分析-搜索关键字:
    1.程序无响应,ANR问题:在日志中搜索“ANR”
    2.崩溃很闪退问题:在日志中搜索“CRASH”
    3.其他问题:在日志中搜索”Exception”
    重现问题:
    Monkey测试出现错误后,一般的查错步骤为以下几步:
    1.找到是monkey里面的哪个地方出错;
    2.查看Monkey里面出错前的一些事件动作,并手动执行该动作;
    3.若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样;

  • 使用bat脚本进行统计出现的错误次数

@echo off&setlocal enabledelayedexpansion
: 设置所有Monkey 日志存放的目录
set ff=C:\Users\admin\Desktop\log\*.txt
: 设置查询关键字
set str=CRASH crash ANR died Exception exception
: 设置查询结果存放的目录
set fileName=Result.txt
: 开始查询
echo  正在统计&echo;
echo %date% %time% >%fileName%
echo.>>%fileName%
echo  分析结果:>>%fileName%
echo ---------------------------------------------->>%fileName%
: 依次打开目录下每一个Monkey 日志查询关键字并输出个数
(for %%a in (%str%)do (
    set n%%a=0&set/p= %%a : <nul>con
    for /f "delims=" %%b in ('findstr "%%a" "%ff%"')do (
        set h=%%b
        call :yky %%a)
    echo !n%%a!>con
    echo  关键字 %%a 共有 !n%%a!))>>%fileName%
echo.>>%fileName%
: 针对崩溃的日志输出其所在文件行数
echo  崩溃日志:>>%fileName%
findstr "%str%" "%ff%">>%fileName%
echo/&pause&exit
:yky
set/a n%1+=1
set h=!h:*%1=!
if defined h if not "!h:*%1=!"=="!h!" goto :yky
  • monkey测试中,如何终止运行
    方法一:
    a.新建一个窗口
    b.执行: adb shell ,
    c.再执行ps | grep monkey,返回来的第一个数字,即是 monkey 的进程号
    d.然后 kill pid 进程号
    方法二:
    a.新建一个窗口
    b.执行 adb reboot
    adb shell monkey常用命令:

monkey常用命令讲解:
标准的monkey 命令 [adb shell] monkey [options]
启动步骤
连接移动设备 – 连接成功后输入命令 – adb shell – 进入指定目录cd /system/bin – 输入 monkey命令
命令:

  1. adb shell moneky -help 打印输出monkey的使用方法
  2. adb shell monkey 100  (对模拟器进行随机事件)
  3. adb shell monkey -v 100  ( -v 打印日志)
  4. adb shell monkey -s 666 100  (-s 伪随机数种子值 后跟指定数字)对随机事件编码,可以再次复习这才随机。
  5. adb shell monkey -f /mnt/sdcard/test1  执行指定脚本
  6. adb shell monkey --throttle 3000 5  (–throttle 设置每次随机事件的时间间隔(单位:毫秒) )设置间隔 每一个指定之间加上事件间隔
  7. –throttle time --randomize-throttle 设置随机时间的时间间隔区间
    例:adb shell monkey 100 --throttle 500 --randomize-throttle
    说明:执行一百次monkey随机事件,每次事件的间隔在0到500毫秒之间不固定
  8. adb shell monkey -v-v --pct-touch 100 200  调整触摸事件百分比
  9. –ignore-crashes 运行中忽略crash,遇到crash依然把后面的事件跑完
    例:adb shell monkey --ignore-crashes -v 100
  10. –ignore-timeouts 运行中忽略ANR,遇到ANR依然把后面的事件跑完
    例:adb shell monkey --ignore-timeouts -v 100
  11. –ignore-native-crashes 忽略monkey本身的异常,直到事件执行完毕
    例:adb shell monkey --ignore-native-crashes -v 100

  12. 设置事件百分比,所有的百分比加起来不能超过100%
    0:触摸事件百分比,即参数- -pct-touch
    1:滑动事件百分比,即参数- -pct-motion
    2:缩放事件百分比,即参数- -pct-pinchzoom
    3:轨迹球事件百分比,即参数- -pct-trackball
    4:屏幕旋转事件百分比,即参数- -pct-rotation
    5:基本导航事件百分比,即参数- -pct-nav
    6:主要导航事件百分比,即参数- -pct-majornav
    7:系统事件百分比,即参数- -pct-syskeys
    8:Activity启动事件百分比,即参数- -pct-appswitch
    9:键盘翻转事件百分比,即参数- -pct-flip
    10:其他事件百分比,即参数- -pct-anyevent
    例:adb shell monkey --pct-touch 20 -v 100
  13. -p 指定被测应用的包名
    例:adb shell monkey -p com.UCMobile.x86 100
    如果想要指定多个包名,每一个包名要跟一个-p
    例:adb shell monkey -p packageName1 -p packageName2 100
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值