版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
5.1IOS測試策略測試策略會貫穿整個測試工程,它包括測試中每一個階段的工具、流程和方法的描述。在之前的章節(jié)中雖然涉及工具和方法等方面的描述,但都比較分散并且沒有明確地提出測試策略這個概念。本章將會針對ios的測試策略及測試方法進(jìn)行闡述。5.1IOS測試策略1.功能測試功能測試是最主要的測試類型。測試工程師需要根據(jù)產(chǎn)品的需求、用戶的使用場景和代碼實(shí)現(xiàn)方式等設(shè)計測試用例,并且認(rèn)真執(zhí)行。之前介紹的一些自動化測試技術(shù)會從不同的層面來完成功能測試。2.兼容性測試兼容性測試又被稱為適配測試。兼容性測試的目的是要確保應(yīng)用程序可以在所支持的系統(tǒng)平臺上正常運(yùn)行。兼容性測試主要由硬件兼容性測試、軟件兼容性測試和數(shù)據(jù)兼容性測試組成。IOS設(shè)備的多樣化使得兼容性測試更加重要。3.網(wǎng)絡(luò)流量測試由于在移動平臺上存在網(wǎng)絡(luò)接入點(diǎn)的多樣化,并且不同的接入點(diǎn)會決定網(wǎng)絡(luò)流量是否收費(fèi)和網(wǎng)絡(luò)網(wǎng)速等一些特性。所以網(wǎng)絡(luò)及流量測試在移動平臺上會作為單獨(dú)的一種測試類型而存在。4.升級測試升級測試同樣也是移動端測試特有的一種測試類型。應(yīng)用程序從老版本升級到新版本時,需要確保功能使用正常的測試活動是升級測試。5.對于客戶端的性能測試,可能是大數(shù)據(jù)的測試也可能是顯示速度等方面的測試。性能測試可能會和之前提到的穩(wěn)定性測試和網(wǎng)絡(luò)測試有一些重復(fù)的活動。本書中的性能測試只會涉及CPU,iOS內(nèi)存和I/O等指標(biāo)的監(jiān)控,通過對一些基礎(chǔ)的系統(tǒng)指標(biāo)進(jìn)行監(jiān)控,從而得到一些基準(zhǔn)數(shù)據(jù)并且通過數(shù)據(jù)之間的對比發(fā)現(xiàn)一些性能問題。6.穩(wěn)定性測試穩(wěn)定性測試是檢驗(yàn)應(yīng)用程序長期穩(wěn)定的運(yùn)行能力。一般的穩(wěn)定性測試會通過一些邊界值和非常規(guī)操作,來驗(yàn)證應(yīng)用程序的問題性。穩(wěn)定性測試也需要探索,因?yàn)橛袝r穩(wěn)定性測試的通過,也不能說明應(yīng)用程序足夠穩(wěn)定。5.2APP兼容性測試兼容性測試也被稱為適配測試。兼容性測試需要考慮硬件兼容、軟件兼容和數(shù)據(jù)兼容。兼容性測試對測試環(huán)境依賴度非常高iOS端主流的硬件平臺如下:iPhone:iPhone5,iPhone5S,iPhone6,IPhone6SiTouch:iTouch6iPad:iPadair,iPadpro,iPad3,iPad4,iPadmini4iOS端主流的軟件系統(tǒng)如下。IOS端主流的軟件系統(tǒng):iOS7:7.1、7.2iOS8:8.1、8.2iOS9:9.0、9.1蘋果公司一直都很嚴(yán)格、謹(jǐn)慎地維護(hù)著iOS的生態(tài)系統(tǒng),其中有這樣一條規(guī)則:軟件系統(tǒng)無法從高版本降至低版本。通過此條規(guī)則,可以對兼容性測試環(huán)境進(jìn)行進(jìn)一步的過濾,iPhone5默認(rèn)安裝的最低系統(tǒng)版本是iOS8.1,所以在iPhone5的硬件平臺上就不再考慮更低的軟件系統(tǒng)版本了。經(jīng)過簡化之后,得到了兼容性測試環(huán)境,如表5-1所示總之,兼容性測試不是簡單地拿到不同的設(shè)備進(jìn)行相同操作的機(jī)械勞動。兼容性測試需要結(jié)合應(yīng)用程序本身的特點(diǎn)和iOS的相關(guān)特性進(jìn)行針對性的測試,最終快速得到測試反饋。更多的兼容性測試點(diǎn)需要在工作中總結(jié)和探索。
5.3APP性能測試
一個iOS應(yīng)用程序不只需要漂亮的頁面和優(yōu)雅的設(shè)計,還需要快速啟動、及時響應(yīng)用戶交互和優(yōu)秀的內(nèi)存管理等。秉承用戶第一的原則,為了給用戶呈現(xiàn)更加優(yōu)秀的iOS應(yīng)用程序,必須對應(yīng)用程序進(jìn)行性能測試,通過測試定位并且解決問題。1.快速啟動測試許多iOS應(yīng)用程序啟動一次需要十幾秒,而用戶希望盡快操作應(yīng)用程序??梢允褂肐nstrument的TimeProfile來分析啟動時的CPU消耗,并且以消耗CPU的數(shù)據(jù)為依據(jù)進(jìn)行優(yōu)化。以下將通過一個具體的例子詳細(xì)介紹如何使用TimeProfile來分析應(yīng)用程序啟動性能并找出被浪費(fèi)的CPU處理周期。2.內(nèi)存泄露檢查內(nèi)存占用的優(yōu)化管理一直是iOS開發(fā)者關(guān)心的問題之一。由于Objective不支持垃圾自動回收技術(shù),所以開發(fā)者需要更加小心地處理內(nèi)存管理的相關(guān)問題。除了開發(fā)工程師在編碼階段格外小心地管理內(nèi)存以外,還需要具備一種內(nèi)存泄露的檢査手段。3.設(shè)備CPU和內(nèi)存等關(guān)鍵指標(biāo)的記錄對比,所有的性能測試都會監(jiān)控測試對象的運(yùn)行環(huán)境,記錄CPU,內(nèi)存和I/O的一些指標(biāo),用于分析對比。在iOS方面一般使用Instruments來統(tǒng)計應(yīng)用程序CPU,內(nèi)存和I/O的使用情況。5.4APP穩(wěn)定性測試穩(wěn)定性測試的理論范疇很大,涉及硬件平臺、軟件系統(tǒng)和具體的應(yīng)用程序。在iOS測試領(lǐng)域內(nèi),猴子測試被作為穩(wěn)定性測試的主要手段。猴子測試即像猴子一樣隨意地沒有規(guī)律地操作應(yīng)用程序。Android系統(tǒng)自帶了猴子測試的工具,開發(fā)者可以直接使用。iOS沒有官方的猴子測試工具,筆者基于UIAutomation寫了猴子測試腳本。測試腳本的位置為:/douban/ynm3k/blob/master/robot4ios/util/iOSMonkey2.js。猴子測試使用非常簡單,直接在Instruments中運(yùn)行UIAutomation腳本即可。在自動化的猴子測試執(zhí)行完成以后,還可以考慮在一些零界條件下對應(yīng)用程序進(jìn)行穩(wěn)定性測試??梢灾饕紤]以下條件:(1)頻繁收到內(nèi)存告警。(2)電池電量低;(3)3G網(wǎng)絡(luò)不穩(wěn)定時斷時續(xù)在以上極端的情況下程序的穩(wěn)定性更為重要。5.5IOSUI自動化測試Apple官方提供的UIAutomation工具,目前很多的開發(fā)者都使用UIAutomation工具做自動化測試,從而替代以前的需要人手動操作的重復(fù)的勞動UlAutomation的簡介一般的自動化測試的工具在測試過程中,測試人員通過編寫一些腳本就可以達(dá)到自動化操作的目的,如果性能更優(yōu)越的自動化工具同時還具備錄制腳本的功能,錄制腳本可以讓腳本的開發(fā)強(qiáng)度降低一些,但是大部分工作還是需要測試人員編寫腳本來完成。UIAutomation不但支持腳本編寫方式的自動化測試,并且還支持錄制回放方式的自動化測試,是一款功能強(qiáng)大的自動化測試工具。UIAutomation體系結(jié)構(gòu),UIAutomation,微軟提供的UI自動化庫。它包括在.NETFramework3.0中,是WindowsPresentationFoundation(WPF)的一部分,可進(jìn)行UI測試自動化。此自動化庫一開始就是為可訪問性和UI測試自動化任務(wù)而專門設(shè)計的,使用UI自動化庫來測試運(yùn)行支持.NETFramework3.0的操作系統(tǒng),在UIAutomation中,所有的窗體、控件都表現(xiàn)為一個AutomationElement、AutomationElement中包含此控件或窗體的屬性,在實(shí)現(xiàn)自動化的過程中,通過其相關(guān)屬性進(jìn)行對控件自動化操作。對于UI用戶界面而言,所用顯示的桌面上的UI,其實(shí)際上是一個UITree,根節(jié)點(diǎn)是Desktop。在UIAutomation中,根節(jié)點(diǎn)表示為AutomationElementRootElement。通過根節(jié)點(diǎn),可以通過窗體或控件的ProcessId、ProcessNames或者WindowsName找到相應(yīng)的子AutomationElement,1、在服務(wù)器端由UIAutomationProvider.dll和UIAutomat-ionTypes.dll提供;2、在客戶端由UIAutomationClient.dll和UIAutomationT-ypes.dll提供;3、UIAutomationCore.dll為UI自動化的核心部分,負(fù)責(zé)服務(wù)器端和客戶端的交互;4、UIAutomationClientSideProviders.dll為客戶端程序提供自動化支持。在UI自動化庫體系結(jié)構(gòu)中使用客戶端-服務(wù)器視點(diǎn)和命名約定。從UI測試自動化的角度來看,意味著所測試的應(yīng)用程序被稱為服務(wù)器,測試工具被視為客戶端,測試工具客戶端向所測試的應(yīng)用程序(服務(wù)器)請求UI信息。5.5.2UIAutomation腳本編輯Apple官方提供的實(shí)例程序Recipes程序,該程序可以在Xcode中搜索Recipes,然后找到iPhoneCoreDataRecipes項目下載到本地,然后用Xcode進(jìn)行打開使用。UIAutomation大多數(shù)的基本功能都可以通過Recipes程序來掌握.。大部分自動化測試腳本的編寫都是基于Recipes所提供的控件來完成的,UIAApplication控件把所有的控件信息匯總下,依據(jù)控件之間的父子關(guān)系,可以把Recipes程序首頁面轉(zhuǎn)化為樹形結(jié)構(gòu)的控件關(guān)系,5.5.3UIAutomation實(shí)踐人機(jī)交互方式是最常見的操作應(yīng)用程序的方法,交互方式的方式方法很多,這樣交互的方式總的概況為3個大類,這3個大類被使用的頻率最高,:①用戶單指點(diǎn)擊(tap);②用戶使用模擬鍵盤輸入;③應(yīng)用程序屏幕顯示輸出內(nèi)容信息實(shí)踐1:在Recipes程序中添加一個菜單名字叫做“餃子”。大致的操作流程如下。具體的操作說明如下:1、在主頁面單擊按鈕;2、在新的頁面中輸入“餃子”,并且單擊按鈕;3、單擊》按鈕,回到主菜單頁面;4、可以看到新增“餃子”菜單。在API調(diào)用方式上也有一些其別,所以這里再次細(xì)分了兩種方式,分別為UIAElement方式和UIATarget方式。1.UIAElement方式2.UIATarget方式5.5.4UIAutomationLogger日志負(fù)責(zé)日志輸出的對象是UIALogger,主要有兩部分的職責(zé):記錄測試結(jié)果;負(fù)責(zé)各個級別的日志結(jié)果輸出。在記錄測試結(jié)果方面,有l(wèi)ogFail()、logPass()方法和logStart()方法。logStart()方法會在測試即將開始的時候調(diào)用,并且在測試結(jié)束后,和logFail()或logPass()方法配對出現(xiàn)完成一個測試方法的開始部分和最后的完成部分的結(jié)果記錄,logPass()和logFail()是一對函數(shù),分別表示方法測試通過和未通過。第6章 AndroidAPP自動化測試6.1 Android的白盒與黑盒自動化測試白盒測試:在手機(jī)自動化測試領(lǐng)域,白盒測試包括兩種類型,第一種是傳統(tǒng)軟件測試?yán)碚撝兴傅陌缀袦y試,即依賴被測對象的源代碼具體實(shí)現(xiàn)的測試方式。在手機(jī)軟件開發(fā)過程中所做的單元測試即屬于此類型。黑盒測試相對于白盒測試而言,黑盒測試指的是通過外部指令驅(qū)動手機(jī)并通過外部方式進(jìn)行測試結(jié)果校驗(yàn)的測試方式,即不考慮系統(tǒng)本身提供的自動化測試能力,所有的測試行為均在系統(tǒng)外部進(jìn)行。6.2 AndroidInstrumentation測試框架Instrumentation測試框架有以下三個核心點(diǎn):1.擁有基于JUnit的測試集合,不但可以直接使用JUnit,不調(diào)用任何AndroidAPI來測試一個類型,也可以使用AndroidJUnit擴(kuò)展來測試Android組件。
2.AndroidJUnit擴(kuò)展為應(yīng)用的每種組件提供了針對性的測試基類。3.
Android開發(fā)工具包(SDK)既通過Eclipse的ADT插件提供了圖形化的工具來創(chuàng)建和執(zhí)行測試用例,也提供了命令行的工具,以便與其他IDEs集成,這些命令行工具甚至可以創(chuàng)建ant時編譯腳本。Android測試環(huán)境的核心是一個Instrumentation框架,在這個框架下,你的測試應(yīng)用程序可以精確控制應(yīng)用程序。在Android中,測試程序也是Android程序,因此,它和被測試程序的書寫方式有很多相同的地方。SDK工具能幫助你同時創(chuàng)建主程序工程及它的測試工程。你可以通過Eclipse的ADT插件或者命令行來運(yùn)行Android測試。Eclipse的ADT提供了大量的工具來創(chuàng)建測試用例,運(yùn)行以及查看結(jié)果Android提供了基于JUnit測試框架的測試API來書寫測試用例和測試程序。另外,Android還提供了強(qiáng)大的Instrumentation框架,允許測試用例訪問程序的狀態(tài)及運(yùn)行時對象(1)基類是AndroidTestCase,一般常見的是它的子類,和特定組件關(guān)聯(lián)。子類有:ApplicationTestCase——測試整個應(yīng)用程序的類。ProviderTestCase2—測試單個ContentProvider的類。 lServiceTestCase——測試單個Service的類。繼承自JUnitTestCase類,并可以使用Instrumentation框架,用于測試Activity。(2)基類是InstrumentationTestCase。它的所有子類都能發(fā)送按鍵或觸摸事件給UI。子類還可以注入一個模擬的Intent。ActivityTestCase——Activity測試類的基類。SingleLaunchActivityTestCase——測試單個Activity的類。SyncBaseInstrumentation——測試ContentProvider同步性的類。ActivityUnitTestCase——對單個Activity進(jìn)行單一測試的類。ActivityInstrumentationTestCase2——在正常的系統(tǒng)環(huán)境中測試單個Activity的類(3)Assert類Android還繼承了JUnit的Assert類,其中,有兩個子類,MoreAsserts和ViewAsserts:lMoreAsserts類包含更多強(qiáng)大的斷言方法,如assertContainsRegex(String,String),可以作正則表達(dá)式的匹配。(4)Mock對象類Android有一些類可以方便的創(chuàng)建模擬的系統(tǒng)對象,如Application,Context,ContentResolver和Resource。Android還在一些測試類中提供了一些方法來創(chuàng)建模擬Intent。IsolatedContext——模擬一個Context,這樣應(yīng)用程序可以孤立運(yùn)行。與此同時,還有大量的代碼幫助我們完成與Context的通信。這個類在單元測試時很有用。RenamingDelegatingContext——當(dāng)修改默認(rèn)的文件和數(shù)據(jù)庫名時,可以委托大多數(shù)的函數(shù)到一個存在的、常規(guī)的Context上。
(5)InstrumentationTestRunnerAndroid提供了自定義的運(yùn)行測試用例的類,叫InstrumentationTestRunner。這個類控制應(yīng)用程序處于測試環(huán)境中,在同一個進(jìn)程中運(yùn)行測試程序和主程序,并且將測試結(jié)果輸出到合適的地方。6.2.1 儀表盤技術(shù)Android的儀表盤對象是Android系統(tǒng)中的一些控制函數(shù),這些函數(shù)在每次的應(yīng)用啟動之前,就會被系統(tǒng)創(chuàng)建而成,用來監(jiān)視Android系統(tǒng)和應(yīng)用之間的交互。另外儀表盤對象通過向應(yīng)用動態(tài)插入跟蹤代碼、調(diào)試技術(shù)、性能計數(shù)器和事件日志的方式來操控應(yīng)用。6.2.2 使用儀表盤技術(shù)編寫測試用例用戶在命令行或者從Eclipse中運(yùn)行測試用例時,首先要把測試用例程序和待測應(yīng)用部署到測試設(shè)備或模擬器上,再通過InstrumentationTestRunner這個對象依次執(zhí)行測試用例程序中的測試用例,InstrumentationTestRunner支持很多參數(shù),用來執(zhí)行一部分的測試用例,每個測試用例都是通過儀表盤技術(shù)來操控待測應(yīng)用的各個組件實(shí)現(xiàn)測試目的。。Android儀表盤框架是基于JUnit的,ActivityInstrumentationTestCase2是從JUnit的核心類TestCase中繼承下來的,這樣做的好處就是可以復(fù)用JUnit的assert功能來驗(yàn)證由用戶交互和事件引發(fā)的GUI行為,而且也讓有多年JUnit編程經(jīng)驗(yàn)的程序員容易上手。儀6.2.3 執(zhí)行儀表盤測試用例
除了通過Eclipse,還可以在命令行用Android系統(tǒng)自帶工具am執(zhí)行儀表盤測試用例,如果不帶參數(shù)調(diào)用,則會執(zhí)行除性能測試以外的所有測試用例。<測試用例信息>的格式一般是“測試用例包名/android.test.tastrumentationTestRunner”,例如要執(zhí)行本章的示例來測試用例,首先需要將其和待測應(yīng)用安裝到設(shè)備或模擬器上,在虛擬機(jī)的命令行中輸人下面的命令即可執(zhí)行所有的測試用例:6.3 monkey工具及其使用本小節(jié)講解使用兩個名字很相近的工具monkey和monkeyrunner在沒有源代碼的情況下對應(yīng)用執(zhí)行黑盒測試的方法。AndroidSDK提供了monkey和monkeyrunner兩個測試工具,這兩個工具除了名字類似外,還都可以向待測應(yīng)用發(fā)送按鍵等消息,因此往往讓很多初學(xué)者產(chǎn)生混淆。下面介紹一下它們之間的不同點(diǎn)。monkey運(yùn)行在設(shè)備或模擬器上面,可以脫離PC運(yùn)行,而monkeyrunner運(yùn)行PC上,需要通過服務(wù)器/客戶端的模式向設(shè)備或模擬器上的Android應(yīng)用發(fā)送指令來執(zhí)行測試。普遍的做法是將monkey作為一個向待測應(yīng)用發(fā)送隨機(jī)按鍵消息的測試工具,驗(yàn)證待測應(yīng)用在這些隨機(jī)性的輸人面前是否會閃退或崩潰。而monkeyrunner則接受一個明確的測試腳本(使用Python語言編寫的)。雖然monkey也可以根據(jù)一個指定的命令腳本發(fā)送按鍵消息,但其不支持條件判斷,也不支持讀取待測界面的信息來執(zhí)行驗(yàn)證操作。而monkeyrunner的測試腳本中有明確的條件判斷等語句,可用來做功能測試。運(yùn)行monkeymonkey的命令列表和參數(shù)都比較多,但可以將這些選項歸類成以下幾大類:基本參數(shù)設(shè)置,例如設(shè)定要發(fā)送的消息個數(shù)。測試的約束條件,比如限定要測試的應(yīng)用。發(fā)送的事件類型和頻率。調(diào)試選項。當(dāng)monkey運(yùn)行時,它隨機(jī)生成并向系統(tǒng)發(fā)送各種事件,并監(jiān)視待測應(yīng)用是否會碰到如下三種情況:如果限定monkey只測試一個或幾個特定包,monkey會阻止待測應(yīng)用跳轉(zhuǎn)到其他包的任何嘗試。如果待測應(yīng)用閃退或收到任何未處理的異常,monkey就會終止并報告這個錯誤。如果待測應(yīng)用出現(xiàn)停止相應(yīng)的錯誤,monkey也會終止并報告這個錯誤。6.3.1 monkey工具命令參考--help打印幫助消息-v命令行的每一個
-v
將增加反饋信息的級別。-s
<seed>
偽隨機(jī)數(shù)生成器的
seed
值。如果用相同的
seed
值再次運(yùn)行
Monkey
,它將生成相同的事件序列。--throttle
<milliseconds>
在事件之間插入固定延遲。通過這個選項可以減緩
Monkey
的執(zhí)行速度。如果不指定該選項,
Monkey
將不會被延遲,事件將盡可能快地被產(chǎn)成。
--pct-touch
<percent>
調(diào)整觸摸事件的百分比
(
觸摸事件是一個
down-up
事件,它發(fā)生在屏幕上的某單一位置
)
。
--pct-motion
<percent>
調(diào)整動作事件的百分比
(
動作事件由屏幕上某處的一個
down
事件、一系列
的偽隨機(jī)事件和一個
up
事件組成
)
。
--pct-trackball
<percent>
調(diào)整軌跡事件的百分比
(
軌跡事件由一個或幾個隨機(jī)的移動組成,有時還伴隨有點(diǎn)擊
)
。
--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
、
Start
Call
、
End
Call
及音量控制鍵
)
。
--pct-appswitch
<percent>
調(diào)整啟動
Activity
的百分比。在隨機(jī)間隔里,
Monkey
將執(zhí)行一個
startActivity
()
調(diào)用,作為最大程度覆蓋包中全部
Activity
的一種方法。--pct-anyevent
<percent>
調(diào)整其它類型事件的百分比。它包羅了所有其它類型的事件,如:按鍵、其它不常用的設(shè)備按鈕、等等。
約束限制
-p
<allowed-package-name>
如果用此參數(shù)指定了一個或幾個包,
Monkey
將只允許系統(tǒng)啟動這些包里的
Activity
。
-c
<main-category>
如果用此參數(shù)指定了一個或幾個類別,
Monkey
將只允許系統(tǒng)啟動被這些類別中的某個類別列出的
Activity
。如果不指定任何類別,
Monkey
將選擇下列類別中列的
Activity
:
Intent.CATEGORY_LAUNCHER
或
Intent.CATEGORY_MONKEY
。要指定多個類別,需要使用多個
-c
選項,每個
-c
選項只能用于一個類別。--dbg-no-events
設(shè)置此選項,
Monkey
將執(zhí)行初始啟動,進(jìn)入到一個測試
Activity
,然后不會再進(jìn)一步生成事件。為了得到最佳結(jié)果,把它與
-v
、一個或幾個包約束、以及一個保持
Monkey
運(yùn)行
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
將停止運(yùn)行。如果設(shè)置此選項,
Monkey
將繼續(xù)向系統(tǒng)發(fā)送事件,直到計數(shù)完成。
--ignore-timeouts
通常,當(dāng)應(yīng)用程序發(fā)生任何超時錯誤
(
如“
Application
Not
Responding
”對話框
)
時,
Monkey
將停止運(yùn)行。如果設(shè)置此選項,
Monkey
將繼續(xù)向系統(tǒng)發(fā)送事件,直到計數(shù)完成。
--ignore-security-exceptions
通常,當(dāng)應(yīng)用程序發(fā)生許可錯誤
(
如啟動一個需要某些許可的
Activity)
時,
Monkey
將停止運(yùn)行。如果設(shè)置了此選項,
Monkey
將繼續(xù)向系統(tǒng)發(fā)送事件,直到計數(shù)完成。
--kill-process-after-error
通常,當(dāng)
Monkey
由于一個錯誤而停止時,出錯的應(yīng)用程序?qū)⒗^續(xù)處于運(yùn)行狀態(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)將停止運(yùn)行。
--wait-dbg
停止執(zhí)行中的
Monkey
,直到有調(diào)試器和它相連接。6.3.2 monkey腳本除了生成隨機(jī)的事件序列,monkey也支持接受一個腳本解釋執(zhí)行命令,而且既可以直接為monkey命令指定腳本文件路徑來執(zhí)行(通過“-f”選項指定),也可以以客戶端/服務(wù)器的方式執(zhí)行(“--port”選項)。(1)DispatchPointer(5109520,5109520,0,353,325,0,0,0,0,0,0,0)#發(fā)送抬起事件,downTime和eventTime是一樣的,但是比前個事件的值多了點(diǎn)時間
#表示手指在這個位置上的停頓DispatchPointer(5109521,5109521,1,353,325,0,0,0,0,0,0,0>(2)DispatchTrackballDispatchTrackball命令用于向一個指定位置發(fā)送單個跟蹤球消息。其使用方式和DispatchPointer完全相同。(3)RotateScreenRotateScreen命令用于發(fā)送屏幕旋轉(zhuǎn)事件。命令形式如下,共兩個參數(shù):RotateScreen(rotationDegree,persist)rotationDegree,旋轉(zhuǎn)的角度,參考android.view.Surface里的常量。persist,是否保持旋轉(zhuǎn)后的狀態(tài),0為不保持,非0值為保持。
(4)DispatchKeyDispatchKey命令用于發(fā)送按鍵消息。命令形式如下,共8個參數(shù):DispatchPointer(downTime,eventTime,action,code,repeat,metaState,device,scancode)關(guān)鍵參數(shù)是下面5個:
downTime,發(fā)送消息的時間,只要是合法的長整型數(shù)字即可。eventTime,主要是用在指定發(fā)送兩個事件之間的停頓。action,消息是按下還是抬起,0表示按下,1表示抬起。code,按鍵的值,參見KeyEvent類。repeat,按鍵重復(fù)的次數(shù)。其他參數(shù)均可以設(shè)置為0。
(5)DispatchFlipDispatchFlip命令用于打開或關(guān)閉軟鍵盤。命令形式如下:DispatchFlip(keyboardOpen)keyboardOpen,該參數(shù)為true表示打開,為false表示關(guān)閉鍵盤。
(6)DispatchPressDispatchPress命令用于模擬敲擊鍵盤事件。命令形式如下:DispatchPress(keyName)keyName,要敲擊的按鍵,具體的值參見KeyEvent。
(7)LaunchActivityLaunchActivity命令用于啟用任意應(yīng)用的一個活動(界面)。命令形式如下:LaunchActivity(pkg_name,cl_name)pkgname,要啟動的應(yīng)用包名。cl_name,要打開的活動的類名。
(8)LaunchInstrumentationLaunchInstrumentation命令用于運(yùn)行一個儀表盤測試用例。命令形式如下:LaunchInstrumentation(test_name,runner_name)test_name,要運(yùn)行的測試用例名。runner_name,運(yùn)行測試用例的類名。
(9)UserWaitUserWait命令用于讓腳本中斷一段時間。命令形式如下:UserWait(sleepTime)sleepTime,要休眠的時間,以毫秒為單位。
(10)LongPressLongPress命令用于模擬長按事件,長按兩秒。命令形式如下:LongPress()(11)PowerLogPowerLog命令用于模擬電池電量信息。命令形式如下:PowerLog(power_log_type,test_case_status)Power_log_type,可選值有AUTOTEST_SEQUENCE_BEGIN,AUTOTEST_TEST_BEGIN,AUTOTEST_TEST_BEGIN_DELAY,AUTOTEST_TEST_SUCCESS,AUTOTEST_IDLE_SUCCESS(12)WriteLogWriteLog命令用于將電池電量信息寫入SD卡。命令形式如下:WriteLog()(13)RunCmdRunCmd命令用于在設(shè)備上運(yùn)行shell命令。命令形式如下:RunCmd(cmd)cmd,要執(zhí)行的shell命令。由于monkey在運(yùn)行時具有超級用戶root權(quán)限,其可以啟動任意的命令,包括Android系統(tǒng)底層使用的Linux命令。(14)TapTap命令用于模擬一次手指單擊事件。命令形式如下:Tap(x,y,tapDuration)x,x坐標(biāo)。y,y坐標(biāo)。tapDuration,可選,單擊的持續(xù)時間。(15)ProfileWaitProfileWait命令用于等待5秒。命令形式如下:ProfileWait()(16) DeviceWakeUpDeviceWakeUp命令用于喚醒設(shè)備并解鎖。命令形式如下:DeviceWakeUp()(17) DispatchStringDispatchString命令用于向shell輸入一個字符串。命令形式如下:DispatchString(input)(18)PressAndHoldPressAndHold命令用于模擬一個長按事件,持續(xù)時間可指定。命令形式如下:PressAndHold(x,y,pressDuration)x,坐標(biāo)。y,y坐標(biāo)。pressDuration,持續(xù)的時間,以毫秒為單位計時。
(19) DragDrag命令用于模擬一個拖拽操作。命令形式如下:Drag(xStart,yStart,xEnd,yEdn,stepCount)xStart,拖拽起始的x坐標(biāo)。yStart,拖拽起始的y坐標(biāo)。xEnd,拖拽終止的x坐標(biāo)。stepCount,拖拽實(shí)際上是一個連續(xù)的事件,這個參數(shù)指定由多少個連續(xù)的小事件組成一個完整的拖拽事件。(20) PinchZoomPinchZoom命令用于模擬縮放手勢。命令形式如下:PinchZoom(ptlxStart,ptlyStart,ptlxEnd,ptlyEnd,Pt2xStart,pt2yStart,pt2xEnd,pt2yEnd,stepCount)ptlxStart,第一個手指的起始x位置。ptlyStart,第一個手指的起始y位置。ptlxEnd,第一個手指的結(jié)束x位置。ptlyEnd,第一個手指的結(jié)束乂位置。pt2xStart,第二個手指的起始x位置。pt2yStart,第二個手指的起始y位置。pt2xEnd,第二個手指的結(jié)束x位置。pt2yEnd,第二個手指的結(jié)束y位置。stepCount,細(xì)分為多少步完成縮放操作。(21)StartCaptureFramerateStartCaptureFramerate獲取巾貞率,在執(zhí)行這個命令之前,需要設(shè)置系統(tǒng)變量file_rendering的值為true,以便強(qiáng)制當(dāng)前窗口的刷新頻率保持在60Hz。命令形式如下:StartCaptureFramerate()(22)EndCaptureFramerateEndCaptureFramerate結(jié)束獲取幀率,將結(jié)果保存在/sdcarc/avgFrameRateOut.txt文件里。命令形式如下:EndCaptureFramerate(input)input,測試用例名。調(diào)用結(jié)束后,會在avgFrameRateOut.txt中加上格式為“<input>:<捕獲的幀率>”的一行新日志。(23)StartCaptureAppFramerateStartCaptureAppFramerate命令用于獲取指定應(yīng)用的巾貞率,在執(zhí)行這個命令之則,需要設(shè)置系統(tǒng)變量file_rendering的值為true,以便強(qiáng)制當(dāng)前窗口的刷新頻率保持在60Hz,命令形式如下:StartCaptureAppFramerate(app)app,要測試的應(yīng)用名。(24)EndCaptureAppFramerateEndCaptureAppFramerate命令用于結(jié)束獲取幀率,將結(jié)果保存在/sdcarc^avgAppFrame-RateOut.txt文件中。命令形式如下:EndCaptureAppFramerate(app,input)app,正在測試的應(yīng)用名。input,測試用例名。6.3.3 monkey服務(wù)器除了支持解釋腳本,monkey還支持在設(shè)備上啟動一個在線服務(wù),可以通過telent的方式從PC遠(yuǎn)程登錄到設(shè)備上以交互的方式執(zhí)行monkey命令,這需要用到monkey的“--port”參數(shù)。一般的習(xí)慣是將1080端口分配給monkey服務(wù),不過也可以根據(jù)讀者自己的喜好和實(shí)際情況使用其他端口,接著再把模擬器上的端口重新映射到PC宿主機(jī)的端口:$adb-eforwardtcp:1080tcp:1080之后就可以使用telnet連接到monkey服務(wù)器上執(zhí)行命令了,很遺憾,monkey服務(wù)器理解的命令格式和monkey腳本的命令格式完全不一樣,而且支持的命令集合也不
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 隧道工程腳手架搭建協(xié)議
- 互聯(lián)網(wǎng)廣告推廣服務(wù)合同
- 邢臺學(xué)院《形體訓(xùn)練與舞蹈編導(dǎo)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 家博會市場推廣協(xié)議書
- 2024至2030年組合式隔間系統(tǒng)項目投資價值分析報告
- 2024至2030年激光平面入侵探測系統(tǒng)項目投資價值分析報告
- 2024年青田御茶項目可行性研究報告
- 2024年熒光即時貼項目可行性研究報告
- 2024年雙極高頻電刀項目可行性研究報告
- 2024至2030年中國限溫器行業(yè)投資前景及策略咨詢研究報告
- 六年級上冊英語試題- Module1 Family and friends單元測試 牛津上海版(含答案及解析)
- 選擇性必修二《Unit 3 Food and Culture》單元教學(xué)設(shè)計
- 讀書分享《曾國藩傳》
- 農(nóng)產(chǎn)品市場營銷智慧樹知到期末考試答案章節(jié)答案2024年東北農(nóng)業(yè)大學(xué)
- 2024-2030年中國盾構(gòu)機(jī)電纜行業(yè)市場調(diào)查研究及投資策略研究報告
- 人工智能的好處和壞處
- 旅游學(xué)概論(郭勝 第五版) 課件 第5、6章 旅游業(yè)、旅游市場
- 安全隱患規(guī)范依據(jù)查詢手冊22大類12萬字
- 外科病例分析
- 一年級10以內(nèi)口算100道題(共20套)-直接打印版
- mtl營銷管理流程
評論
0/150
提交評論