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