Android APP压力测试(二) 之Monkey信息自动收集脚本
转载-原文地址: http://www.cnblogs.com/findyou/p/3936063.html
Android APP压力测试(二)
之Monkey信息自动收集脚本
前言:
本文重点介绍我在进行Monkey时如何自动收集相关信息,主要收集Monkey测试日志、手机日志、手机屏幕截图、测试手机信息,自动按次按时间点保存信息。
目录
1、Findyou的Monkey脚本
2、Findyou脚本讲解
3、操作记录
4、其他
1、Findyou的Monkey脚本
1)、【脚本文件】
a、配置文件:config.conf
config.conf
[appinfo]appCnName=FindyouappEnName=Findyouappversion=V1.0.0packageName=com.Findyou.you
b、脚本文件:Monkey_findyou.bat
@ECHO OFF
ECHO. :: :::::::::::::::::::::::::::::::::::::::::::::::
ECHO. :: Monkey测试 ::
ECHO. :: 作者:Findyou ::
ECHO. :: 版本 V1.0.1 ::
ECHO. :: 时间:2014.08.25 ::
ECHO. :: :::::::::::::::::::::::::::::::::::::::::::::::
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
)REM 获取日期,格式为:20140808
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%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%
)REM 获得手机信息,显示并保存
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.info
ECHO.[ 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"ECHO.
ECHO.[ Exec ] 使用Logcat清空Phone中log
adb logcat -c
REM ECHO.[ INFO ] 暂停2秒...
ping -n 2 127.0.0.1>nul
ECHO.
ECHO.[ INFO ] 开始执行Monkey命令
REM ECHO.[ INFO ] 强制关闭准备测试的APP
adb shell am force-stop %packageName%:: :::::::::::::::Monkey测试命令::::::::::::::::::::::::
:: ::::::::::修改策略请仅在此区域内修改:::::::::::::::::
ECHO.[ Exec ] adb shell monkey -p %packageName% -s %c_time% --throttle 500 -v -v -v 10000adb shell monkey -p %packageName% -s %c_time% --throttle 500 -v -v -v 10000>%logdir%\%logfilename%_monkey.log
:: ::::::::::修改策略请仅在此区域内修改:::::::::::::::::
:: ::::::::::::::::::::END::::::::::::::::::::::::::::::
ECHO.[ INFO ] 执行Monkey命令结束
ECHO.ECHO.[ Exce ] 手机截屏
adb shell screencap -p /sdcard/monkey_run_end.png
ECHO.[ INFO ] 拷贝截屏图片至电脑
adb pull /sdcard/monkey_run_end.png %logdir%
cd %logdir%
ren monkey_run_end.png %logfilename%.pngECHO.
ECHO.[ Exec ] 使用Logcat导出日志
adb logcat -d >%logdir%\%logfilename%_logcat.logREM ECHO.
REM ECHO.[ Exec ] 导出traces文件
REM adb shell cat /data/anr/traces.txt>%logfilename%_traces.logREM 待扩展,上传日志至服务器
:EXIT
ECHO.
ECHO.[ INFO ] 请按任意键关闭窗口...PAUSE>nul
注意:保存bat时注意为文件格式 ANSI 哈,Windows你懂的
2)、【使用方法】
a、保存脚本:拷贝本文中的config.conf、Monkey_findyou.bat内容保存在同一目录下
b、修改配置:修改 config.conf 中内容为你需要测试的APP对应的信息
c、执行脚本:双击 Monkey_findyou.bat 即可
★温馨提示★a、环境变量:adb命令可执行(需要安装安卓SDK,不会安装配置请百度或google)b、保存脚本:目录不要太深,且建议为英文文件夹,不要有空格或特殊字符c、手机连接:此版脚本没有对同时连接电脑的多台安卓设备进行检测,只能对单台手机进行测试与操作
2、Findyou脚本讲解
1)、缘由与历史介绍
新手阶段:Monkey测试,基本就跑一条命令,然后把Monkey执行后返回的信息保存,直接丢给研发。由于信息不全,研发定位也花费很长时间,排查太难。被投诉不专业啊,什么什么的...
第二阶段:先增加logcat日志信息导出、执行结果手机截屏。后觉有必要又增加APP自己打印与捕获的相关信息导出。
第三阶段:由于时不时要跑Monkey,搞得太多太多次数,很烦人,人工导出数据也很蛋痛。因为固定重复的工作,于是就思考自动化。在挑选语言时,觉得python强大,引入python不错的选择,深入一思考,不就是执行个命令,导几个文件,批处理很强在,再说不是每个人都装python哈。于是采用了最简单的方法来实现。发布的脚本减掉了app自身日志收集,因app不同产生的数据文件与自身业务日志保存地不同,故删减。也无非就是adb pull命令,如有需要自已在脚本后增加即可。
2)、脚本讲解
a、核心:Monkey命令
adb shell monkey -p %packageName% -s %c_time% --throttle 100 -v -v -v 10000-p %packageName%指定测试包名,%packageName%变量值来自文件config.conf中的 packageName对应的值 。-s %c_time%%c_time%为执行脚本当时的时间(小时、分、秒),以时间为值即达到随机目的,也为后续需要再模拟此次测试提供事件序列。--throttle 100代表间隔时间,即每次操作的时间间隔,此命令的含义就是增加500ms的时间间隔。-v -v -v 10000-v -v -v日志级别 Level 2,最详细的日志,包括了测试中选中/未选中的Activity信息。10000即执行10000次随机事件。★温馨提示★
①、将Monkey命令区域标注划出,可以按需定致,%packageName%代表你需要测试的包名,其他可以自己增减Monkey参数。
②、例:adb shell monkey -p %packageName% -s %c_time% --throttle 100 --ignore-crashes -v -v -v 10000
③、Monkey此处不做过多的讲解,网上有很多Monkey测试策略的介绍。Bat中其他相关方法操作脚本中基本都有注解与说明,相信大家能懂。
b、配置文件
config.conf
[appinfo]appCnName=FindyouappEnName=Findyouappversion=V1.0.0packageName=com.Findyou.you①、appCnName:此脚本中暂时未用到
②、appEnName:待测APP名称,建议用英文或拼音,多处用到此项值
③、appversion:待测APP版本号,不要有空格,bat脚本没有做处理
④、packageName:待测APP版本package名
★温馨提示★
①、APP第3、4项信息可以用aapt命令从安装apk中获取,具体方法请见我笔记《Android测试提升效率批处理脚本》http://www.cnblogs.com/findyou/p/3785618.html
3)、信息收集自动化实现
Monkey_findyou.bat 结果
F:\Monkey\20140808\FindyouV1.0.020140825181801.png20140825181801_logcat.log20140825181801_monkey.log20140825181801_SM-N9008V.txt①、Monkey后手机截屏:20140825181801.png
②、Monkey时手机日志:20140825181801_logcat.log
③、Monkey测试结果:20140825181801_monkey.log
④、被测手机信息:20140825181801_SM-N9008V.txt
★温馨提示★
*、每次执行Monkey会自动收集相关信息生成以上四个文件,文件名为执行时的时间点。
*、分析日志文件,是否有异常关键字:CRASH、ANR、Exception等,想偷懒把四个文件打包发给研发定位即可,不过还是建议自己学会分析。
*、如果有需要多次测试压力测试,想自动执行多少多少次之类的,下面提供一个思路
①、删除Monkey_findyou.bat脚本中最后一行"PAUSE>nul ",保存
②、将手机设置永不锁屏,或者安装自动解锁APP(脚本执行调一下app)
③、Windows的计划任务定时执行Monkey_findyou.bat
3、操作记录
1)、双击执行Monkey_findyou.bat
2)、脚本执行信息
Android APP压力测试(二) 之Monkey信息自动收集脚本相关推荐
- zz:Android APP Monkey信息自动收集脚本
Android APP Monkey信息自动收集脚本 1.Findyou的Monkey脚本 1).[脚本文件] a.配置文件:config.conf ? 1 2 3 4 5 6 7 8 9 10 co ...
- Android App 压力测试 monkeyrunner
Android App 压力测试 第一部分 背景 1. 为什么要开展压力测试? 2. 什么时候开展压力测试? 第二部分 理论 1. 手工测试场景 2. 自动测试创建 3. Monkey工具 4. AD ...
- Android App压力测试
前言:写这篇文章的目的,一是因为不少同学作为Android开发,很少会自己去做压力测试,不了解相关的技术,不知道压力测试是什么.怎么工作的:二是询问过身边的一些测试同学,他们进行压力测试的时候,很多情 ...
- Android App压力测试(Monkey和ADB)
压力测试简介 压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分.压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试.通常 ...
- android服务器压力测试工具,Android自动化压力测试图解教程——Monkey工具
有时候我们需要对一个软件进行压力测试,检查该软件的性能.如果是人工进行测试的话,效率会低很多,而且会比较枯燥.这时,中的一个命令行工具Monkey就可以为我们减轻很多重复而又繁琐的工作. 一.Monk ...
- Android App压力测试(慕课网学习笔记)
转载:https://blog.csdn.net/a923751813/article/details/72884826 一 背景 1. 为什么开展压力测试 目标1:提高产品稳定性(产品稳定性是一项 ...
- Android App专项测试-压力测试篇
小伙伴们大家好,今天主要分享的主题是Android App专项测试.如何进行Android App专项测试压力测试呢?我们主要通过Android平台的一门工具Monkey.在学习本门课程之前,如果你具 ...
- APP压力测试工具使用
Monkey Monkey 是一个 Android 自动化测试小工具.(压力性能测试) 主要用于Android 的压力测试, 主要目的就是为了测试app 是否会Crash崩溃. Monkey测试教程 ...
- 【APP渗透测试】 Android APP渗透测试技术实施以及工具使用(客户端服务端)
文章目录 前言 一.安全威胁分析 二.主要风险项 三.Android测试思维导图 四.反编译工具 五.Android客户端 漏洞一.Jnaus漏洞 漏洞二.数据备份配置风险漏洞 漏洞三.Activit ...
最新文章
- zynq学习05 Zynq 7000 emio的gpio操作
- Tensorflow【实战Google深度学习框架】使用 TFLearn 实现逻辑运算符
- 浅析row_number()函数【HQL】
- 使用Open Liberty的开发模式最大程度地缩短周转时间
- 阿里云推PostgreSQL 10 高可用版
- Java编写简单密码问题
- Unity2019.2中文更新日志速览版
- K8S_Google工作笔记0008---通过二进制方式_搭建集群介绍
- Linux目录结构详解
- 联合国应考虑建设第二总部
- 中标麒麟安装mysql教程_中标麒麟操作系统安装MySQL5.7.22的步骤教程
- PHP商城网站绑定中国银联在线支付接口
- 某一年某一年_链接一年
- 「代码家」的学习过程和学习经验分享
- android:手机与BLE-CC41-A蓝牙模块通信
- OMG!程序猿小哥是如何做到基金收益率高达26.03%?
- JLINK的SN更改
- byfen网java_用java编写程序根据考试成绩的等级打印出百分制分数段
- c语言1e5是什么类型,c语言基础知识
- ipmitool sdr type Temperature sdr 从传感器获取某一类数据