天天看點

《Android應用開發攻略》——3.12 運作Monkey程式

adrian cowham

3.12.1 問題

你希望對應用程式進行一些好的随機使用測試。

3.12.2 解決方案

使用android monkey指令行工具測試你所開發的測試應用程式。

3.12.3 讨論

從字面上看,測試非常簡單,連猴子(monkey)都能完成。盡管android缺乏測試工具,但是我必須承認,monkey是相當好的工具。你可能不熟悉android monkey,它是android sdk自帶的一個測試工具,模拟猴子(也可能是個孩子)使用android裝置。想象一下,一隻猴子坐在鍵盤上亂動——了解了嗎?還有什麼方法比這更能找出隐藏的anr資訊?

運作monkey很簡單,啟動模拟器(或者将開發裝置連接配接到開發機器上),然後啟動monkey腳本。我不願意承認這一點,但是每天運作monkey,我們不斷地發現在正常的qa測試中沒有發現的缺陷,這些缺陷如果在使用者使用的現場發現,将難以維修,更糟糕的是,會導緻使用者不再使用我們的應用程式。

下面是在開發過程中使用monkey的最佳實踐:

建立自己的monkey腳本來封裝android monkey腳本。這樣能確定團隊中的開發人員以相同的參數運作monkey。如果你的團隊隻有一個人,這樣做有助于可預測性(很快将會讨論)。

配置monkey,使其運作足夠長的時間以捕捉缺陷,也可以運作較短的時間以提供更好的生産率。在我們的開發過程中配置monkey,一共運作50000個事件,在samsung galaxy平闆電腦上大約運作40分鐘,這還不錯,但是我希望它在30分鐘内完成。很顯然,平闆電腦的速度越快,吞吐量就越大。

monkey是随機的,是以當我們第一次開始運作時,每個開發人員都得到不同的結果,無法重制缺陷。後來,我們發現monkey可以設定随機數發生器的種子。

是以,在你的包裝器腳本中要設定monkey的種子。這能保證在開發團隊中運作monkey的一緻性和可預測性。

一旦特定的種子值确認了應用程式,則修改種子值,因為你永遠不知道monkey會找到什麼。

下面是一個monkey腳本包裝器,以及參數的描述:

-p package name確定monkey隻針對于指定的包。

--throttle是事件之間的延時。

-s是種子值

-v是verbose選項。

50000是monkey模拟的事件數量。

monkey還有許多配置選項;我們有意地不選擇配置monkey生成的事件類型,因為我們了解那種痛苦。例如,我們選擇的種子值導緻monkey在運作到一半時禁用wi-fi。開始時我們為此而感到沮喪,因為我們感覺這不是想要的覆寫範圍。結果是,monkey禁用wi-fi并且亂運作應用程式,這其實幫助了我們。在發現和修複了幾個缺陷之後,我們完全确信,應用程式在沒有網絡連接配接的情況下能夠按照預期運作。

這真是一隻好猴子。

繼續閱讀