天天看點

LinkedIn Test Butler 旨在改進 Android UI 測試

linkedin工程師兼test butler建立者drew hannay寫道,test butler是一款面向android的開源測試工具,它允許開發人員對若幹測試環境設定通過程式設計進行控制,進而使開發人員可以可靠地運作測試。

據hannay介紹,test butler的靈感來自谷歌2014年的演講“環保之路:清理有毒的移動環境”。該演講介紹了如何解決反複出現并影響移動測試的問題,比如缺少可靠性和可再現性、速度緩慢等。hannay表示,當結果可能受到環境因素影響時,測試就不可靠了,尤其是當它們出現在裝置/作業系統層面時,比如android模拟器的cpu突然休眠,不正常的裝置方向變化,随機出現的鎖屏,意外彈出的系統對話框,等等。所有那些事件都會導緻espresso ui測試失敗。

為了解決這些問題,按照最初的設計,test butler将作為一個背景服務在android模拟器上運作,提供一些旨在增加測試環境穩定性的特性,比如:

禁用動畫,這是espresso正常運作所需要的;

通過安裝一個自定義的iactivitycontroller禁用系統對話框;

監控模拟器的鎖屏、wi-fi和cpu,保證它們不會休眠。

測試中的應用可以和test butler進行通信,并控制多個測試環境變量,比如:

啟用/禁用wi-fi;

在測試執行過程中通過程式設計改變裝置方向;

模拟不同的定位服務模式,比如,省電模式或者高精度模式;

定義應用程式運作的區域設定。

test butler的一個關鍵方面是,它使用面向内置android模拟器的系統密鑰庫進行簽名。也就是說,它會自動取得自己所需的任何signature級的權限,而不需要通過adb,或者篡改清單檔案。

下面的代碼展示了如何設定應用,讓其和test butler一起工作:

當應用和test butler的連接配接建立後,你可以使用testbutler類提供的多種方法控制測試環境,比如修改定位服務模式、設定wi-fi狀态、觸發裝置反轉,等等。

據hannay介紹,目前,linkedin每天使用test butler運作超過1百萬次測試。該工具是開源的,代碼托管在github上。

繼續閱讀