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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM