Android App Monkey 测试

  1. Monkey是Android SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户事件流,对Android APP做压力(稳定性)测试。主要是为了测试app是否存在exception,error,crash,nar等情况。目前在某些Android应用平台,新版app发布时,平台会执行monkey,如果有crash等相关问题,会被打回。

安装sdk后,可在命令行通过 adb shell monkey 查看可用命令

2.monkey常用参数说明:


| 基本参数 | 说明 |
| -p | 指定一个或多个包 |
| -s | 指定一个随机数生成器的seed值 |
| --throttle | 指定事件之间的固定延迟(ms) |
| -v | 指定反馈信息级别(信息级别就是日志的详细程度) |
| -c | 指定一个或多个类别名 |
| -f | 运行指定的monkey脚本 |


| 事件参数 | 说明 |
| --pct-touch | 指定触摸事件百分比 |
| --pct-motion | 指定动作事件百分比 |
| --pct-trackball | 指定轨迹事件百分比 |
| --pct-syskeys | 指定系统按键事件百分比 |
| --pct-nav | 指定基本导航事件百分比 |
| --pct-majornav | 指定主要导航事件百分比 |
| --pct-appswitch | 指定应用启动事件百分比 |
| --pct-flip | 指定flip(弹)事件的百分比 |
| --pct-anyevent | 指定其他类型事件百分比 |
| --pct-pinchzoom | 指定缩放(捏)事件百分比 |
| --pct-permission | 指定 |


| 调试参数 | 说明 |
| --ignore-crashes | 忽略因崩溃或异常引起的停止运行 |
| --ignore-timeouts | 忽略应用发生超时错误(ANR) |
| --ignore-security-exceptions | 忽略应用发生任何权限错误 |
| --monitor-native-crashes | 监视并报告monkey运行时native code的崩溃事件 |
| --ignore-native-crashes | 忽略因native code的崩溃事件 |
| --kill-process-after-error | 在应用出错后通知系统杀死发生错误的进程 |
| --hprof | 在事件序列前后立即生成profilfing report |
| --dbg-no-events | 监视应用程序所调用的包之间的转换 |
| --wait-dbg | 暂停执行中的monkey,直到有调试器与它连接 |

3.使用真机环境针对皮皮Android客户端进行monkey测试

A.开启手机调试模式,通过USB连接电脑,查看是否连接成,可以使用adb devices命令

B.关闭手机下拉通知栏,锁定手机界面(视机型而定,操作方式不一样),避免测试工程中切出app,影响测试结果。

C.执行monkey测试,使用脚本命名如下,参数请参照上面参数说明理解。

adb shell monkey -p com.chudiangameplay.android -s 10086 --pct-touch 70 --pct-motion 30 --ignore-crashes --ignore-timeouts --monitor-native-crashes --throttle 200 -v -v -v 50000 >D:\monkeylog\20200525.log

4.日志分析

日志分析可手动在日志中搜索crashes 、crashes 、error等内容,查看对应区域日志。

日志量较大,可使用如下提供的bat脚本,分析对应日志文件。

@ECHO OFF

ECHO.:::::::::::::::::::::::::::::::::::::::::::::::::

ECHO.::             分析Monkey日志                  ::

ECHO.:::::::::::::::::::::::::::::::::::::::::::::::::

REM 方法一:手动设置Monkey日志路径

SET monkeyLogFile=D:\monkeylog\20200525.log



REM 方法二:直接将Monkey日志拖到此bat文件上

IF NOT "%1"=="" SET monkeyLogFile=%1



ECHO.[ INFO ] Monkey日志: %monkeyLogFile%

ECHO.[ INFO ] 开始分析

SET blnException=0

ECHO.

ECHO.

::ANR日志

FOR /F "delims=" %%a IN ('FINDSTR /C:"ANR" %monkeyLogFile%') DO ( 

    SET strANR=%%a

)



::崩溃日志

FOR /F "delims=" %%a IN ('FINDSTR /C:"CRASH" %monkeyLogFile%') DO ( 

    SET strCRASH=%%a

)

    

::异常日志

FOR /F "delims=" %%a IN ('FINDSTR /C:"Exception" %monkeyLogFile%') DO ( 

    SET strException=%%a

)



::正常

FOR /F "delims=" %%a IN ('FINDSTR /C:"Monkey finished" %monkeyLogFile%') DO ( 

    SET strFinished=%%a

)



IF NOT "%strANR%" == "" (

    ECHO.[ INFO ] 分析Monkey日志存在: ANR

    ECHO.[ INFO ] ------------------------------------

    ECHO.         "%strANR%"

    SET /a blnException+=1

    ECHO.

)



IF NOT "%strCRASH%" == "" (

    ECHO.[ INFO ] 分析Monkey日志存在: CRASH

    ECHO.[ INFO ] ------------------------------------

    ECHO.         "%strCRASH%"

    SET /a blnException+=1

    ECHO.

)



IF NOT "%strException%" == "" (

    ECHO.[ INFO ] 分析Monkey日志存在: 异常

    ECHO.[ INFO ] ------------------------------------

    ECHO.         "%strException%"

    SET /a blnException+=1

)



IF NOT "%strFinished%" == "" (

    ECHO.[ INFO ] 分析Monkey日志存在: 执行成功标记

    ECHO.[ INFO ] ------------------------------------

    ECHO.         "%strFinished%"

    ECHO.

) ELSE (

    IF %blnException% EQU 0 ECHO.[ INFO ] 分析Monkey日志结果: Monkey执行异常中断,请重新执行Monkey脚本!

    ECHO.

)



REM 如果blnException不为0,说明存在异常,改变字体为淡紫色

IF %blnException% NEQ 0 ( 

    Color 0D

    ECHO.[ INFO ] 分析Monkey日志结果:存在异常日志,请手工再仔细检查!

    ECHO.

) ELSE (

    ECHO.[ INFO ] 分析Monkey日志结果:正常

    ECHO.

)

ECHO.

ECHO.[ EXIT ] 按任意键关闭窗口...

PAUSE>nul

你可能感兴趣的:(Android App Monkey 测试)