史上最全的 iOS测试工具集锦(自动化、性能)
引言:
隨著移動互聯(lián)網(wǎng)的興起,APP 測試的越來越被重視!Android 系統(tǒng)因為自己的開源性,測試工具和測試方法比較廣為流傳,但是 iOS 系統(tǒng)的私密性,導(dǎo)致很多測試的執(zhí)行都有點麻煩。
01 自動化測試
1、UIAutomation
UIAutomation 是蘋果提供的 UI 自動化測試框架,使用 JavaScript 編寫。
基于 UIAutomation 有擴展型的工具框架和驅(qū)動型的框架。擴展型框架以 JavaScript 擴展庫方法提供了很多好用 js 工具,注入式的框架通常會提供一些 Lib 或者是 Framework,要求測試人員在待測應(yīng)用的代碼工程中導(dǎo)入這些內(nèi)容,框架可以通過他們完成對 app 的驅(qū)動。
驅(qū)動型 UI Automation 在自動化測試底層使用了 UI Automation 庫,通過 TCP 通信的方式驅(qū)動 UI Automation 來完成自動化測試,通過這種方式,編輯腳本的語言不再局限于 JavaScript。
2、XCTest
XCTest 是蘋果在 iOS 7 和 Xcode5 引入的一個簡單而強大的測試框架,集成在 Xcode 中,用來編寫測試代碼。它提供了各個層次的測試。
XCTest 測試編寫起來非常簡單,并且遵循 xUnit 風(fēng)格。Xcode 在創(chuàng)建工程時,會默認(rèn)使用 XCTest,并且默認(rèn)創(chuàng)建了 Unit Test(單元測試)和 UI Test(界面測試)兩個 Target;
其中 Unit Test 主要用于測試代碼的大部分基本功能,比如絕大多數(shù) Model 的類和方法測試,業(yè)務(wù)邏輯測試,網(wǎng)絡(luò)接口調(diào)用測試等等。
UI Test 一般會考慮到用戶的交互流程,模擬用戶的交互操作,利用 XCTest 的 UI 記錄特性來獲取界面上的一些列視圖元素和操作事件,然后在測試方法中觸發(fā)事件。
所以這是一個可以提供各個層次的測試的框架,比如單元測試,自動化測試,性能測試等。
3、KIF
KIF 是 Keep It Functional 項目的縮寫,是一款 iOS app 功能性測試框架,來自 Square,該測試框架只支持 iOS。
另外,所有測試使用 Objective-C 語言編寫,對蘋果開發(fā)者來說非常容易上手,更是一款開發(fā)者廣為推薦的測試工具。
KIF 使用未公開的 Apple API(私有 API),這對于測試目的而言是安全的,基于第三方 iOS UI 的單元測試框架,所以可以做項目的單元測試,也可以做 UI 集成測試。但缺點是運行較慢。
4、Frank
Frank 是 iOS 開發(fā)環(huán)境下一款實現(xiàn)自動測試的工具,Xcode 環(huán)境下開發(fā)完成后,通過 Frank 實現(xiàn)結(jié)構(gòu)化的測試用例,其底層語言為 Ruby,作為一款開源的 iOS 測試工具,在國外已經(jīng)有廣泛的應(yīng)用。但是國內(nèi)相關(guān)資料卻比較少。其最大的優(yōu)點是允許我們用熟悉的自然語言實現(xiàn)實際的操作邏輯。
它提供了針對 iOS 平臺的功能測試能力,可以模擬用戶的操作對應(yīng)用程序進(jìn)行黑盒測試,并且使用 Cucumber 編寫測試用例,使測試用例如同自然語言一樣描述功能需求,讓測試以“可執(zhí)行的文檔”的形式成為業(yè)務(wù)客戶與交付團隊之間的橋梁。
優(yōu)點: 測試場景是在 Cucumber 的幫助下,用可理解的英語句子寫的,還有活躍的社區(qū)支持,以及不斷擴大中的庫
缺點:對手勢的支持有限,所以在設(shè)備上運行測試有點難
5、Calabash-iOS
Calabash 是一個適用于 iOS 和 Android 開發(fā)者的跨平臺 app 測試框架,可用來測試屏幕截圖、手勢和實際功能代碼。Calabash 開源免費并支持 Cucumber 語言,Cucumber 能讓你用自然的英語語言表述 app 的行為,實現(xiàn) BDD(Behavior Driven Development,行為驅(qū)動開發(fā))。
而 Calabash-iOS 就是一個基于 Calabash 的 iOS 的功能、自動化測試框架。
優(yōu)點:
有大型社區(qū)支持;
列表項簡單,類似英語表述的測試語句支持在屏幕上的所有動作,如滑動,縮放,旋轉(zhuǎn),敲擊等
缺點:
測試步驟失敗后,將跳過所有的后續(xù)步驟,這可能會導(dǎo)致錯過更嚴(yán)重的產(chǎn)品問題
測試耗費時間,因為它總是默認(rèn)先安裝 app,需要 Calabash 框架安裝在 iOS 的 ipa 文件中, 因此測試人員必須要有 iOS 的 app 源碼
除了 Ruby,對其他語言不友好
6、Subliminal
Subliminal 是另一款與 XCTest 集成的框架,也是個不錯 iOS 集成測試框架。與 KIF 不同的是,它基于 UIAutomation 編寫,對開發(fā)者隱藏 UIAutomation 中一些復(fù)雜的細(xì)節(jié)。可惜近幾年沒有更新了,若能支持 swift 就好了。
7、Kiwi
Kiwi 是對 XCTest 的一個完整替代,使用 xSpec 風(fēng)格編寫測試。Kiwi 帶有自己的一套工具集,包括 expectations、mocks、stubs,甚至還支持異步測試。
它是一個適用于 iOS 開發(fā)的 Behavior Driven Development(BDD)庫,有著非常漂亮的語法,優(yōu)點在于其簡潔的接口和可用性,易于設(shè)置和使用,可以寫出結(jié)構(gòu)性強易讀測試,非常適合新手開發(fā)者。Kiwi 也是使用 Objective-C 語言編寫,易于 iOS 開發(fā)人員上手。
8、Appium
Appium 是一個開源的、跨平臺的自動化測試工具,支持 iOS、Android 和 FirefoxOS 平臺。通過 Appium,開發(fā)者無需重新編譯 app 或者做任何調(diào)整,就可以測試移動應(yīng)用,可以使測試代碼訪問后端 API 和數(shù)據(jù)庫。
它是通過驅(qū)動蘋果的 UIAutomation 框架來實現(xiàn)的 iOS 平臺支持。開發(fā)者可以使用 WebDriver 兼容的任何語言編寫測試腳本,如 Ruby,C#,Java, JS,OC, PHP,Python,Perl 和 Clojure 語言。
02 iOS 性能測試
1、Instruments
Instruments 是 Xcode 自帶的,用來動態(tài)跟蹤和分析 MacOS 和 iOS 代碼的實用工具,以獨立 APP 形式存在的工具集,包含了很多強大的檢測功能:其中包括在真機和模擬器上的 APP 進(jìn)行性能測試。
主要功能有:
分析程序進(jìn)程行為
分析內(nèi)存分配及釋放細(xì)節(jié)
查找 CPU 問題
查找程序性能瓶頸
檢查設(shè)備相關(guān)的功能
比如:Wi-Fi、藍(lán)牙等
查找 App 中的內(nèi)存問題
比如內(nèi)存泄露(Leaked memory)、廢棄內(nèi)存(Abandoned memory)、僵尸(zombies)等
2、第三方 SDK
很多第三方的專門用于性能檢測和用戶行為、屬性分析的 SDK,比如 Bugly,OneAPM,聽云,Firebase Analytics,把它們接入項目可以短期內(nèi)達(dá)成性能檢測目標(biāo)。
這些第三方的工具原理都是類似的,利用 swizzle 的方法進(jìn)行 AOP(面向切面編程)處理,在關(guān)鍵函數(shù)之前和之后自動埋點記錄上報。有的平臺也支持上傳符號表文件精確定位代碼執(zhí)行位置以及以埋點的方式手工添加日志記錄。使用起來還是比較方便的,基本上引入 SDK 和相關(guān)庫,在程序入口處啟動檢測即可。
然而使用第三方 SDK 的缺點也是非常明顯的:
首先是缺乏定制性,我們需要的一些指標(biāo)的統(tǒng)計 SDK 沒有,SDK 有的我們又不完全需要
存在安全性問題,這些 SDK 涉及的統(tǒng)計數(shù)據(jù)都是 APP 的商業(yè)機密信息,對于有一定市場影響力的 APP 會有顧忌
這類產(chǎn)品是收費的,平時自己開發(fā)個 demo 練手也不適合連這種 SDK
03 iOS 調(diào)試工具
Xcode
Xcode 是運行在操作系統(tǒng) Mac OS X 上的集成開發(fā)工具(IDE),由 Apple Inc 開發(fā)。它是開發(fā) macOS 和 iOS 應(yīng)用程序的最快捷的方式。Xcode 具有統(tǒng)一的用戶界面設(shè)計,編碼、調(diào)試、測試,都在一個簡單的窗口內(nèi)完成。
另外,Xcode 也可以用來測試 APP 的時候獲取 APP 的日志,分析 bug 和問題。
iTunes
iTunes 是蘋果官方提供的一款工具,它在做 APP 測試的時候也可以提供手機 APP 日志的方法。
ITools
iTools 這個工具是一個第三方的 iOS 測試工具,它跟 iTune 功能類似,但是比 iTunes 工具簡單一些,簡單易用的界面,可以從 iTunes 的繁瑣中解放。也可以提供安裝、卸載、備份、獲取日志等各種功能。
03 內(nèi)測發(fā)布平臺
fir.im
為開發(fā)者提供測試應(yīng)用極速發(fā)布,應(yīng)用崩潰實時分析、用戶反饋收集等一系列開發(fā)測試效率工具服務(wù),幫助開發(fā)者將更多精力放在產(chǎn)品的開發(fā)與應(yīng)用的優(yōu)化上。
蒲公英
『蒲公英』是專為 iOS、Android 開發(fā)者提供的免費用應(yīng)用內(nèi)測、托管的平臺,旨在解決開發(fā)者將應(yīng)用分發(fā)給內(nèi)測用戶時的繁雜、低效的問題。
TestFlight
TestFlight 是蘋果提供的應(yīng)用測試工具,允許開發(fā)者邀請用戶對應(yīng)用的預(yù)發(fā)布版本進(jìn)行測試,從而在應(yīng)用正式發(fā)布至 App Store 前收集用戶反饋。
在這里還是要推薦下我自己建的軟件測試學(xué)習(xí)Q群: 746506216,群里都是學(xué)測試的,如果你想學(xué)或者正在學(xué)習(xí)測試,歡迎你加入,大家都是測試黨,不定期分享干貨(只有軟件測試相關(guān)的),包括我自己整理的一份2022最新的Python自動化測試進(jìn)階資料和零基礎(chǔ)教學(xué),歡迎進(jìn)階中和對測試感興趣的小伙伴加入!
總結(jié)
以上是生活随笔為你收集整理的史上最全的 iOS测试工具集锦(自动化、性能)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux典型压缩包操作 tar打包、压
- 下一篇: mac book 专用最新款win10镜