1. XCTest
XCTest是蘋果在iOS 7和Xcode5引入的一個簡單而強大的測試框架,它的測試編寫起來非常簡單,并且遵循xUnit風格。
優點:與Xcode深度集成,有專門的Test導航欄
缺點:受限于官方測試API,因此功能不是很豐富
2. UIAutomation
UIAutomation是蘋果提供的UI自動化測試框架,使用Javascript編寫。基于UIAutomation有擴展型的工具框架和驅動型的框架。擴展型框架以JavaScript擴展庫方法提供了很多好用js工具,注入式的框架通常會提供一些Lib或者是Framework,要求測試人員在待測應用的代碼工程中導入這些內容,框架可以通過他們完成對app的驅動。驅動型UI Automation 在自動化測試底層使用了UI Automation庫,通過TCP通信的方式驅動UI Automation來完成自動化測試,通過這種方式,編輯腳本的語言不再局限于JavaScript
3. Frank
Frank是iOS平臺一款非常受歡迎的app測試框架,它使用Cucumber語言來編寫測試用例, Frank包含一個強大的“app inspector”–Symbiote,可以用它來獲得運行中app的詳細信息,便于開發者將來進行測試回顧。 它允許使用Cucumber編寫結構化英語句子的測試場景。 Frank要求測試時在應用程序內部編譯,這意味著對源代碼的改變是強制性的。操作方式為使用Cucumber和JSON組合命令,將命令發送到在本地應用程序內部運行的服務器上,并利用UISpec運行命令。
優點: 測試場景是在Cucumber的幫助下,用可理解的英語句子寫的。強大的Symbiote實時檢查工具。 活躍的社區支持。 不斷擴大中的庫
缺點:對手勢的支持有限。 在設備上運行測試有點難。 修改配置文件需要在實際設備上運行。 記錄功能不可用
4. KIF
KIF是Keep It Functional項目的縮寫,是一款iOS app功能性測試框架,使用Objective-C語言編寫,對蘋果開發者來說非常容易上手,更是一款開發者廣為推薦的測試工具。KIF tester使用私有API來了解App中的視圖層級。但缺點是運行較慢
5. Calabash
Calabash是一個適用于iOS和Android開發者的跨平臺app測試框架,可用來測試屏幕截圖、手勢和實際功能代碼。Calabash開源免費并支持Cucumber語言,Cucumber能讓你用自然的英語語言表述app的行為,實現BDD(Behavior Driven Development,行為驅動開發)。 Cucumber中的所有語句使用Ruby定義。
優點: 有大型社區支持。列表項 簡單,類似英語表述的測試語句支持在屏幕上的所有動作,如滑動,縮放,旋轉,敲擊等。 跨平臺開發支持(同樣的代碼在Android和iOS設備中都適用)
缺點:測試步驟失敗后,將跳過所有的后續步驟,這可能會導致錯過更嚴重的產品問題。測試耗費時間,因為它總是默認先安裝app。 需要Calabash框架安裝在ios的ipa文件中, 因此測試人員必須要有iOS的app源碼。 除了Ruby,對其他語言不友好
6. Subliminal
Subliminal是另一款與XCTest集成的框架。與KIF不同的是,它基于UIAutomation編寫,旨在對開發者隱藏UIAutomation中一些復雜的細節
7. Kiwi
Kiwi是對XCTest的一個完整替代,使用xSpec風格編寫測試。 Kiwi帶有自己的一套工具集,包括expectations、mocks、stubs,甚至還支持異步測試。它是一個適用于iOS 開發的Behavior Driven Development(BDD)庫,優點在于其簡潔的接口和可用性,易于設置和使用,非常適合新手開發者。Kiwi使用Objective-C語言編寫,易于IOS開發人員上手
8.Appium
Appium是一個開源的、跨平臺的自動化測試工具,支持IOS、Android和FirefoxOS平臺。 通過Appium,開發者無需重新編譯app或者做任何調整,就可以測試移動應用,可以使測試代碼訪問后端API和數據庫。它是通過驅動蘋果的UIAutomation和Android的UiAutomator框架來實現的雙平臺支持,同時綁定了Selenium WebDriver用于老的Android平臺測試。開發者可以使用WebDriver兼容的任何語言編寫測試腳本,如Ruby,C#,Java,? JS,OC, PHP,Python,Perl和Clojure 語言
自動化測試框架總結
iOS自動化測試框架繼承關系如下. XCTest與 Xcode 的 IDE 直接集成,使用簡單, 但其不支持stub和mock, 所以單使用XCTest框架的較少. Kiwi是一個iOS平臺十分好用的行為驅動開發BDD的測試框架,有著非常漂亮的語法,可以寫出結構性強,非常容易讀懂的測試。UI Automation是Apple官方提供的UI自動化測試的解決方法,但接口不夠豐富。
KIF、Frank、Calabash都是通過使用代碼的形式來模擬事件觸發,使得被測代碼就像是由用戶行為所觸發的一樣。但這樣的代價是插入一個額外層的復雜度。
iOS測試框架中支持BDD的有calabash 和Kiwi。
可選用的單元測試框架有Kiwi,Specta,Quick等,而KIF,Subliminal和calabash更適用于UI級驗收測試
IOS A/B test 測試框架 FlipTest
FlipTest是一個優秀的iOS app A/B測試框架,可為app挑選最佳的UI。FlipTest會基于外觀和易用性等眾多因素返回測試結果,進而幫開發者解決UI問題。用FlipTest進行測試無需向App Store重新提交應用或者大幅更改代碼,只需要在app中添加一行代碼,節省了不少時間
參考資料