Android testing tools

微微微笑發表於2015-10-02

引言

發現一篇關於android 測試的培訓,英文的,很全面。

Android Testing Training: http://www.vogella.com/training/android/androidtesting.html

正文

1.Appium

Appium 是一個開源、跨平臺的自動化測試工具,用於測試原生和輕量移動應用,支援 iOS, Android 和 FirefoxOS 平臺。Appium 驅動蘋果的 UIAutomation 庫和 Android 的 UiAutomator 框架,使用 Selenium 的 WebDriver JSON 協議。Appinm 的 iOS 支援是基於 Dan Cuellar's 的 iOS Auto. Appium 同時繫結了 Selendroid 用於老的 Android 平臺測試。

優點:比較熱門,社群活躍。可以跨APP。支援很多語言編寫指令碼,如Java,JS,PHP,Python,C#,Ruby等。不需要重新編譯App。

缺點:測試IOS必須使用Mac。

2.UIAutomator

uiautomator 測試框架提高使用者介面(UI)的測試效率,通過自動建立功能 UI 測試示例,可以在一個或者多個裝置上執行你的應用。
也是Android提供的自動化測試框架,基本上支援所有的Android事件操作,對比Instrumentation它不需要測試人員瞭解程式碼實現細節(可以用UiAutomatorviewer抓去App頁面上的控制元件屬性而不看原始碼)。

優點:基於Java,測試程式碼結構簡單、編寫容易、學習成本,一次編譯,所有裝置或模擬器都能執行測試,能跨App(比如:很多App有選擇相簿、開啟相機拍照,這就是跨App測試)。

缺點:只支援SDK 16(Android 4.1)及以上,不支援Hybird App、WebApp。

3.Instrumentation

早期Google提供的Android自動化測試工具類,雖然在那時候JUnit也可以對Android進行測試,但是Instrumentation允許你對應用程式做更為複雜的測試,甚至是框架層面的。通過Instrumentation你可以模擬按鍵按下、抬起、螢幕點選、滾動等事件。Instrumentation是通過將主程式和測試程式執行在同一個程式來實現這些功能,你可以把Instrumentation看成一個類似Activity或者Service並且不帶介面的元件,在程式執行期間監控你的主程式。

缺點:對測試人員來說編寫程式碼能力要求較高,需要對Android相關知識有一定了解,還需要配置AndroidManifest.xml檔案,不能跨多個App。

4.Selendroid

Selendroid 是一個 Android 原生應用的 UI 自動化測試框架。測試使用 Selenium 2 客戶端 API 編寫。Selendroid 可以在模擬器和實際裝置上使用,也可以整合網格節點作為縮放和並行測試。

優點:也是基於Instrumentation的測試框架,可以測試Native App、Hybird App、Web App。

缺點:網上資料較少,社群活躍度也不大。

5.Monkey

Monkey 是 Google 開發的 UI/應用測試工具,也是命令列工具,主要針對壓力測試。你可以在任意的模擬器示例或者裝置上執行。Monkey 傳送一個使用者事件的 pseudo-random 流給系統,作為你開發應用的壓力測試。

優點:使用簡單。

缺點:只能產生隨機事件,無法按照既定的步驟操作。

6.MonkeyRunner

也是Android SDK 提供的測試工具。 嚴格意義上來說MonkeyRunner其實是一個Api工具包,比Monkey強大,可以編寫測試指令碼來自定義資料、事件。

缺點:指令碼用Python來寫,對測試人員來說要求較高,有比較大的學習成本。

7.MonkeyTalk

MonkeyTalk 是世界上最強大的移動應用測試工具。MonkeyTalk 自動為 iOS 和 Android 應用進行真實的,功能性互動測試。MonkeyTalk 提供簡單的 "smoke tests",複雜資料驅動的測試套件。MonkeyTalk 支援原生,移動和混合應用,真實裝置或者模擬器。MonkeyTalk 使得場景捕獲非常容易,可以記錄高階別,可讀的測試指令碼。同樣的命令可以用在 iOS 和 Android 應用上。你可以記錄一個平臺的一個測試,並且可以在另外一個平臺回放。MonkeyTalk 支援移動觸控和基於手勢互動為主的移動體驗。點選,拖拽,移動,甚至是手指繪製也可以被記錄和回放。

優點:功能強大。

缺點:主要測試安卓應用,不適合我們的。

8.Robotium

Robotium 是一款國外的Android自動化測試框架,主要針對Android平臺的應用進行黑盒自動化測試,它提供了模擬各種手勢操作(點選、長 按、滑動等)、查詢和斷言機制的API,能夠對各種控制元件進行操作。Robotium結合Android官方提供的測試框架達到對應用程式進行自動化的測 試。另外,Robotium 4.0版本已經支援對WebView的操作。Robotium 對Activity,Dialog,Toast,Menu 都是支援的。

優點:基於Instrumentation的測試框架,目前國內外用的比較多,資料比較多,社群也比較活躍。

缺點:對測試人員來說要有一定的Java基礎,瞭解Android基本元件。不能跨App。

9.Robolectric

Robolectric 是一款Android單元測試框架,使用 Android SDK jar,所以你可以使用測試驅動開發 Android 應用。測試只需幾秒就可以在工作站的 JVM 執行。Robolectric 處理檢視縮放,資源載入和大量 Android 裝置原生的 C 程式碼實現。Robolectric 允許你做大部分真實裝置上可以做的事情,可以在工作站中執行,也可以在常規的 JVM 持續整合環境執行,不需要通過模擬器。

缺點:語言太接近安卓。

10. Android Test Kit

Android Test Kit 是一組 Google 開源測試工具,用於 Android 平臺,包含 Espresso API 可用於編寫簡潔可靠的 Android UI 測試。

11.AndroidJUnit4

AndroidJUnit4 是一個讓 JUnit 4 可以直接執行在 Android 裝置上的開源命令列工具。

12.Calabash-android

calabash-android 是一個基於 Cucumber 的 Android 的功能自動化測試框架。Calabash 允許你寫和執行,是開源的自動化移動應用測試工具,支援 Android 和 iOS 原生應用。Calabash 的庫允許原生和混合應用的互動測試,互動包括大量的終端使用者活動。Calabash 可以媲美 Selenium WebDriver。但是, 需要注意的是 web 應用和桌面環境的互動跟觸控式螢幕應用的互動是不同的。Calabash 專為觸控式螢幕裝置的原生應用提供 APIs。

13.NativeDriver

NativeDriver 是 WebDriver API 的實現,是原生應用 UI 驅動,而不是 web 應用。

14.RoboSpock

RoboSpock 是一個開源的 Android 測試框架。提供簡單的編寫 BDD 行為驅動開發規範的方法,使用 Groovy 語音,支援 Google Guice 庫。RoboSpock 合併了 Robolectric 和 Spock 的功能。

一些停止維護的 Android 測試工具

一些幾乎沒有繼續維護的開源 Android 測試工具專案(至少是最近幾個月都沒有更新的專案)。

1.Emmagee

Emmagee 是監控指定被測應用在使用過程中佔用機器的CPU、記憶體、流量資源的效能測試小工具。Emmagee 同時還提供非常酷的一些特性,比如定製間隔來收集資料,使用浮動視窗呈現實時程式狀態等。

2.Sirocco

Scirocco(scirocco-webdriver) 是開源的應用自動化測試工具,可以從 Eclipse 訪問必要的測試裝置。Scirocco 提供自動化的 Android 應用測試功能,代替手工測試。Scirocco 支援谷歌的 NativeDriver,把 AndroidDriver 作為主要的測試庫。Scirocco 包括三個部分:NativeDriver,AndroidDriver,scirocco 外掛(一個 Eclipse 外掛;可以自動執行 scenario 測試和製作測試報告截圖)。

相關文章