Android APP压力测试(二)之Monkey信息自动收集脚本

Android APP压力测试(二)

之Monkey信息自动收集脚本

前言:

上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便。本文重点介绍我在进行Monkey时如何自动收集相关信息,主要收集Monkey测试日志、手机日志、手机屏幕截图、测试手机信息,自动按次按时间点保存信息。只需轻轻一点,腾出手腾出脑想干吗干吗,执行结束应该有信息的都有收集,一定程序提升了效率,节约了时间。可以偷空看看美图、聊天扯淡...哦不,是学习提高审美观,沟通交流增进同事情感...

转载请注明出处:Findyou   http://www.cnblogs.com/findyou/p/3936063.html

目录

1、Findyou的Monkey脚本

2、Findyou脚本讲解

3、操作记录

4、其他

1、Findyou的Monkey脚本

1)、【脚本文件】

a、配置文件:config.conf

config.conf

[appinfo]

appCnName=Findyou

appEnName=Findyou

appversion=V1.0.0

packageName=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=Findyou

appEnName=Findyou

appversion=V1.0.0

packageName=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.0

20140825181801.png

20140825181801_logcat.log

20140825181801_monkey.log

20140825181801_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

时间: 2024-08-24 12:03:02

Android APP压力测试(二)之Monkey信息自动收集脚本的相关文章

Android APP压力测试(二)之Monkey信息自动收集脚本【转】

前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息,主要收集Monkey测试日志.手机日志.手机屏幕截图.测试手机信息,自动按次按时间点保存信息.只需轻轻一点,腾出手腾出脑想干吗干吗,执行结束应该有信息的都有收集,一定程序提升了效率,节约了时间.可以偷空看看美图.聊天扯淡...哦不,是学习提高审美观,沟通交流增进同事情感... 转载请注明出处:Findyou   http://www.cnblogs.com/findyo

Android APP压力测试(三)之Monkey日志自动分析脚本

Android APP压力测试(三) 之Monkey日志自动分析脚本 前言 上次说要分享Monkey日志的分析脚本,这次贴出来分享一下,废话不多说,请看正文. [目录] 1.Monkey日志分析脚本 2.脚本原理 3.操作实例 1.Monkey日志分析脚本 1).脚本文件:Monkey_Log分析.bat @ECHO OFF ECHO.::::::::::::::::::::::::::::::::::::::::::::::::: ECHO.::             分析Monkey日志 

Android APP压力测试(一)之Monkey工具介绍

Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动.按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常.此文主要给自己查阅用. [目录] 1.Monkey简介 2.Monkey参数说明 3.Monkey实例 4.Monkey测试结果分析 1.Monkey简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设

Android App 压力测试 monkeyrunner

Android App 压力测试 第一部分 背景 1. 为什么要开展压力测试? 2. 什么时候开展压力测试?第二部分 理论 1. 手工测试场景 2. 自动测试创建 3. Monkey工具 4. ADB命令 5. Monkey Script 6. Monkey Runner 7. 压力测试结果分析 1.什么是CRASH? (crash 奔溃) 2. 什么是ANR? (无响应)第三部分 实践 1. 一个App的压力测试实践 2. Monkey高级参数的应用 3. CRASH结果析取 4. ANR结果

android app压力测试(一)---monkey介绍及基本使用

前言:  很久之前,就听说了monkey:但是monkey是干什么用:如何使用:我们还是带着最简单的问题开始学习吧; ps:我的博文格式变化了,阅读了很多博文,发现这个样式阅读起来很有条理,我也参考一下下..呵呵-- [目录] 一:Monkey简介 二:Monkey的特性 三:Monkey的命令参数说明 四:Monkey使用实例 一:Monkey简介 说:monkey是一只调皮的猴子,在app中乱按.乱摸.乱跳: 模拟用户触摸屏幕.滑动轨迹球.按键等操作:对模拟器或者手机上的软件进行压力测试:

android app 压力测试工具-monkey tool

一.什么是Monkey? Monkey测试是Android自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey测试是一种为了测试软件的稳定性.健壮性的快速有效的方法. 二.Monkey的特征1.测试的对象仅为应用程序包,有一定

Android APP压力测试-Monkey

压力测试-Monkey学习 Monkey测试特点 什么是Monkey test? 如其名,像猴子一样,虽然什么都不懂,但是可以乱点一通,可以理解为压力测试.在规定的时间或次数范围内做任何随机的操作,随即操作包括点击.滑动...... Monkey测试目标:通过模拟用户随机操作时间,暴露应用内Crash,降低Crash率 Monkey Test范围预期:除了一些系统设置,我们希望范围维持在待测试应用内,另外可以补充一些中断测试 只能发现Crash,单复现和解决Crash还是需要靠开发人员 暴露所有

Android自动化压力测试图解教程——Monkey工具

转自:http://blog.csdn.net/lfyx1357/article/details/7418133 有时候我们需要对一个软件进行压力测试,检查该软件的性能.如果是人工进行测试的话,效率会低很多,而且会比较枯燥.这时,Android中的一个命令行工具Monkey就可以为我们减轻很多重复而又繁琐的工作. 一.Monkey简介 至于Monkey的名字是有何而来的呢?这个没有去怎么考究,Monkey这个工具就是一个调皮的猴子,在App中乱按.乱摸.乱滚.乱跳.Monkey测试是Androi

Android App压力测试之Monkey

本文为慕课网<Android App压力测试>的学习笔记,视频地址 http://www.imooc.com/video/13007 Monkey是发送伪随机用户事件的工具. MonkeyScript实现自动测试的脚本,是一组可以被Monkey识别的命令集合,可以完成重复固定的操作.不支持截屏. MonkeyRunner提供一系列api操作. Monkey与MonkeyRunner的区别: Monkey:在adb shell中,生产用户或系统的伪随机事件 MonkeyRunner:通过API定