UI測(cè)試使你能夠找到并與你應(yīng)用程序的UI進(jìn)行交互氯檐,以驗(yàn)證UI元素的屬性和狀態(tài)戒良。
UI測(cè)試包括UI記錄,這使你能夠生成代碼男摧,以相同的方式練習(xí)你的應(yīng)用程序的UI蔬墩,并可以擴(kuò)展到實(shí)現(xiàn)UI測(cè)試译打。這是一個(gè)很好的方式來快速開始編寫UI測(cè)試耗拓。
增強(qiáng)了測(cè)試報(bào)告,以提供有關(guān)UI測(cè)試的詳細(xì)信息奏司,包括測(cè)試失敗時(shí)UI狀態(tài)的快照乔询。
UI測(cè)試基于兩個(gè)核心技術(shù):XCTest框架和輔助功能。
1.XCTest提供了與Xcode集成的UI測(cè)試功能的框架韵洋。創(chuàng)建和使用UI測(cè)試擴(kuò)展了你對(duì)使用XCTest和創(chuàng)建單元測(cè)試的了解竿刁。你創(chuàng)建一個(gè)UI測(cè)試目標(biāo),并且作為項(xiàng)目的一部分創(chuàng)建UI測(cè)試類和UI測(cè)試方法搪缨。你使用XCTest斷言來驗(yàn)證預(yù)期結(jié)果是否為真食拜。你還可以通過Xcode Server和xcodebuild獲得持續(xù)集成。XCTest完全兼容Objective-C和Swift副编。
2.可訪問性是核心技術(shù)负甸,允許殘疾用戶與iOS和macOS相同的豐富的體驗(yàn),其他用戶收到痹届。它包括一組豐富的關(guān)于UI的語義數(shù)據(jù)呻待,用戶可以使用它們來指導(dǎo)他們使用您的應(yīng)用程序《痈可訪問性與UIKit和AppKit集成蚕捉,并具有允許你微調(diào)行為和暴露給外部使用的API的API。UI測(cè)試使用該數(shù)據(jù)來執(zhí)行其功能柴淘。
在源代碼中創(chuàng)建UI測(cè)試類似于創(chuàng)建單元測(cè)試迫淹。你為應(yīng)用程序創(chuàng)建UI測(cè)試目標(biāo); 那么Xcode將為你創(chuàng)建一個(gè)默認(rèn)的UI測(cè)試組和實(shí)現(xiàn)文件秘通,并在實(shí)現(xiàn)文件中使用示例測(cè)試方法模板。創(chuàng)建UI測(cè)試目標(biāo)時(shí)敛熬,指定測(cè)試將處理的應(yīng)用程序充易。
UI測(cè)試的工作原理是通過查找應(yīng)用程序的UI對(duì)象,合成事件并將它們發(fā)送到這些對(duì)象荸型,并提供豐富的API盹靴,使你能夠檢查UI對(duì)象屬性和狀態(tài),以將它們與預(yù)期狀態(tài)進(jìn)行比較瑞妇。
要求
UI測(cè)試取決于服務(wù)和API稿静,不僅在開發(fā)工具中,而且在操作系統(tǒng)平臺(tái)上辕狰。你需要Xcode 7改备,macOS 10.11和iOS 9(或更高版本)。UI測(cè)試保護(hù)隱私:
1.iOS設(shè)備需要啟用進(jìn)行開發(fā)并連接到受信任的主機(jī)蔓倍。
2.macOS需要授予特殊Xcode Helper應(yīng)用程序的權(quán)限悬钳。當(dāng)您首次使用UI測(cè)試時(shí),系統(tǒng)會(huì)自動(dòng)提示你偶翅。
iOS設(shè)備需要啟用進(jìn)行開發(fā)并連接到受信任的主機(jī)默勾。macOS需要授予一個(gè)特殊的Xcode Helper應(yīng)用程序的權(quán)限(第一次使用時(shí)自動(dòng)提示)。
概念和APIs
UI測(cè)試從根本上與單元測(cè)試不同聚谁。單元測(cè)試使你能夠在應(yīng)用程序的范圍內(nèi)工作母剥,并允許您通過完全訪問應(yīng)用程序的變量和狀態(tài)來執(zhí)行功能和方法。UI測(cè)試以與用戶無需訪問應(yīng)用程序的內(nèi)部方法形导,函數(shù)和變量的方式相同的方式練習(xí)您的應(yīng)用程序的UI环疼。這使您的測(cè)試能夠以與用戶相同的方式查看應(yīng)用程序,從而暴露用戶遇到的UI問題朵耕。
你的測(cè)試代碼作為一個(gè)單獨(dú)的進(jìn)程運(yùn)行炫隶,合成應(yīng)用程序中的UI響應(yīng)的事件。
APIs
UI測(cè)試基于三個(gè)新類的實(shí)現(xiàn):
1.XCUIApplication
2.XCUIElement
3.XCUIElementQuery
開始使用UI錄制
從UI記錄開始阎曹。它將源代碼生成為可以編輯以構(gòu)建測(cè)試或播放特定使用場(chǎng)景的測(cè)試實(shí)現(xiàn)文件伪阶。UI記錄對(duì)于探索新的UI或?qū)W習(xí)如何編寫UI測(cè)試序列也很有用。操作的基本順序是:
1.使用測(cè)試導(dǎo)航器芬膝,創(chuàng)建UI測(cè)試目標(biāo)望门。
2.在創(chuàng)建的模板文件中,將光標(biāo)置于測(cè)試函數(shù)中锰霜。
3.開始UI錄制筹误。
應(yīng)用程序啟動(dòng)并運(yùn)行。練習(xí)應(yīng)用程序執(zhí)行一系列UI操作癣缅。Xcode將動(dòng)作捕獲到函數(shù)主體中的源中厨剪。
4.完成要測(cè)試的操作后哄酝,停止UI記錄。
5.向源中添加XCTest斷言祷膳。
編寫UI測(cè)試
API測(cè)試可以同時(shí)具有功能和性能方面陶衅,UI測(cè)試也可以。UI測(cè)試在應(yīng)用程序的表面空間操作直晨,并傾向于將許多低級(jí)功能集成到用戶看到的呈現(xiàn)和響應(yīng)中搀军。
UI測(cè)試從根本上操作事件和響應(yīng)的水平。
1.查詢查找元素勇皇。
2.知道元素的預(yù)期行為作為參考罩句。
3.點(diǎn)擊或單擊元素以引出響應(yīng)。
4.測(cè)量響應(yīng)與通過/失敗結(jié)果的預(yù)期匹配或不匹配敛摘。
使用XCTest創(chuàng)建UI測(cè)試是與創(chuàng)建單元測(cè)試相同的編程模型的擴(kuò)展门烂。類似的操作和編程方法被總體使用,給出了UI測(cè)試API的基本概念以及它們?nèi)绾卧?a target="_blank" rel="nofollow">用戶界面測(cè)試中描述的操作的差異兄淫。在測(cè)試類結(jié)構(gòu)中屯远,所提供的setUp方法包括setUp與單元測(cè)試類中的兩個(gè)差異。
- (void)setUp {
[super setUp];
// Put setup code here捕虽。在調(diào)用類中的每個(gè)測(cè)試方法之前調(diào)用此方法慨丐。
self.continueAfterFailure = NO;
[[[XCUIApplication alloc] init] launch];
}}
self.continueAfterFailure設(shè)置NO為默認(rèn)值。這通常是正確的配置薯鳍,因?yàn)閁I測(cè)試方法中的每個(gè)步驟往往取決于前一個(gè)步驟的成功; 如果一個(gè)步驟失敗咖气,所有以下測(cè)試也會(huì)失敗挨措。
方法的另一個(gè)補(bǔ)充setUp包括創(chuàng)建一個(gè)實(shí)例XCUIApplication并啟動(dòng)它挖滤。UI測(cè)試必須啟動(dòng)他們測(cè)試setUp的應(yīng)用程序,并且由于在每個(gè)測(cè)試方法之前運(yùn)行浅役,這確保為每個(gè)測(cè)試方法啟動(dòng)應(yīng)用程序斩松。
編寫UI測(cè)試方法時(shí),應(yīng)使用UI記錄功能為測(cè)試創(chuàng)建一組基本步驟觉既。然后惧盹,為了你的目的編輯此基本序列,使用XCTest斷言提供與單元測(cè)試一樣的通過或失敗結(jié)果瞪讼。UI測(cè)試具有功能和性能方面钧椰,就像單元測(cè)試一樣。
用于正確性的UI測(cè)試的一般模式如下:
1.使用XCUIElementQuery查找XCUIElement符欠。
2.合成事件并將其發(fā)送到XCUIElement嫡霞。
3.使用斷言將XCUIElement的狀態(tài)與預(yù)期的參考狀態(tài)進(jìn)行比較。
要構(gòu)建性能的UI測(cè)試希柿,請(qǐng)將可重復(fù)的UI序列步驟measureBlock包含在編寫性能測(cè)試中看到的結(jié)構(gòu)中诊沪。