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

相关推荐
七夜zippoe2 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy6483 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满3 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠3 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9034 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技5 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀5 小时前
Linux环境变量
linux·运维·服务器
zzzsde5 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º7 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~7 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化