老菜鳥(niǎo)帶你皮一下:你從來(lái)沒(méi)有想過(guò)的Monkey測(cè)試!-創(chuàng)新互聯(lián)

Monkey,也就是猴子,hin皮,所以Monkey測(cè)試,顧名思義也就像猴子一樣在軟件上亂敲按鍵來(lái)測(cè)試。猴子什么都不懂,只知道亂按。Monkey原理也是類似,通過(guò)向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢(shì)輸入等),實(shí)現(xiàn)對(duì)應(yīng)用程序的測(cè)試。

創(chuàng)新互聯(lián)專注于武威網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供武威營(yíng)銷型網(wǎng)站建設(shè),武威網(wǎng)站制作、武威網(wǎng)頁(yè)設(shè)計(jì)、武威網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造武威網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供武威網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

我相信,大多數(shù)測(cè)試員都知道Monkey測(cè)試,甚至都用過(guò),但是你可能不敢說(shuō)自己對(duì)Monkey測(cè)試有多熟悉??粗孟窈芎?jiǎn)單,但是我們?nèi)绾慰焖俚娜ナ煜onkey測(cè)試呢?

老菜鳥(niǎo)帶你皮一下:你從來(lái)沒(méi)有想過(guò)的Monkey測(cè)試!

一、Monkey測(cè)試的基本方法

今天,想簡(jiǎn)單地分享點(diǎn)Android的Monkey測(cè)試。親測(cè)了一波,Monkey測(cè)試作為輔助測(cè)試,還是可以用用的,簡(jiǎn)單不費(fèi)力。

Monkey是Android中的一個(gè)命令行工具,可以運(yùn)行在模擬器里或?qū)嶋H設(shè)備中。只要安裝了adb,就可以進(jìn)行Monkey測(cè)試了。

在做Monkey測(cè)試前,需要先安裝adb(adb的環(huán)境配置,網(wǎng)上有很多教程,此處不做詳細(xì)描述)。然后手機(jī)連接上電腦,打開(kāi)菜單,輸入“cmd”打開(kāi),輸入命令行“adb devices”來(lái)確定設(shè)備是否連接成功。若連接成功,會(huì)顯示設(shè)備序列號(hào),參考下圖。

老菜鳥(niǎo)帶你皮一下:你從來(lái)沒(méi)有想過(guò)的Monkey測(cè)試!

還有,測(cè)試人員需要知道測(cè)試app的包名??梢酝ㄟ^(guò)使用“uiautomatorviewer.bat”工具(后期文章中描述)來(lái)獲取包名,也可以直接詢問(wèn)提供app的開(kāi)發(fā)人員,或者直接使用adb命令獲取包名。

簡(jiǎn)單地介紹一種:通過(guò)adb命令獲取包名。首先要先打開(kāi)手機(jī)中需要獲取包名的app。然后分別輸入命令即可。如下圖,該app的包名是“com.screeclibinvoke”。

1、adb shell

2、dumpsys activity | grepmFocusedActivity

老菜鳥(niǎo)帶你皮一下:你從來(lái)沒(méi)有想過(guò)的Monkey測(cè)試!

然后輸入一句簡(jiǎn)單的Monkey命令,即可開(kāi)始測(cè)試。

adb shell monkey -p com.screeclibinvoke 1000 (指定包名是“com.screeclibinvoke”的應(yīng)用,隨機(jī)執(zhí)行1000個(gè)模擬事件)。

二、Monkey的常用命令

下面列出了Monkey可以使用的參數(shù)。

基本參數(shù)

--help打印幫助文檔

-v命令行中的每一個(gè)-v將增加反饋信息的級(jí)別。Level 0(也是默認(rèn)值)除啟動(dòng)提示、測(cè)試完成和最終結(jié)果之外,其他的信息很少。Level 1提供較為詳細(xì)的測(cè)試信息,如逐個(gè)發(fā)送到Activity的事件。Level 2提供更加詳細(xì)的設(shè)置信息,如測(cè)試中被選中的或未被選中的Activity,例子adb shell -v -v 500

-s偽隨機(jī)生成器的種子。如果seed值一樣,那么產(chǎn)生的monkey事件,序列也是一樣的

--throttle <毫秒>在事件之間加入固定時(shí)間延遲,單位毫秒。如果不加,monkey會(huì)盡可能快地產(chǎn)生事件

--pct-touch調(diào)整觸摸事件的百分比(觸摸就是一個(gè)點(diǎn)擊事件)

--pct-motion調(diào)整動(dòng)作事件的百分比,(動(dòng)作事件指一個(gè)down事件,一系列隨機(jī)事件,然后一個(gè)up事件)

--pct-trackball調(diào)整軌跡事件的百分比,(軌跡事件由一個(gè)或多個(gè)移動(dòng)組成,有時(shí)伴隨點(diǎn)擊事件)

--pct-nav調(diào)整基本導(dǎo)航事件的百分比,(導(dǎo)航事件就是方向鍵,上下左右)

--pct-majornav調(diào)整主要導(dǎo)航事件的百分比(這些導(dǎo)航事件通常引發(fā)圖形界面中的動(dòng)作,如5-way鍵盤(pán)的中間按鍵,回退按鍵,菜單按鍵)

--pct-syskeys調(diào)整系統(tǒng)按鍵事件的百分比(這些事件由系統(tǒng)保留,如Home、Back、Start、Call、End Call及音量控制鍵)

--pct-appswitch調(diào)整啟動(dòng)activity的百分比。在隨機(jī)間隔里,Monkey將執(zhí)行一個(gè)startActivity()調(diào)用,作為大程度覆蓋保重全部Activity的一種方法。

--pct-anyevent調(diào)整其他類型事件的百分比。包含了所有其他類型的事件,如按鍵、其他不常使用的設(shè)備按鍵、等。

操作約束

-p如果使用該參數(shù)指定了一個(gè)或幾個(gè)包,monkey將只允許啟動(dòng)這些包中的activity。如果你的程序,需要訪問(wèn)別的activity(如聯(lián)系人界面),那必須將聯(lián)系人的包也指定一下,否則無(wú)法訪問(wèn)。如果沒(méi)有指定包名,monkey將允許啟動(dòng)安裝在手機(jī)上的所有包。如果要指定多個(gè)包,需要多個(gè)-p選項(xiàng),每個(gè)-p指定一個(gè)包。

-c如果使用此參數(shù)指定了一個(gè)或多個(gè)類別,Monkey將只允許系統(tǒng)啟動(dòng)被這些類別中的某個(gè)類別列出的Activity,如果不指定任何類別,Monkey將選擇下列類別中列出的Activity:

Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多個(gè)類別,需要多個(gè)-c選項(xiàng)。

調(diào)試選項(xiàng)

--dbg-no-event設(shè)置此選項(xiàng),Monkey將執(zhí)行初始啟動(dòng),進(jìn)入到一個(gè)測(cè)試Activity,然后不再產(chǎn)生事件。為了得到最佳結(jié)果,把它與-v,一個(gè)或幾個(gè)包約束,以及一個(gè)保持Monkey運(yùn)行30秒或更長(zhǎng)事件的非零值聯(lián)合起來(lái),從而提供一個(gè)環(huán)境,可以監(jiān)視應(yīng)用程序所調(diào)用的包之間的轉(zhuǎn)換。

--hprof設(shè)置此選項(xiàng),將在Monkey事件序列之前和之后立即生成profiling報(bào)告。這將會(huì)在data/misc中生成大文件(5M),所以小心使用。

--ignore-crashes通常,當(dāng)被測(cè)app崩潰或者發(fā)生任何失控異常時(shí),Monkey將停止運(yùn)行。如果設(shè)置此選項(xiàng),Monkey會(huì)繼續(xù)向系統(tǒng)發(fā)送事件,直到計(jì)數(shù)完畢。

--ignore-timeouts通常,當(dāng)被測(cè)程序出現(xiàn)未響應(yīng)時(shí),Monkey會(huì)停止運(yùn)行。如果設(shè)置此選項(xiàng),Monkey會(huì)繼續(xù)運(yùn)行,直到結(jié)束。

--ignore-security-excuptions通常,當(dāng)被測(cè)程序發(fā)生可允許錯(cuò)誤(如啟動(dòng)一個(gè)需要授權(quán)的Activity)時(shí),Monkey將停止運(yùn)行。如果設(shè)置此選項(xiàng),Monkey將繼續(xù)運(yùn)行,直到結(jié)束。

--kill-process-after-error通常,當(dāng)Monkey由于一個(gè)錯(cuò)誤而停止運(yùn)行時(shí),出錯(cuò)的應(yīng)用程序?qū)⒗^續(xù)運(yùn)行。如果設(shè)置此選項(xiàng),將會(huì)通知系統(tǒng)停止發(fā)送錯(cuò)誤的進(jìn)程。注意:程序正常結(jié)束,該程序并沒(méi)有被停止。設(shè)備只是在結(jié)束事件后,簡(jiǎn)單保持在最后的狀態(tài)。

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

--wait-dbg停止執(zhí)行中的Monkey,直到有調(diào)試器和它相連。

三、Monkey的實(shí)例

我使用如下命令做一波Monkey測(cè)試,最終在電腦D盤(pán)生成a.log日志文件。

adb shell monkey -p com.screeclibinvoke --throttle300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions--ignore-native-crashes --monitor-native-crashes -v -v -v 10000>D:\a.log

在Monkey測(cè)試過(guò)程中可能會(huì)出現(xiàn)程序崩潰(CRASH)和程序無(wú)響應(yīng)的情況(ANR)。CRASH即崩潰信息,程序在運(yùn)行中非正常退出。設(shè)置忽略crashes等情況,當(dāng)運(yùn)行如上命令之后,在生成的日志中搜索關(guān)鍵字“CRASH”或“NAR”,可直接根據(jù)log日志定位bug并修復(fù),也可根據(jù)seed值來(lái)完成bug的復(fù)現(xiàn)。

歡迎加入  51軟件測(cè)試大家庭,在這里你將獲得【最新行業(yè)資訊】,【免費(fèi)測(cè)試工具安裝包】,【軟件測(cè)試技術(shù)干貨】,【面試求職技巧】... 51與你共同學(xué)習(xí),一起成長(zhǎng)!期待你的加入: QQ                    群:                   755431660

本文名稱:老菜鳥(niǎo)帶你皮一下:你從來(lái)沒(méi)有想過(guò)的Monkey測(cè)試!-創(chuàng)新互聯(lián)
當(dāng)前URL:http://bm7419.com/article30/dscoso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)動(dòng)態(tài)網(wǎng)站、虛擬主機(jī)用戶體驗(yàn)、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)