目录

1、Findyou的Monkey脚本

2、Findyou脚本讲解

3、操作记录

4、其他


 


1)、【脚本文件】

a、配置文件:config.conf

config.conf 
  

    [appinfo] 
  
 
  

    appCnName=Findyou 
  
 
  
appEnName=Findyou 
  
 
  
appversion=V1.0.0 
  
 
  
packageName=com.Findyou.you

    

 

Python fastapi打包成镜像体积很大_Android

@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命令

shell


 
 

   -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测试提升效率批处理脚本》 
 
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

Python fastapi打包成镜像体积很大_Monkey_02

 

2)、脚本执行信息

Python fastapi打包成镜像体积很大_Monkey_03

 

3)、输出结果

Python fastapi打包成镜像体积很大_Monkey_04

 

 

4、其他

此篇基本已完成,下次有空再分享Monkey日志、手机日志自动分析。例:

Python fastapi打包成镜像体积很大_Monkey_05


很简单原理,搜索关键字,简单判断,改天再整一篇,把脚本上传分享。