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

相关推荐
attitude.x23 分钟前
Cursor+GitOps:自动化运维新姿势
运维·自动化
数智化管理手记1 小时前
主数据重复、错漏频发?一站式主数据管理平台如何落地?
大数据·运维·数据库·人工智能·数据挖掘
Shell运维手记2 小时前
ARP 协议超详细讲解(适合网工考试 / 运维理解)
运维·网络·网络协议·智能路由器
西安景驰电子2 小时前
PCIe 授时卡原理及应用
运维·服务器·windows·单片机·嵌入式硬件·fpga开发
huainingning4 小时前
华三瘦AP切换为胖AP并配置无线功能
运维·网络·网络协议·tcp/ip
外滩运维专家4 小时前
十几台服务器要改配置,别再一台台 SSH 了
运维
冷莫溪4 小时前
Zabbix——认识及部署Zabbix(基于Rocky9.7)
linux·运维·php·zabbix
风曦Kisaki4 小时前
Kubernetes(K8s)笔记Day03: Pod命名空间,标签,Pod 的调度,污点与容忍度,Pod 常见状态和重启策略,Pod 生命周期
linux·运维·笔记·docker·云原生·容器·kubernetes
图件制作GIS,储量计算5 小时前
未来已到,抓住机遇
运维·服务器
CIO_Alliance5 小时前
AI+iPaaS解决方案:跨系统业务流程自动化助力企业AI化转型
运维·人工智能·自动化