5個iOS和Android最佳的開源自動化工具
自動化測試時下在產品測試上有著非常重要的作用。實現測試自動化有多種積極的方式,包括最大限度地減少測試執行時間;在關鍵的發布階段,用更少 的時間確保更大的覆蓋范圍;在產品開發階段,可靠又重復性地運行以確保沒有引進回歸問題。最大限度地減少重復性回歸測試循環時的人為錯誤和疏忽的風險。
在市場上有很多可用的工具,開源的或要付費的。雖然付費和開源工具各有利弊,但是后者在自動化測試社區得到了廣泛的應用。根據項目需求來選擇合適的自動化工具是非常棘手的。
下面介紹 5 個最佳的 iOS 和 Android 開源自動化工具。
1)Calabash(適用于 Android 和 iOS)
Calabash 是一個開源的驗收測試框架,支持 Android 和 iOS 自動化。Calabash 為 Android 和 iOS 自動化測試提供了一個單獨的庫。這是一個跨平臺的框架,支持 Cucumber,Cucumber 能讓你用自然的英語語言表述 app 的行為,實現 BDD(Behavior Driven Development,行為驅動開發)。
Calabash 提供了一個橋梁,允許 Cucumber 測試對 iOS 和 Android 運行和驗證。Cucumber 測試使用一列語句寫入,這些語句會形成很多測試場景。Cucumber 中的所有語句使用 Ruby 定義。
在 Calabash,Cucumber 語句只能被定義一次,但可以在 Cucumber 腳本的不同場景中重復使用。
實際測試是用 Gherkin 寫的,依靠 Ruby 代碼的支持,并在 Cucumber 框架的上下文中運行。
優點
- 大型社區支持。
- 簡單,類似英語表述的測試語句
- 支持在屏幕上的所有動作,如滑動,縮放,旋轉,敲擊等。
- 大型且熱心的社區。
- 跨平臺開發支持(同樣的代碼在 Android 和 iOS 設備中都適用)
缺點
- 測試步驟失敗后,將跳過所有的后續步驟。這可能會導致錯過更嚴重的產品問題。
- 需要時間來進行測試,因為它首先總是默認安裝 app。但是,這種設置可以通過在代碼中配置一個鉤子(hook)覆蓋掉。
- 需要 Calabash 框架安裝在 ios 的 ipa 文件中。
- 我們必須要有 iOS 的 app 代碼。
- 除了 Ruby,對其他語言不友好。
2)Appium(Android 和 iOS)
Appium 是 Sauce Labs 出品的一個開源的自動化測試框架,用于原生、混合和移動的 web app。框架內的 Appium 庫函數調用 Appium 服務器是在操作連接設備的后臺運行的。它在內部使用 JSONWireProtocol,來與使用 Selenium 的 WebDriver 的 iOS 和 Android app 進行互動。
不像 Calabash 只支持 Ruby 開發,在框架中使用 Appium 時,你可以從 Java、Python 和 Ruby,以及所有其他 Selenium WebDriver 支持的語言中選擇。
Appium 服務器被托管在 Node 服務器上。你可以通過觸發一組 Node 命令來啟動 Appium 服務器。使用 Appium Standalone Application 作為服務器(從 Appium 網站下載),Inspector 工具可對 app 的所有定位器提供查找/識別/操作的能力。
優點
- 支持多種語言。
- 不需要訪問源代碼。
- 跨平臺腳本開發。
- 大型社區支持。
- 支持 Mac 上的腳本記錄。
- 使用 Appium Server 應用程序的 Inspector 工具提取標識符。
- 通過 Appium Server 的桌面應用程序對 Selendroid 內置支持。
- 它還使用供應商提供的框架:適用于 iOS 的 UIAutomation ,分別適用于 Android 4.2+ 和 2.3+ 的 UIAutomator 和 Selendroid。
- 支持物理設備與仿真器。
- 支持原生,混合和移動的 web 自動化應用程序。
缺點
- Appium Server 桌面應用程序的發布常常不穩定。
- 腳本記錄不適用于 Application 服務器對于 Windows OS 的桌面應用程序。
3)Robotium(Android )
Robotium 是一個開源的測試框架,用于開發功能性,系統,和驗收測試場景。它與 Selenium 非常相似,除了 Robotium 只適用于 Android。它注冊在 Apache License 2.0 下。
因為它不但簡單,而且又具有創建強大又可靠的自動化場景的能力,因而它在自動化測試社區廣泛流行。
它采用運行時綁定到 GUI 組件。它安裝了一個測試用例套件作為在 Android 設備或仿真器上的應用程序,并提供用于執行測試的真實環境。
優點
- 容易在最短的時間內編寫測試腳本。
- 預裝自動化 app 是可能的。
- 自動跟隨當前 activity。
- 由于運行時綁定到 GUI 組件,所以相比 Appium,它的測試執行更快,更強大。
- 不訪問代碼或不知道 app 實現,也可以工作。
- 支持 Activities、Dialogs、Toasts、Menus、Context Menus 和其他 Android SDK 控件。
缺點
- 不能處理 flash 和 web 組件。
- 支持 Java 開發。
- 在舊設備上會變得很慢。
- 由于不支持 iOS 設備,當自動化測試同時覆蓋 android 與 iOS 的情況時,測試會被中斷。
- 沒有內置的記錄和回放功能. 使用記錄功能需要 TestDroid 和 Robotium Recorder 這樣收費工具。
4)Frank(iOS)
Frank 是一個 iOS app 的自動化框架,允許使用 Cucumber 編寫結構化英語句子的測試場景。
Frank 要求測試時在應用程序內部編譯,這意味著對源代碼的改變是強制性的。這是一個使用 Cucumber 和 JSON 組合命令的工具,命令發送到在本地應用程序內部運行的服務器上,并利用 UISpec 運行命令。
優點
- 測試場景是在 Cucumber 的幫助下,用可理解的英語句子寫的。
- Symbiote——包含實時檢查工具。
- 如果團隊有關于 web selenium 和 cucumber 自動化框架的經驗,也有效。
- 活躍的社區支持。
- 不斷擴大中的庫。
缺點
- 對手勢的支持有限。
- 在設備上運行測試有點難。
- 修改配置文件需要在實際設備上運行。
- 記錄功能不可用。
5)UIAutomator(Android)
UIAutomator 是由谷歌提供的測試框架,它提供了原生 Android app 和游戲的高級 UI 測試。這是一個包含 API 的 Java 庫,用來創建功能性 UI 測試,還有運行測試的執行引擎。該庫自帶 Android SDK。有很多教程可供初學者上手。優點是它在運行訪問不同的進程時,會給 JUnit 測試案例特權。雖然這對本地自動化 app 既好又更簡單,但是它對 web 自動化視圖非常有限或幾乎沒有任何支持。它僅支持使用 API level 16 及以上的設備,不過這也不算什么很大的因素,因為現在大多數的 app 支持 API level 19 及以上。
優點
- 簡單易學的教程。
- 庫由谷歌社區支持和維護。
- 第三方支付集成了基于云計算的測試管理。
缺點
- 僅支持 android 4.1 及以上。
- 不支持腳本記錄。
- 支持的重點是 Java。
- 你不能獲得當前活動或儀表化。
- 目前不支持 web 視圖,因此是混合 app。
- 庫支持使用 Java,因此如果有人想和使用 Ruby 的 cucumber 混合,會很困難。不過 Java 有它自己的 BDD 框架,雖然在實踐中用到的也不多。
譯文鏈接:http://www.codeceo.com/article/5-ios-android-test-tools.html
翻譯作者:碼農網 – 小峰