5 個 iOS 和 Android 最佳的開源自動化工具

2015-11-07    分類:Android開發、程式設計開發、首頁精華1人評論發表於2015-11-07

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

自動化測試時下在產品測試上有著非常重要的作用。實現測試自動化有多種積極的方式,包括最大限度地減少測試執行時間;在關鍵的釋出階段,用更少的時間確保更大的覆蓋範圍;在產品開發階段,可靠又重複性地執行以確保沒有引進迴歸問題。最大限度地減少重複性迴歸測試迴圈時的人為錯誤和疏忽的風險。

在市場上有很多可用的工具,開源的或要付費的。雖然付費和開源工具各有利弊,但是後者在自動化測試社群得到了廣泛的應用。根據專案需求來選擇合適的自動化工具是非常棘手的。

下面介紹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裝置中都適用)

缺點

  1. 測試步驟失敗後,將跳過所有的後續步驟。這可能會導致錯過更嚴重的產品問題。
  2. 需要時間來進行測試,因為它首先總是預設安裝app。但是,這種設定可以通過在程式碼中配置一個鉤子(hook)覆蓋掉。
  3. 需要Calabash框架安裝在ios的ipa檔案中。
  4. 我們必須要有iOS的app程式碼。
  5. 除了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
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章