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

相关推荐
ZaaaaacK2 分钟前
Linux系统远程操作和程序编译
linux·运维·postgresql
Y_3_715 分钟前
Netty实战:从核心组件到多协议实现(超详细注释,udp,tcp,websocket,http完整demo)
linux·运维·后端·ubuntu·netty
测试专家1 小时前
ARINC653系统架构
大数据·linux·运维
IT_10241 小时前
Nginx教程:概念+安装+SSL安装,通过调优Nginx来提高应用性能
运维·nginx·ssl
deeper_wind2 小时前
配置DHCP服务(小白的“升级打怪”成长之路)
运维·服务器·智能路由器
Ac157ol2 小时前
不同系统修改 Docker Desktop 存储路径(从C盘修改到D盘)
运维·docker·容器
袋鼠云数栈2 小时前
AI Infra 运维实践:DeepSeek 部署运维中的软硬结合
大数据·运维·数据库·数据中台·数栈
有没有没有重复的名字2 小时前
进程间通信
运维·服务器
孤邑3 小时前
【Linux】DBUS基础
linux·运维·服务器
孙克旭_3 小时前
day037-openssh服务与http协议
linux·运维·网络·网络协议·http