Android APP压力测试(二)之Monkey信息自动收集脚本
Android APP压力测试(二)
之Monkey信息自动收集脚本
前言:
上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便。本文重点介绍我在进行Monkey时如何自动收集相关信息,主要收集Monkey测试日志、手机日志、手机屏幕截图、测试手机信息,自动按次按时间点保存信息。只需轻轻一点,腾出手腾出脑想干吗干吗,执行结束应该有信息的都有收集,一定程序提升了效率,节约了时间。可以偷空看看美图、聊天扯淡...哦不,是学习提高审美观,沟通交流增进同事情感...
目录
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 10000 adb 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%.png 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 REM 待扩展,上传日志至服务器 :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)、脚本执行信息
3)、输出结果
4、其他
此篇基本已完成,下次有空再分享Monkey日志、手机日志自动分析。例:
很简单原理,搜索关键字,简单判断,改天再整一篇,把脚本上传分享。
其他提升效率Bat脚本分享:《Android测试提升效率批处理脚本》
转载请注明出处:Findyou
http://www.cnblogs.com/findyou/p/3936063.html
Android APP压力测试(二)之Monkey信息自动收集脚本的更多相关文章
- Android APP压力测试(三)之Monkey日志自动分析脚本
Android APP压力测试(三) 之Monkey日志自动分析脚本 前言 上次说要分享Monkey日志的分析脚本,这次贴出来分享一下,废话不多说,请看正文. [目录] 1.Monkey日志分析脚本 ...
- Android APP压力测试(一)之Monkey工具介绍
Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...
- Android自动化压力测试图解教程——Monkey工具
[置顶] Android自动化压力测试图解教程--Monkey工具 标签: 测试androidprofiling工具测试工具文档 2012-04-01 10:16 38185人阅读 评论(10) 收藏 ...
- Android App 压力测试 monkeyrunner
Android App 压力测试 第一部分 背景 1. 为什么要开展压力测试? 2. 什么时候开展压力测试?第二部分 理论 1. 手工测试场景 2. 自动测试创建 3. Monkey工具 4. ADB ...
- Monkey Android app稳定性测试工具之Monkey使用教程
Monkey Android app稳定性测试工具之Monkey使用教程 by:授客 QQ:1033553122 由于篇幅问题,仅提供百度网盘下载链接: Android app稳定性测试工具之Monk ...
- android app 压力测试工具-monkey tool
一.什么是Monkey? Monkey测试是Android自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. Monkey是A ...
- Android APP压力测试-Monkey
压力测试-Monkey学习 Monkey测试特点 什么是Monkey test? 如其名,像猴子一样,虽然什么都不懂,但是可以乱点一通,可以理解为压力测试.在规定的时间或次数范围内做任何随机的操作,随 ...
- Android自动化压力测试图解教程——Monkey工具 (转)
有时候我们需要对一个软件进行压力测试,检查该软件的性能.如果是人工进行测试的话,效率会低很多,而且会比较枯燥.这时,Android中的一个命令行工具Monkey就可以为我们减轻很多重复而又繁琐的工作. ...
- Android APP压力测试实战
环境准备: Android SDK Python 压测实战步骤 1.在手机开发者工具中,将USB调试选上 2.确认手机,电脑成功连接(通过adb devices) 3.安装测试app(adb in ...
随机推荐
- 谢欣伦 - OpenDev原创教程 - 服务端套接字类CxServerSocket
这是一个精练的服务端套接字类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxServerSocket的使用如下(以某个叫做CSo ...
- VS2012 2013 显示查找功能 无法具体定位 解决方法
问题的现象:通过使用 Ctrl + Shift + F 也就是Find In Files功能,使用之后只能显示统计结果,不显示具体行.如下图 regedit 中在注册表中查找:HKEY_CLA ...
- CQOI 2016 k远点对
题目大意:n个点,求第k远的点对的距离 KD树裸题 注意要用堆维护第k远 #include<bits/stdc++.h> #define ll unsigned long long #de ...
- Eclipse中自动提示的方法参数都是arg0,arg1的解决方法
Eclipse中自动提示的方法参数都是arg0,arg1,就不能根据参数名来推断参数的含义,非常不方便. 解决方法:Preferences->Java->Installed JREs,发现 ...
- 进一步封装highchart,打造自己的图表插件:jHighChart.js
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表.支持的图表类型有曲线图.区域图.柱状图.饼状图.散状点图和综合 ...
- [译]Kinect for Windows SDK开发入门(十八):Kinect Interaction交互控件
本文译自 http://dotneteers.net/blogs/vbandi/archive/2013/03/25/kinect-interactions-with-wpf-part-i-getti ...
- TODO:Ubuntu下安装Node
TODO:Ubuntu下安装Node Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高 ...
- iOS-常用的第三方框架的介绍
写iOS 程序的时候往往需要很多第三方框架的支持,可以大大减少工作量,讲重点放在软件本身的逻辑实现上. GitHub 里面有大量优秀的第三方框架,而且 License 对商业很友好.一下摘录一下几乎每 ...
- OGNL相关代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 基于ReactCSSTransitionGroup实现react-router过渡动画
此前,我使用了react-router库来完成单页应用的路由,从而实现组件之间的切换能力.然而,默认页面的切换是非常生硬的,为了让页面切换更加缓和与舒适,通常的方案就是过渡动画. 这里我调研了2种 ...