qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          Android Monkey測(cè)試

            Android中的monkey是對(duì)app做界面壓力測(cè)試的一款工具,它可以向模擬器或者真機(jī)發(fā)送一系列隨機(jī)的用戶(hù)操作事件、或者系統(tǒng)事件。
            概述
            Monkey是android sdk自帶的一款命令行工具,適用于任何android模擬器或者真機(jī)。它通過(guò)向手機(jī)發(fā)送一系列的隨機(jī)事件,來(lái)測(cè)試手機(jī)app的穩(wěn)定性。
            Monkey命令包含一些參數(shù),大體可以分為四類(lèi):
            基本參數(shù),如指定隨機(jī)事件的個(gè)數(shù)
            操作約束,如限制隨機(jī)操作在指定的包內(nèi)
            事件類(lèi)型和頻率
            調(diào)試選項(xiàng)
            Monkey運(yùn)行過(guò)程中,向android系統(tǒng)發(fā)送隨機(jī)事件。并且,monkey會(huì)監(jiān)視android系統(tǒng)的運(yùn)行狀態(tài),保證下面的三點(diǎn):
            如果我們限制了monkey只在一個(gè)或幾個(gè)包中運(yùn)行。那么monkey在運(yùn)行過(guò)程中會(huì)監(jiān)視產(chǎn)生的隨機(jī)事件,如果某一事件會(huì)跳到其他包中,monkey就會(huì)丟棄該事件,確保monkey只在指定的包中運(yùn)行。
            如果我們的程序出現(xiàn)crash或者有未被捕獲的異常,monkey就會(huì)停止運(yùn)行,并報(bào)錯(cuò)。
            如果我們的程序出現(xiàn)未響應(yīng),monkey會(huì)停止運(yùn)行,并報(bào)錯(cuò)。
            Monkey的基本用法
            我們可以在直接在命令行或者腳本中運(yùn)行monkey,前提是android sdk環(huán)境已經(jīng)ok。
            基本語(yǔ)法如下:
            $ adb shell monkey [options]
            如果沒(méi)有其他參數(shù)限制,monkey默認(rèn)以quiet模式運(yùn)行,它會(huì)隨機(jī)向手機(jī)中的包發(fā)送請(qǐng)求。一般請(qǐng)求,我們都需要指定包名,下面的命令限制了包名,且指定產(chǎn)生500個(gè)隨機(jī)事件:
            $ adb shell monkey -p com.yeetrack.android.client -v 500
            Monkey的參數(shù)
            下面列出了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)整其他類(lèi)型事件的百分比。包含了所有其他類(lèi)型的事件,如按鍵、其他不常使用的設(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è)類(lèi)別,Monkey將只允許系統(tǒng)啟動(dòng)被這些類(lèi)別中的某個(gè)類(lèi)別列出的Activity,如果不指定任何類(lèi)別,Monkey將選擇下列類(lèi)別中列出的Activity:
            Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多個(gè)類(lèi)別,需要多個(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)試器和它相連。
            最后一個(gè)簡(jiǎn)單的例子:
            每0.5秒發(fā)送一個(gè)請(qǐng)求,包名com.yeetrack.android.app,總共發(fā)送請(qǐng)求2000個(gè)。
            adb shell monkey -v 2000 --throttle 500 -p com.yeetrack.android.app

          posted on 2014-02-13 16:02 順其自然EVO 閱讀(435) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): android

          <2014年2月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          2324252627281
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 瓦房店市| 曲周县| 黎川县| 广安市| 富阳市| 长宁县| 云龙县| 浠水县| 新巴尔虎右旗| 正蓝旗| 武乡县| 长宁县| 枞阳县| 合江县| 鄂托克旗| 卢龙县| 潼南县| 竹北市| 庆元县| 来宾市| 西盟| 和龙市| 巫溪县| 额济纳旗| 武平县| 宜宾市| 安顺市| 仲巴县| 奎屯市| 榆社县| 固镇县| 辽阳县| 辉南县| 恭城| 古交市| 湟中县| 新龙县| 孝感市| 长兴县| 旬邑县| 石狮市|