Monkey分析教學(xué)講解課件_第1頁
Monkey分析教學(xué)講解課件_第2頁
Monkey分析教學(xué)講解課件_第3頁
Monkey分析教學(xué)講解課件_第4頁
Monkey分析教學(xué)講解課件_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Monkey

什么是Monkey

Monkey測試是Android平臺自動化測試的一種手段,通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、按鍵等操作來對設(shè)備上的程序進行壓力測試,檢測程序多久的時間會發(fā)生異常??梢赃\行在模擬器里或?qū)嶋H設(shè)備中。它向系統(tǒng)發(fā)送偽隨機的用戶事件流,實現(xiàn)對正在開發(fā)的應(yīng)用程序進行壓力測試。1)Monkey程序由Android系統(tǒng)自帶,使用Java語言寫成,在Android文件系統(tǒng)中的存放路徑是:/system/framework/monkey.jar;2)Monkey.jar程序是由一個名為“monkey”的Shell腳本來啟動執(zhí)行,shell腳本在Android文件系統(tǒng)中的存放路徑是:/system/bin/monkey;

這樣就可以通過在CMD窗口中執(zhí)行:adbshellmonkey{+命令參數(shù)}來進行Monkey測試了。

為什么要用Monkey測試?

簡單的說Money就是像猴子一樣亂點,為了測試軟件的穩(wěn)定性,健壯性。號稱最快速有效的方法。有時候運行相同系列的測試,即使是復(fù)雜的測試,但是以相同的順序和路徑,即使一遍又一遍地運行也很少機會能發(fā)現(xiàn)內(nèi)存和資源使用的bug。而此時猴子就比人更有效了。

Monkey測試實例一、模擬器1、安裝安卓模擬器(配置環(huán)境、安裝javaJDK)2、運行eclipse(win7下用管理員身份運行)3、創(chuàng)建設(shè)置模擬器勾選下面框內(nèi)選項,能使用電腦鍵盤,并顯示手機鍵盤4、填寫信息后顯示的頁面,選中點擊右側(cè)的start,啟動(初次較慢)5、將需要安裝的apk文件復(fù)制到platform-tools目錄下(我存放的位置E:\test\sdk\platform-tools)。為安裝方便,這里將其命名為game.apk

6、打開命令提示符窗口。輸入cdE:\test\sdk\platform-tools,進入platform-tools目錄

7、在cmd窗口中的platform-tools目錄下輸入adbinstallgame.apk,回車,稍等,完成apk在模擬器上的安裝-----當(dāng)出現(xiàn)這樣的錯誤時,輸入adbkill-server命令,再安裝就行了二、真實設(shè)備1、啟動eclipse,打開查看log的頁面2、設(shè)備連接電腦安裝驅(qū)動三、運行1、在命令提示符中輸入adbdevices查看有無連接的設(shè)備(轉(zhuǎn)到cde:\test\sdk\platform-tools目錄下輸入adbdevices命令)2、確認有設(shè)備連接,進入shell界面輸入adbshell3、查看設(shè)備中的安裝包lsmnt/sdcard4、輸入monkey命令monkey-pcom.android.yunhao-500Monkey包括許多選項,它們大致分為四大類:基本配置選項,如設(shè)置嘗試的事件數(shù)量。運行約束選項,如設(shè)置只對單獨的一個包進行測試。事件類型和頻率。調(diào)試選項。Monkey命令參數(shù)-help列出簡單的用法介紹最簡單monkey命令用法,其使用格式為如下:

-v命令行的每一個-v將增加反饋信息的級別。Level0(缺省值)除啟動提示、測試完成和最終結(jié)果之外,提供較少信息。Level1提供較為詳細的測試信息,如逐個發(fā)送到ActivITy的事件。Level2提供更加詳細的設(shè)置信息,如測試中被選中的或未被選中的Activity。monkey

n

其中,n為一個整數(shù),表示用于測試的偽隨機事件發(fā)生的次數(shù)。例子分析:monkey-pcom.android.yunhao-v--throttle500--pct-trackball

100100Monkey基本配置選項-s<seed>偽隨機數(shù)生成器的seed值。如果用相同的seed值再次運行Monkey,它將生成相同的事件序列。--throttle<milliseconds>在事件之間插入固定延遲。通過這個選項可以減緩Monkey的執(zhí)行速度。如果不指定該選項,Monkey將不會被延遲,事件將盡可能快地被產(chǎn)成。--pct-touch<percent>調(diào)整觸摸事件的百分比(觸摸事件是一個down-up事件,它發(fā)生在屏幕上的某單一位置)。--pct-motion<percent>調(diào)整動作事件的百分比(動作事件由屏幕上某處的一個down事件、一系列的偽隨機事件和一個up事件組成)。--pct-trackball<percent>調(diào)整軌跡事件的百分比(軌跡事件由一個或幾個隨機的移動組成,有時還伴隨有點擊)。Monkey事件命令--pct-nav<percent>調(diào)整“基本”導(dǎo)航事件的百分比(導(dǎo)航事件由來自方向輸入設(shè)備的up/down/left/right組成)。--pct-majornav<percent>調(diào)整“主要”導(dǎo)航事件的百分比(這些導(dǎo)航事件通常引發(fā)圖形界面中的動作,如:5-way鍵盤的中間按鍵、回退按鍵、菜單按鍵)

--pct-syskeys<percent>調(diào)整“系統(tǒng)”按鍵事件的百分比(這些按鍵通常被保留,由系統(tǒng)使用,如Home、Back、StartCall、EndCall及音量控制鍵)。

--pct-appswitch<percent>調(diào)整啟動Activity的百分比。在隨機間隔里,Monkey將執(zhí)行一個startActivity()調(diào)用,作為最大程度覆蓋包中全部Activity的一種方法。

--pct-anyevent<percent>調(diào)整其它類型事件的百分比。它包羅了所有其它類型的事件,如:按鍵、其它不常用的設(shè)備按鈕、等等。

Monkey事件命令-p<allowed-package-name>如果用此參數(shù)指定了一個或幾個包,Monkey將只允許系統(tǒng)啟動這些包里的Activity。如果你的應(yīng)用程序還需要訪問其它包里的Activity(如選擇取一個聯(lián)系人),那些包也需要在此同時指定。如果不指定任何包,Monkey將允許系統(tǒng)啟動全部包里的Activity。要指定多個包,需要使用多個-p選項,每個-p選項只能用于一個包。

-c<main-category>如果用此參數(shù)指定了一個或幾個類別,Monkey將只允許系統(tǒng)啟動被這些類別中的某個類別列出的Activity。如果不指定任何類別,Monkey將選擇下列類別中列出的Activity:Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多個類別,需要使用多個-c選項,每個-c選項只能用于一個類別。Monkey約束限制命令--dbg-no-events設(shè)置此選項,Monkey將執(zhí)行初始啟動,進入到一個測試Activity,然后不會再進一步生成事件。為了得到最佳結(jié)果,把它與-v、一個或幾個包約束、以及一個保持Monkey運行30秒或更長時間的非零值聯(lián)合起來,從而提供一個環(huán)境,可以監(jiān)視應(yīng)用程序所調(diào)用的包之間的轉(zhuǎn)換。

--hprof設(shè)置此選項,將在Monkey事件序列之前和之后立即生成profiling報告。這將會在data/misc中生成大文件(~5Mb),所以要小心使用它。

--ignore-crashes通常,當(dāng)應(yīng)用程序崩潰或發(fā)生任何失控異常時,Monkey將停止運行。如果設(shè)置此選項,Monkey將繼續(xù)向系統(tǒng)發(fā)送事件,直到計數(shù)完成。--ignore-timeouts通常,當(dāng)應(yīng)用程序發(fā)生任何超時錯誤(如“ApplicationNotResponding”對話框)時,Monkey將停止運行。如果設(shè)置此選項,Monkey將繼續(xù)向系統(tǒng)發(fā)送事件,直到計數(shù)完成。

Monkey調(diào)試命令--ignore-security-exceptions

通常,當(dāng)應(yīng)用程序發(fā)生許可錯誤(如啟動一個需要某些許可的Activity)時,Monkey將停止運行。如果設(shè)置了此選項,Monkey將繼續(xù)向系統(tǒng)發(fā)送事件,直到計數(shù)完成。

--kill-process-after-error

通常,當(dāng)Monkey由于一個錯誤而停止時,出錯的應(yīng)用程序?qū)⒗^續(xù)處于運行狀態(tài)。當(dāng)設(shè)置了此選項時,將會通知系統(tǒng)停止發(fā)生錯誤的進程。注意,正常的(成功的)結(jié)束,并沒有停止啟動的進程,設(shè)備只是在結(jié)束事件之后,簡單地保持在最后的狀態(tài)。

--monitor-native-crashes

監(jiān)視并報告Android系統(tǒng)中本地代碼的崩潰事件。如果設(shè)置了--kill-process-after-error,系統(tǒng)將停止運行。

--wait-dbg

停止執(zhí)行中的Monkey,直到有調(diào)試器和它相連接。Monkey調(diào)試命令注意事項:

在Monkey運行的時候,它生成事件,并把它們發(fā)給系統(tǒng)。同時,Monkey還對測試中的系統(tǒng)進行監(jiān)測,對下列三種情況進行特殊處理:

如果限定了Monkey運行在一個或幾個特定的包上,那么它會監(jiān)測試圖轉(zhuǎn)到其它包的操作,并對其進行阻止。

如果應(yīng)用程序崩潰或接收到任何失控異常,Monkey將停止并報錯。如果應(yīng)用程序產(chǎn)生了應(yīng)用程序不響應(yīng)(applicationnotresponding)的錯誤,Monkey將會停止并報錯。

按照選定的不同級別的反饋信息,在Monkey中還可以看到其執(zhí)行過程報告和生成的事件。Monkey停止條件Monkey測試結(jié)果分析一、初步分析方法:

Monkey測試出現(xiàn)錯誤后,一般的差錯步驟為以下幾步:

1、找到是monkey里面的哪個地方出錯

2、查看Monkey里面出錯前的一些事件動作,并手動執(zhí)行該動作

3、若以上步驟還不能找出,可以使用之前執(zhí)行的monkey命令再執(zhí)行一遍,注意seed值要一樣一般的測試結(jié)果分析:

1、ANR問題:在日志中搜索“ANR”(ApplicationNotResponding)

2、崩潰問題:在日志中搜索“Exception”二.詳細分析monkey日志:

將執(zhí)行Monkey生成的log,從手機中導(dǎo)出并打開查看該log;在log的最開始都會顯示Monkey執(zhí)行的seed值、執(zhí)行次數(shù)和測試的包名。

首先我們需要查看Monkey測試中是否出現(xiàn)了ANR或者異常,具體方法如上述。

然后我們要分析log中的具體信息,方法如下:

查看log中第一個Switch,主要是查看Monkey執(zhí)行的是哪一個Activity,譬如下面的log中,執(zhí)行的是com.tencent.smtt.SplashActivity,在下一個swtich之間的,如果出現(xiàn)了崩潰或其他異常,可以在該Activity中查找問題的所在。Monkey測試結(jié)果分析總結(jié):

在monkey測試中常用的命令組合有:1、monkey-pcom.yourpackage-v500//簡單的輸出測試的信息。2、monkey-pcom.yourpackage-v-v-v500//以深度為三級輸出測試信息。3、monkey-pcom.yourpackage--port端口號-v//為測試分配一個專用的端口號,不過這個命令只能輸出跳轉(zhuǎn)的信息及有錯誤時輸出信息。4、monkey-pcom.yourpackage-s數(shù)字-v500//為隨機數(shù)的事件序列定一個值,若出現(xiàn)問題下次可以重復(fù)同樣的系列進行排錯。5、monkey-pcom.yourpackage-v--throttle3000500//為每一次執(zhí)行一次有效的事件后休眠3000毫秒。此條命令:表示分鐘執(zhí)行80次

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論