zoukankan      html  css  js  c++  java
  • 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 %~dp0config.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:Monkey20140808FindyouV1.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 
  • 相关阅读:
    MATLAB GUI制作快速入门
    JavaFX Chart设置数值显示
    Unity查找物体的四大主流方法及区别
    Matlab 图像转极坐标系
    使用python获得N个区分度较高的RGB颜色值
    Arduino学习笔记30
    Arduino学习笔记27
    Arduino学习笔记26
    Arduino学习笔记25
    Arduino学习笔记24
  • 原文地址:https://www.cnblogs.com/findyou/p/3936063.html
Copyright © 2011-2022 走看看