转载-原文地址:   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=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)、脚本执行信息

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

  1. 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 ...

  2. Android App 压力测试 monkeyrunner

    Android App 压力测试 第一部分 背景 1. 为什么要开展压力测试? 2. 什么时候开展压力测试? 第二部分 理论 1. 手工测试场景 2. 自动测试创建 3. Monkey工具 4. AD ...

  3. Android App压力测试

    前言:写这篇文章的目的,一是因为不少同学作为Android开发,很少会自己去做压力测试,不了解相关的技术,不知道压力测试是什么.怎么工作的:二是询问过身边的一些测试同学,他们进行压力测试的时候,很多情 ...

  4. Android App压力测试(Monkey和ADB)

    压力测试简介 压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分.压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试.通常 ...

  5. android服务器压力测试工具,Android自动化压力测试图解教程——Monkey工具

    有时候我们需要对一个软件进行压力测试,检查该软件的性能.如果是人工进行测试的话,效率会低很多,而且会比较枯燥.这时,中的一个命令行工具Monkey就可以为我们减轻很多重复而又繁琐的工作. 一.Monk ...

  6. Android App压力测试(慕课网学习笔记)

    转载:https://blog.csdn.net/a923751813/article/details/72884826 一  背景 1. 为什么开展压力测试 目标1:提高产品稳定性(产品稳定性是一项 ...

  7. Android App专项测试-压力测试篇

    小伙伴们大家好,今天主要分享的主题是Android App专项测试.如何进行Android App专项测试压力测试呢?我们主要通过Android平台的一门工具Monkey.在学习本门课程之前,如果你具 ...

  8. APP压力测试工具使用

    Monkey Monkey 是一个 Android 自动化测试小工具.(压力性能测试) 主要用于Android 的压力测试, 主要目的就是为了测试app 是否会Crash崩溃. Monkey测试教程 ...

  9. 【APP渗透测试】 Android APP渗透测试技术实施以及工具使用(客户端服务端)

    文章目录 前言 一.安全威胁分析 二.主要风险项 三.Android测试思维导图 四.反编译工具 五.Android客户端 漏洞一.Jnaus漏洞 漏洞二.数据备份配置风险漏洞 漏洞三.Activit ...

最新文章

  1. zynq学习05 Zynq 7000 emio的gpio操作
  2. Tensorflow【实战Google深度学习框架】使用 TFLearn 实现逻辑运算符
  3. 浅析row_number()函数【HQL】
  4. 使用Open Liberty的开发模式最大程度地缩短周转时间
  5. 阿里云推PostgreSQL 10 高可用版
  6. Java编写简单密码问题
  7. Unity2019.2中文更新日志速览版
  8. K8S_Google工作笔记0008---通过二进制方式_搭建集群介绍
  9. Linux目录结构详解
  10. 联合国应考虑建设第二总部
  11. 中标麒麟安装mysql教程_中标麒麟操作系统安装MySQL5.7.22的步骤教程
  12. PHP商城网站绑定中国银联在线支付接口
  13. 某一年某一年_链接一年
  14. 「代码家」的学习过程和学习经验分享
  15. android:手机与BLE-CC41-A蓝牙模块通信
  16. OMG!程序猿小哥是如何做到基金收益率高达26.03%?
  17. JLINK的SN更改
  18. byfen网java_用java编写程序根据考试成绩的等级打印出百分制分数段
  19. c语言1e5是什么类型,c语言基础知识
  20. ipmitool sdr type Temperature sdr 从传感器获取某一类数据

热门文章

  1. 安装nginx—并创建域名主机
  2. 将python打包成exe文件(携带附属文件)
  3. 操作系统进程的三种基本状态及其相互关系
  4. 圣才e书题库e考安卓版专用手机APP考试软件下载安装
  5. 查看Vue版本 node.js版本vue-cli版本
  6. 微信小程序日历基础版(可以自行修改想要的其它效果)
  7. 二叉树非递归中序遍历
  8. 黑莲花在服务器维护后,怀旧服黑莲花被改后价格暴跌!该抄底了?商人坦言:现还不是时候...
  9. dumpbin的使用方法_Dumpbin 工具的使用-阿里云开发者社区
  10. javascript 快速排序算法