翻譯:使用Xcode測試(八)——用戶界面測試(User Interface Testing)

UI測試可以找到應(yīng)用UI并與之交互施掏,以驗證UI元素的屬性和狀態(tài)帖烘。

UI測試包括UI錄制亮曹,它可以生成代碼測試應(yīng)用UI。UI錄制是編寫UI測試快速入門的好方法秘症。

測試報告提供了關(guān)于UI測試的詳細(xì)信息照卦,包括測試失敗時UI狀態(tài)的快照。

UI取決于兩大核心技術(shù):XCTest框架和可訪問性乡摹。

  • XCTest提供UI測試框架役耕,集成到Xcode。創(chuàng)建和使用UI測試拓展了你對XCTest的使用和創(chuàng)建單元測試的認(rèn)知趟卸。創(chuàng)建UI測試target蹄葱,創(chuàng)建UI測試類和UI測試方法作為項目的一部分。使用SCTest斷言驗證預(yù)期的結(jié)果是否正確锄列。也可以通過Xcode服務(wù)和xcodebuild持續(xù)集成。XCTest完全兼容Objective-C和Swift惯悠。

  • 可訪問性是允許殘疾用戶和其他用戶體驗到iOS和OS X豐富的用戶體驗的核心技術(shù)邻邮。它包括一個豐富的語義數(shù)據(jù)集,在應(yīng)用使用中克婶,用戶可以使用筒严〉と可訪問性與UIKit和AppKit交互,并提供API允許你微調(diào)暴露給外部用戶使用的行為鸭蛙。UI測試可以使用該數(shù)據(jù)執(zhí)行其函數(shù)摹恨。

在源代碼中創(chuàng)建UI測試與創(chuàng)建單元測試類似。為應(yīng)用創(chuàng)建一個UI測試target娶视,然后Xcode創(chuàng)建一個默認(rèn)UI測試組合實現(xiàn)文件晒哄,在實現(xiàn)文件中有測試方法模版例子。當(dāng)你創(chuàng)建UI測試target肪获,可以指定測試哪個app寝凌。

用戶測試通過尋找應(yīng)用的UI對象,合成事件并將他們發(fā)送到這些對象孝赫,并提供豐富的API使你可以檢查UI對象的屬性和狀態(tài)较木,并與預(yù)期狀態(tài)對比。

要求

UI測試取決于開發(fā)工具和OS平臺的服務(wù)和API青柄。你需要Xcode7伐债, OS X 10.11 EI Capitan和iOS 9 (或更新版本)。UI測試保護(hù)隱私:

  • iOS設(shè)備需要啟用開發(fā)并連接到一個受信的主機(jī)致开。

  • OS X需要給予特殊的Xcode助手應(yīng)用權(quán)限峰锁。在第一次使用UI測試時會收到此提示。

iOS設(shè)備需要啟用開發(fā)并連接到一個受信的主機(jī)喇喉。OS X需要給予特殊Xcode助手應(yīng)用權(quán)限(在第一次自動提示)祖今。

概念和API

UI測試與單元測試在本質(zhì)上不同。單元測試讓你能夠在應(yīng)用范圍內(nèi)測試功能和方法,充分訪問應(yīng)用的變量和狀態(tài)玉组。UI測試以相同方式測試應(yīng)用UI仅叫,用戶不需要訪問應(yīng)用的內(nèi)部方法、函數(shù)和變量徐绑。這使你的測試與用戶相同的方式使用應(yīng)用,暴露用戶在使用過程中遇到的UI問題莫辨。

測試代碼作為一個單獨的進(jìn)程傲茄,合成應(yīng)用中UI事件。

APIs

UI測試基于以下三個類實現(xiàn):

  • XCUIApplication
  • XCUIElement
  • XCUIElementQuery

開始使用UI錄制

從UI錄制開始沮榜。它生成源代碼到測試的實現(xiàn)文件中盘榨,可以編輯修改以構(gòu)建測試或回訪一個特定使用場景。UI錄制也有助于探索新UI貨學(xué)習(xí)如何編寫UI測試序列蟆融。操作的基本順序是:

  1. 使用測試導(dǎo)航草巡,創(chuàng)建UI測試目標(biāo)。
  2. 在創(chuàng)建的模板文件中型酥,將光標(biāo)放置到測試函數(shù)中山憨。
  3. 開始UI錄制查乒。
  4. 啟動和運行應(yīng)用。做一系列的UI動作測試應(yīng)用郁竟。Xcode捕獲操作并生成函數(shù)的源代碼玛迄。
  5. 當(dāng)你完成測試操作時,停止UI錄制棚亩。
  6. 添加XCTest斷言源代碼蓖议。

編寫UI測試

API測試有功能和性能測試,也可以進(jìn)行UI測試蔑舞。UI測試操作app界面并集成大量低層次功能響應(yīng)UI拒担。

UI測試從根本上操作事件及響應(yīng)。

  • 查找元素攻询。
  • 了解元素的預(yù)期行為作為參考从撼。
  • tap或click元素引出一個響應(yīng)。
  • 測量響應(yīng)匹配或不匹配預(yù)期钧栖,生成通過或失敗的結(jié)果低零。

使用XCTest創(chuàng)建UI測試與創(chuàng)建單元測試類似。在整體上操作和編程方法是類似的拯杠,不同的是UI測試的基本概念以及如何操作UI測試掏婶。詳見用戶界面測試( User Interface Testing)。

在測試類結(jié)構(gòu)中潭陪,所提供的setup方法與單元測試類中的setup方法有兩個不同雄妥。

<pre><code>
-(void)setUp {

[super setUp];



// Put setup code here. This method is called before the invocation of each test 

method in the class.

self.continueAfterFailure = NO;

[[[XCUIApplication alloc] init] launch];

}
</pre></code>

默認(rèn)設(shè)置self.continueAfterFailure的值為NO。這通常是正確的配置依溯,因為在一個UI測試方法中每一步往往取決于前面的成功老厌,如果前面一個步驟失敗,則后續(xù)所有測試也是失敗的黎炉。

setup方法包括創(chuàng)建XCUIApplication實例并啟動它枝秤。UI測試必須啟動測試的應(yīng)用,因為setup在每個測試方法前運行慷嗜,這確保應(yīng)用中的每個測試方法都啟動淀弹。

當(dāng)編寫UI測試方法,你應(yīng)該使用UI錄制功能創(chuàng)建測試的基本步驟庆械。然后編輯你想要的順序薇溃,使用XCTest斷言提供成功或失敗結(jié)果。UI測試有功能和性能測試缭乘,就像單元測試一樣痊焊。

UI測試一般模式是:

  • 使用XCUIElementQuery查找XCUIElement。
  • 合成事件并將其發(fā)送到XCUIElement忿峻。
  • 使用斷言來比較XCUIElement的狀態(tài)和預(yù)期參考狀態(tài)薄啥。

構(gòu)建性能UI測試,包裝一系列可重復(fù)UI步驟到measureBlock結(jié)構(gòu)逛尚,參見編寫性能測試( Writing Performance Tests)垄惧。

官方原文地址:

https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html#//apple_ref/doc/uid/TP40014132-CH13-SW1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市绰寞,隨后出現(xiàn)的幾起案子到逊,更是在濱河造成了極大的恐慌,老刑警劉巖滤钱,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件觉壶,死亡現(xiàn)場離奇詭異,居然都是意外死亡件缸,警方通過查閱死者的電腦和手機(jī)铜靶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來他炊,“玉大人争剿,你說我怎么就攤上這事∪” “怎么了蚕苇?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長凿叠。 經(jīng)常有香客問我涩笤,道長,這世上最難降的妖魔是什么盒件? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任蹬碧,我火速辦了婚禮,結(jié)果婚禮上履恩,老公的妹妹穿的比我還像新娘锰茉。我一直安慰自己,他們只是感情好切心,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布飒筑。 她就那樣靜靜地躺著,像睡著了一般绽昏。 火紅的嫁衣襯著肌膚如雪协屡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天全谤,我揣著相機(jī)與錄音肤晓,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛补憾,可吹牛的內(nèi)容都是我干的漫萄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盈匾,長吁一口氣:“原來是場噩夢啊……” “哼腾务!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起削饵,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤岩瘦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后窿撬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體启昧,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年劈伴,在試婚紗的時候發(fā)現(xiàn)自己被綠了密末。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡宰啦,死狀恐怖苏遥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赡模,我是刑警寧澤田炭,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站漓柑,受9級特大地震影響教硫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辆布,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一瞬矩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锋玲,春花似錦景用、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盾碗,卻和暖如春媚污,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背廷雅。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工耗美, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留京髓,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓商架,卻偏偏與公主長得像堰怨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子甸私,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容