国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Monkey測試教程

2019-11-09 16:04:37
字體:
供稿:網(wǎng)友

20170209整理

 很抱歉,文檔里的圖片都未能copy過來。。。

 

什么是monkey,它能干什么?

Monkey術(shù)語叫“猴子測試”,是指沒有測試經(jīng)驗的人進(jìn)行的測試是毫無目的,亂按亂點。

Monkey是Android系統(tǒng)自帶的一個命令行測試工具。通過monkey用隨機重復(fù)的方法對應(yīng)用程序進(jìn)行一些穩(wěn)定性,健壯性方面的測試,是一種快速有效的測試方法。

 

Monkey測試本身非常簡單,就是模擬用戶的按鍵輸入,觸摸屏輸入,手勢輸入等,看設(shè)備多長時間會出異常。原理就是向被測試的程序發(fā)送偽隨機的用戶事件流。

 

測試結(jié)果如何分析?

一.   初步分析方法:

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

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

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

3、 若以上步驟還不能找出,可以使用之前執(zhí)行的monkey命令再執(zhí)行一遍,注意seed值要一樣。

一般的測試結(jié)果分析:1、 ANR問題:在日志中搜索“ANR”

2、 崩潰問題:在日志中搜索“Exception”

 

二.   詳細(xì)分析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中查找問題的所在。:Switch:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.tencent.smtt/.SplashActivity

 

具體問題將在后面詳細(xì)分析。

 

具體安裝與操作演示(windows下)

1.      執(zhí)行monkey都需要什么基礎(chǔ)玩意呢?

因為Monkey是個命令行執(zhí)行的,所以我們需要執(zhí)行工具

這個工具叫adb.exe,那么adb如何執(zhí)行呢?當(dāng)然是cmd.exe!

 

Cmd.exe 里執(zhí)行 adb shell 查看本機是否有adb.

 

推薦綁定環(huán)境變量。

比如我的地址是:

D:/tools/adt-bundle-windows-x86_64-20140702/sdk/platform-tools

將此右擊 “我的電腦”à “屬性”à “高級設(shè)置”à “環(huán)境變量”

Path里加入上面地址。

然后cmd,輸入adb.exe試試吧,一定要重新打開cmd。

 

2.      運行adb sheel monkey

在cmd里運行:adb shell monkey

這是沒有虛擬機或者沒有連接設(shè)備。

當(dāng)你連接設(shè)備后出下面提示:

 

我想查看當(dāng)前手機都裝了什么軟件?

步驟:

1.      adb shell

2.      su root

3.      cd data

4.      cd data

5.      ls

將列出所有安裝的軟件的包名!爽吧?

 

悲催的事1:運行su root的時候:

pc進(jìn)入android手機shell需要root權(quán)限(su: notfound)

“網(wǎng)上說,因為操作系統(tǒng)本來就沒有添加root用戶,需要下載一個一鍵root來生成root用戶;下了個,安裝后,運行一鍵root;再運行 su,果然好使了,變成 #了。”

 

3.      簡單的monkey測試---測試日歷程序

前文書說過我查看手機都裝啥軟件的時候提示我shell命里需要root權(quán)限。

Monkey是不需要root權(quán)限的,可以直接用。

 

我已知日歷程序的包名是:com.android.calendar

輸入:adb shell monkey –p com.android.calendar 100

如圖:

在你的設(shè)備上將看到:日歷被啟動,噼里啪啦的一頓亂變!并在測試后停到最終頁面。

如圖:

 

4.      如何查看monkey執(zhí)行過程信息?

通過 –v 參數(shù)。

通過-v參數(shù)可以指定打印信息的詳細(xì)級別,多一個-v多一個級別!

級別

表示

描述

0

-v

打印最基本的事件

1

-v-v

更全面的信息,如增加了那些Activity被選中

2

-v-v-v

最全面的信息

 

舉例:

還是日歷程序,我們看看-v都返回了什么信息。

Cmd輸入: adb shell monkey -v -p com.android.calendar 100

結(jié)果如圖:

 

具體解讀:

1.      Seed字段

我們剛才執(zhí)行monkey時,沒有指定seed,在報告一開始,可以看到其自動生成的seed值,如果我們指定了seed,則可以使用相同的seed來生成相同的序列。注意:不能完全重復(fù)上次操作,但是具體操作事件是相同的。比如點擊->向左拖動->釋放這幾個事件這是相同的,但具體涉及的坐標(biāo)是不相同的。

   

2.      AllowPackage字段

只允許com.android.calendar包中的Activity(活動)

 

3.      IncludeCategory字段

啟動的意圖

 

4.      本次偽隨機事件中各種類型的事件比例

這里將事件分為了10種類型,分別為:

0:觸摸事件百分比,即參數(shù)--pct-touch

1:滑動事件百分比,即參數(shù)--pct-motion

2:縮放事件百分比,即參數(shù)--pct-pinchzoom

3:軌跡球事件百分比,即參數(shù)--pct-trackball

4:屏幕旋轉(zhuǎn)事件百分比,

5:基本導(dǎo)航事件百分比,即參數(shù)--pct-nav

6:主要導(dǎo)航事件百分比,即參數(shù)--pct-majornav

7:系統(tǒng)事件百分比,即參數(shù)--pct-syskeys

8:Activity啟動事件百分比,即參數(shù)--pct-appswitch

9:鍵盤翻轉(zhuǎn)事件百分比,即參數(shù)--pct-flip

10:其他事件百分比,即參數(shù)--pct-anyevent

更為具體的類型信息,可以查看查看Monkey源碼

 

5.      Switch

表示跳轉(zhuǎn)到com.android.calendar里的AllInOneActivity里。

 

6.      //Allowing start of Intent

表示允許啟動這個活動意圖。

 

7.      Sleeping

允許在發(fā)送各種隨機事件時有一個延時。如果沒有表示立即執(zhí)行,不停頓。

                  

8.      Sending:

具體執(zhí)行的隨機事件。

 

9.      injected

執(zhí)行100次具體事件

 

10.  rotation

屏幕旋轉(zhuǎn)信息,角度和是否保持旋轉(zhuǎn)狀態(tài)。

 

11.  Dropped

丟棄的事件。

 

12.  網(wǎng)絡(luò)耗時

包括:手機占用的,wifi占用的,連接占用的。

 

5.      如何查看anr,崩潰問題?

在注意查找日志中的無響應(yīng)問題和崩潰問題。

無響應(yīng)問題可以在日志中搜索 “ANR”,崩潰問題搜索 “CRASH”,內(nèi)存泄露問題搜索"GC"(需進(jìn)一步分析),異常問題搜索 “Exception”(如果出現(xiàn)空指針, NullPointerException,需格外重視)。

 

6.      Monkey各類事件(參數(shù))

常規(guī)--help列出簡單的用法。-v命令行的每一個-v將增加反饋信息的級別。Level 0(缺省值)除 啟動提示、測試完成和最終結(jié)果之外,提供較少信息。Level 1提供較為詳細(xì)的測試信息,如逐個發(fā)送到Activity的 事件。Level 2提供更加詳細(xì)的設(shè)置信息,如測試中被選中的或未被選中的Activity。事件-s <seed>偽隨機數(shù)生成器的seed值。如果用相同的seed值再次運行Monkey, 它將生成相同的事件序列。

例子:

adb shell monkey -v -p com.android.calendar –s 404 100

如果兩次執(zhí)行,那么事件相同。--throttle <milliseconds>在事件之間插入固定延遲。通過這個選項可以減緩Monkey的執(zhí)行速度。如果不指定該選項,Monkey將 不會被延遲,事件將盡可能快地被產(chǎn)成。例子:

adb shell monkey -v -p com.android.calendar –throttle 1000 100

表示每次事件間隔1秒。

--pct-touch <percent>調(diào)整觸摸事件的百分比(觸摸事件是一個down-up事件,它發(fā)生在屏幕上的某單一 位置)。--pct-motion <percent>調(diào)整動作事件的百分比(動作事件由屏幕上某處的一個down事件、一系列的偽隨機事 件和一個up事件組成)。--pct-trackball <percent>調(diào)整軌跡事件的百分比(軌跡事件由一個或幾個隨機的移動組成,有時還伴隨有點擊)。--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、End Call及音量控制鍵)。--pct-appswitch <percent>調(diào)整啟動Activity的百分比。在隨機間隔里,Monkey將執(zhí)行一個startActivity()調(diào) 用,作為最大程度覆蓋包中全部Activity的一種方法。--pct-anyevent <percent>調(diào)整其它類型事件的百分比。它包羅了所有其它類型的事件,如:按鍵、其它不常用的設(shè)備按鈕、等等。約束限制-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選 項只能用于一個類別。調(diào)試--dbg-no-events設(shè)置此選項,Monkey將執(zhí)行初始啟動,進(jìn)入到一個測試Activity,然后不 會再進(jìn)一步生成事件。為了得到最佳結(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ā)生任何超時錯誤(如“application Not Responding”對 話框)時,Monkey將停止運行。如果設(shè)置此選項,Monkey將繼 續(xù)向系統(tǒng)發(fā)送事件,直到計數(shù)完成。--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ā)生錯誤的進(jìn)程。注意,正常的(成功的)結(jié)束,并沒有停止啟動的進(jìn)程,設(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)試器和它相連接。

 

         綜合示例:

adb shell monkey -v -v --ignore-crashes --ignore-timeouts --kill-process-after-error-p com.android.calendar --throttle 500 -s 404 100

 

7.      如何將結(jié)果輸出到文件?

只需要 在后面加上>路徑即可。

例:adb shell monkey -v -p com.android.calendar 100 >D:/calendar_1.txt

 

8.      Monkey也是可以做自動化測試的,你知道不?

后續(xù)補充。

難點在于你要知道都有什么控件,叫啥名字,位置。但是這些是可以解決的,有一個工具叫:uiautomatorviewer 在sdk/tools/uiautomatorviewer.bat.

來,看一眼這個牛掰liti的工具截圖:

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 湖口县| 墨脱县| 安龙县| 宝清县| 夏津县| 且末县| 桦川县| 共和县| 岳阳县| 二手房| 山东省| 望谟县| 乌拉特前旗| 策勒县| 溧阳市| 永安市| 泰来县| 黑龙江省| 荆州市| 措勤县| 上林县| 扎赉特旗| 孝昌县| 铁岭县| 陕西省| 米脂县| 驻马店市| 云林县| 桐柏县| 类乌齐县| 德令哈市| 鄂尔多斯市| 肥西县| 建阳市| 平原县| 红河县| 正镶白旗| 蒙阴县| 西盟| 马鞍山市| 高清|