一、思路
利用批处理bat执行monkey测试、生成monkey日志和applog日志,结束monkey测试后,再将monkey日志和applog日志导出保存;
二、步骤
1、需要配置 config.conf文件(新建txt文本填写以下内容)
config.conf
[appinfo]
appCnName=vss
appEnName=vss
appversion=V2.2.1.01
packageName=com.howentech.com
2.编写批处理脚本--打印monkey测试的基本信息 (再新建txt文本依次填写以下内容)
@ECHO OFF
ECHO.:::::::::::::::::::::::::::::::::::::::::::::::::
ECHO.:: vss安卓appMonkey测试 ::
ECHO.:: 作者:rebort ::
ECHO.:: 版本 V2.2.0 ::
ECHO.:: 目前进行:第一次策略测试 ::
ECHO.:::::::::::::::::::::::::::::::::::::::::::::::::
3.编写批处理脚本--读取配置文件,如果配置文件不存在,则退出,如果存在,则获取配置文件信息;
IF NOT EXIST %~dp0\config.conf GOTO EXIT
ECHO.[ INFO ] 准备Monkey测试
ECHO.[ INFO ] 读取config.conf中信息REM 从配置文件中获得包名
FOR /F "tokens=1,2 delims==" %%a in (config.conf) do (
IF %%a == packageName SET packageName=%%b
IF %%a == appEnName SET appEnName=%%b
IF %%a == appversion SET appversion=%%b
)
4.编写批处理脚本--获取并设置测试时间
REM 获取日期,格式为:202506016
SET c_date=%date:~0,4%%date:~5,2%%date:~8,2%
REM 获取得小时,格式为:24小时制,10点前补0
SET c_time=%time:~0,2%
IF /i %c_time% LSS 10 (
SET c_time=0%time:~1,1%
)
REM 组合小时、分、秒,格式为: 131420
SET c_time=%c_time%%time:~3,2%%time:~6,2%
REM 将当运行时间点做为日志文件名
SET logfilename=%c_date%%c_time%
5.编写批处理脚本--以当前测试时间为准,创建当天目录以及app日志保存目录
REM 创建当天日期目录及测试APP日志保存目录IF NOT EXIST %~dp0\%c_date% md %~dp0\%c_date%
SET logdir="%~dp0\%c_date%\%appEnName%%appversion%"
IF NOT EXIST %logdir% (
ECHO.[ Exec ] 创建目录:%c_date%\%appEnName%%appversion% md %logdir%
)
6.编写批处理脚本--获取手机信息,显示并保存
adb shell cat /system/build.prop>phone.info
FOR /F "tokens=1,2 delims==" %%a in (phone.info) do (
IF %%a == ro.build.version.release SET androidOS=%%b
IF %%a == ro.product.model SET model=%%b
IF %%a == ro.product.brand SET brand=%%b)
del /a/f/q phone.infoECHO.[ INFO ] 读取Phone信息
ECHO. 手机品牌: %brand%
ECHO. 手机型号: %model%
ECHO. 系统版本: Android %androidOS%
ECHO.Phone信息>"%logdir%\%logfilename%_%model%.txt"
ECHO.手机品牌: %brand%>>"%logdir%\%logfilename%_%model%.txt"
ECHO.手机型号: %model%>>"%logdir%\%logfilename%_%model%.txt"
ECHO.系统版本: Android %androidOS%>>"%logdir%\%logfilename%_%model%.txt"
7.编写批处理脚本--清空手机的日志log信息
ECHO.
ECHO.[ Exec ] 使用Logcat清空Phone中log
adb logcat -cREM
ECHO.[ INFO ] 暂停2秒...ping -n 2 127.0.0.1>nul
ECHO.
8.编写批处理脚本--开始执行monkey命令
ECHO.[ Exec ] adb shell monkey -p %packageName% -s %c_time% --throttle 500 --randomize-throttle --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --pct-touch 30 --pct-motion 20 --pct-trackball 30 --pct-pinchzoom 20 -v -v -v 20000adb shell monkey -p %packageName% -s %c_time% --throttle 500 --randomize-throttle --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --pct-touch 30 --pct-motion 20 --pct-trackball 30 --pct-pinchzoom 20 -v -v -v 20000>%logdir%\%logfilename%_monkey.log
9.编写批处理脚本--测试完毕,使用logcat导出日志
ECHO.[ INFO ] 执行Monkey命令结束
ECHO.
ECHO.
ECHO.[ Exec ] 使用Logcat导出日志
adb logcat -d >%logdir%\%logfilename%_logcat.log
REM ECHO.
REM ECHO.[ Exec ] 导出traces文件REM
adb shell cat /data/anr/traces.txt>%logfilename%_traces.log
10.在window控制面板找到任务计划程序
1)在程序库,创建基本任务,命名为monkeytest
2)触发器选择每天,发生一次,时间任意
3)操作选择启动程序
4)启动程序:选择bat批处理所在文件夹的位置,比如:E:\monkey\monkeytest.bat,起始位置选择:E:\monkey;
5)完成后,进入这个基本任务,点击触发器,编辑其属性,修改其重复任务间隔,持续是无限期;
11.任务计划自动触发monkey测试,开始执行monkey测试并直到monkey测试完毕;
12.用Monkey_Log分析.bat分析monkeylog日志,统计测试结果,汇兑错误日志,分析错误日志,发送给开发,测试完毕;
三、总结
1)只能支持单设备,不支持多设备同时运行;
2)汇兑测试结果,只能人工统计,没有email邮件测试结果的功能;
3)支持多条测试策略先后进行,但无法保证手机的网络环境是否开启wifi,需要在测试脚本增加黑名单设置的执行;
4)实现自动触发monkey测试,但需要事前将手机连接电脑且安装好被测app;
5)实现自动收集被测手机信息、monkey日志和applog日志;
6)开发反馈,大部分闪退问题有monkey日志就足以定位问题,但个别问题,比如内存泄漏,就需要app日志文件辅助,但这文件过大,内容过多,需要过滤无用信息才能定位问题,建议我们做此优化;