- iOS自動化測試實戰(zhàn):基于Appium、Python與Pytest
- Storm 程立編著
- 1780字
- 2025-06-19 18:02:22
2.3 iOS App測試框架概覽
隨著移動互聯(lián)網(wǎng)的興起,App的測試越來越受重視。Android操作系統(tǒng)具有開源性,其測試工具和測試方法廣為流行,而iOS的私有性導(dǎo)致很多與iOS相關(guān)的測試的執(zhí)行較煩瑣。為了幫助大家更好地執(zhí)行iOS App自動化測試,本節(jié)介紹當(dāng)前流行的iOS測試工具。
UIAutomation是蘋果提供的UI自動化測試框架,使用JavaScript編寫測試代碼。該工具在iOS UI自動化測試中使用非常廣泛。
基于UIAutomation的框架主要有擴(kuò)展型、注入型和驅(qū)動型3種。擴(kuò)展型框架通過JavaScript擴(kuò)展庫方法提供了很多好用的工具;注入型框架通常會提供一些Lib或者Framework,要求測試人員在待測App的代碼工程中導(dǎo)入這些內(nèi)容,框架可以通過它們完成對App的驅(qū)動;驅(qū)動型框架在自動化測試底層使用UIAutomation庫,通過TCP(Transmission Control Protocol,傳輸控制協(xié)議)通信的方式驅(qū)動UIAutomation來完成自動化測試,當(dāng)采用這種方式時,編寫測試腳本的語言不再局限于JavaScript。
XCTest是蘋果在iOS 7和Xcode 5中引入的一款簡單而強大的測試框架,它集成在Xcode中,用來編寫測試代碼。它可實現(xiàn)各個層次的測試。
用XCTest編寫測試代碼非常簡單,并且遵循 XUnit風(fēng)格。在創(chuàng)建項目時,Xcode會默認(rèn)使用XCTest,并且默認(rèn)創(chuàng)建單元測試和UI測試,其中單元測試主要用于測試代碼的大部分基本功能,如絕大多數(shù)模型的類和方法測試、業(yè)務(wù)邏輯測試、網(wǎng)絡(luò)接口調(diào)用測試等。UI測試一般會考慮用戶的交互流程,模擬用戶的交互操作,利用XCTest的UI記錄特性來獲取界面上的一系列視圖元素和操作事件,然后在測試方法中觸發(fā)事件,所以這是一款可以實現(xiàn)各個層次的測試(如單元測試、UI自動化測試、性能測試等)的框架。
KIF(Keep It Functional)是一款iOS App功能測試框架,由Square開發(fā),該測試框架只支持 iOS。該框架的測試代碼使用Objective-C語言編寫,因此測試人員需要熟練掌握Objective-C語言。對于蘋果開發(fā)者來說,該框架非常容易上手,該框架也是蘋果開發(fā)者廣為推薦的測試工具。KIF使用未公開的Apple API(私有 API),可以進(jìn)行項目的單元測試,也可以進(jìn)行UI集成測試,但缺點是運行速度較慢。
Frank是iOS開發(fā)環(huán)境下的一款自動化測試框架。App在Xcode環(huán)境下開發(fā)完成后,可以通過Frank 實現(xiàn)結(jié)構(gòu)化的測試用例。Frank的底層語言為Ruby。作為一款開源的iOS測試工具,它在國外已經(jīng)有廣泛的應(yīng)用,但是國內(nèi)相關(guān)資料比較少。
Frank可以針對iOS平臺進(jìn)行功能測試,可以模擬用戶的操作對App進(jìn)行黑盒測試,并且使用Cucumber編寫測試用例,使測試用例可以像自然語言一樣描述功能需求,讓測試以“可執(zhí)行的文檔”的形式成為業(yè)務(wù)客戶與交付團(tuán)隊之間溝通的橋梁。其最大的優(yōu)點為,測試場景是在Cucumber的幫助下,用可理解的英語句子進(jìn)行描述的。另外,F(xiàn)rank還有活躍的社區(qū)支持,以及不斷擴(kuò)大的支持庫。而Frank的缺點是對手勢的支持有限。
Calabash是一款適合iOS和Android開發(fā)者使用的跨平臺App測試框架,可用來測試屏幕截圖、手勢和實際功能代碼。
Calabash開源、免費并支持Cucumber語言。Cucumber能讓開發(fā)者用自然的英語表述App的行為,實現(xiàn)BDD(Behavior Driven Development,行為驅(qū)動開發(fā)),而Calabash-iOS是一款基于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語言外,它對其他語言不友好。
Subliminal是一款與XCTest集成的框架,也是一款優(yōu)秀的iOS集成測試框架。與KIF不同的是,它基于UIAutomation編寫測試代碼,對開發(fā)者隱藏UIAutomation中一些復(fù)雜的細(xì)節(jié)??上Ы鼛啄晁巡辉俑?。
Kiwi是對XCTest的一個完整替代,使用xSpec風(fēng)格編寫測試代碼。Kiwi帶有自己的一套工具集,包括expectations、mocks、stubs,甚至還支持異步測試。它是一個適用于 iOS 開發(fā)的BDD庫,具有簡潔的接口,可用性強,易于設(shè)置和使用,可用于寫出結(jié)構(gòu)性強的易讀測試用例,非常適合剛?cè)腴T的開發(fā)者。Kiwi是使用Objective-C語言編寫的,易于iOS開發(fā)者上手。
Appium是一款開源的、跨平臺的自動化測試框架,支持iOS、Android平臺。通過 Appium,開發(fā)者無須重新編譯App或者做任何調(diào)整,就可以測試App,還可以使測試代碼訪問后端API和數(shù)據(jù)庫。它通過驅(qū)動蘋果的UIAutomation框架來實現(xiàn)iOS平臺支持。開發(fā)者可以使用WebDriver兼容的任何語言(如 Ruby、C#、Java、JavaScript、Objective-C、PHP、Python、Perl語言)編寫測試代碼。
在工作中,建議關(guān)注以下幾點。
● 框架必須為開源產(chǎn)品,無須資金投入。
● 社區(qū)活躍、更新快,這意味著開發(fā)者可以找到豐富的學(xué)習(xí)資源,也有助于較快地修復(fù)bug。
● 支持跨平臺。
● 無須獲取App源碼,無須對App進(jìn)行任何調(diào)整。
因此,本書選擇Appium框架作為iOS App自動化測試工具。
- Mastering Entity Framework Core 2.0
- 嵌入式軟件系統(tǒng)測試:基于形式化方法的自動化測試解決方案
- Production Ready OpenStack:Recipes for Successful Environments
- 零基礎(chǔ)學(xué)Java(第4版)
- Mastering Linux Security and Hardening
- Python Interviews
- 從Power BI到Analysis Services:企業(yè)級數(shù)據(jù)分析實戰(zhàn)
- Go語言從入門到精通
- HTML+CSS+JavaScript網(wǎng)頁制作:從入門到精通(第4版)
- NGUI for Unity
- Python網(wǎng)絡(luò)爬蟲實例教程(視頻講解版)
- 快樂編程:青少年思維訓(xùn)練
- PHP項目開發(fā)全程實錄(第4版)
- Wearable:Tech Projects with the Raspberry Pi Zero
- ASP.NET jQuery Cookbook(Second Edition)