現在已經有大量的Android自動化測試架構或工具可供我們使用,其中包括:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolectric。
另外LessPainful也提供服務來進行真實裝置上的自動化測試。
Android自身提供了對 instrumentation測試的基本支援,其中之一就是位於android.test包內的 ActivityInstrumentationTestCase2類,它擴充了JUnit的TestCase類來提供Android activities的功能測試。在應用測試中,每一個activity首先會被Instrumentation初始化,然後再載入到Android類比 器或裝置的Dalvik虛擬機器中來執行。
Android SDK內建一個測試載入器MonkeyRunner,它提供的API和執行環境可以運行Python語言編寫的測試代碼。它提供API來串連裝置,安裝/卸 載應用,運行應用,截屏,比對圖片來判斷特定命令執行後的螢幕是否包含預期資訊,以及運行對應用的測試。MonkeyRunner使用 ActivityInstrumentationTestCase2, ProviderTestCase,ServiceTestCasek, SingleLaunchActivityTestCase及其他類來定義測試案例,並使用InstrumentationTestRunner類來運行 測試。
Robotium是另一種通過 InstrumentationTestRunner來完成Android互動式測試的架構,它橫跨多個 activities,支援功能測試,系統測試和接收測試。Robotium支援Activities、Dialogs、Toasts、Menus、 Context Menus甚至Honeycomb,並且它可以同Maven和Ant整合來完成持續整合測試。Robotium被稱之為針對Android應用的又一個 Selenium。
Robolectric另闢蹊徑,它並不依賴於 Android提供的測試功能,它使用了shadow objects並且運行測試於普通的工作站/伺服器JVM,不像模擬器或裝置需要dexingAndroid dex編譯器將類檔案編譯成Android裝置上的Dalvik VM使用的格式),打包,部署和啟動並執行過程,大大減少了測試執行的時間。Pivotal實驗室聲稱使用Robolectric可以在28秒內運行1047 個測試。
LessPainful將Android測試又推進了一 步,它提供了一個多裝置平台自動化測試的服務。使用者上傳應用(*.apk)和用Cucumber一種業務相關的DSL)編寫的測試檔案,選擇測試回合需 要的裝置配置,最後測試將自動執行並產生測試報告。它支援的裝置包括 Garmin Asus,幾款HTC,LG,Samsung Galaxy,Sony Xperia和Motorola Motodefy。