自动化monkey测试--批处理+任务计划

一、思路

利用批处理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 20000

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 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日志文件辅助,但这文件过大,内容过多,需要过滤无用信息才能定位问题,建议我们做此优化;

相关推荐
CodeWithMe42 分钟前
【Note】Linux Kernel 之 内核架构、源码文件、API/ABI 、FHS
linux·运维·架构
Tomorrow'sThinker1 小时前
✍️ Python 批量设置 Word 文档多级字体样式(标题/正文/名称/小节)
python·自动化·word·excel
半导体守望者1 小时前
ADVANTEST R4131 SPECTRUM ANALYZER 光谱分析仪
经验分享·笔记·功能测试·自动化·制造
zkmall3 小时前
企业电商平台搭建:ZKmall开源商城服务器部署与容灾方案
运维·服务器·开源
华不完3 小时前
下一代防火墙混合模式部署
运维·服务器·网络
x县豆瓣酱3 小时前
ubuntu server配置静态IP
linux·运维·ubuntu
工藤新一¹3 小时前
Linux
linux·运维·服务器
互联网搬砖老肖4 小时前
运维打铁: 阿里云 ECS 实例的高效运维与管理
运维·阿里云·云计算
longze_74 小时前
frp内网穿透下创建FTP(解决FTP“服务器回应不可路由的地址。使用服务器地址替代”错误)
运维·服务器·网络
瓦力wow4 小时前
数据分析-名词
运维·服务器·数据分析