用戶界面測試

User Interface Testing
UI測試使您能夠查找應(yīng)用程序的UI并與其進(jìn)行交互,以驗證UI元素的屬性和狀態(tài)。

UI測試包括UI錄制,這使您能夠以與您所做的相同的方式生成演示應(yīng)用程序UI的代碼,以及可以展開以實施UI測試。這是快速開始編寫UI測試的好方法。

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

UI測試依賴于兩個核心技術(shù):XCTest框架和輔助功能。

  • XCTest提供與Xcode集成的UI測試功能的框架。創(chuàng)建和使用UI測試擴展了您對使用XCTest和創(chuàng)建單元測試的了解。您創(chuàng)建一個UI測試目標(biāo),創(chuàng)建的UI測試類和UI測試方法,將作為項目的一部分。您使用XCTest斷言來驗證預(yù)期結(jié)果是否正確。您還可以通過Xcode和XcodeBuild進(jìn)行持續(xù)集成。XCTest與Objective-C和swift完全兼容。
  • 輔助功能是允許殘疾用戶與其他用戶接收的iOS和MacOS的相同的豐富體驗的核心技術(shù)。它包含一組豐富的關(guān)于UI的語義數(shù)據(jù),用戶可以通過使用該技術(shù)的您的應(yīng)用程序來引導(dǎo)他們使用。輔助功能與UIKit和AppKit集成在一起,并具有API,可讓您微調(diào)行為以及外部使用的內(nèi)容。UI測試使用該數(shù)據(jù)來執(zhí)行其功能。

在源代碼中創(chuàng)建UI測試類似于創(chuàng)建單元測試。為您的應(yīng)用程序創(chuàng)建一個UI測試目標(biāo);那么Xcode將實現(xiàn)文件中使用示例測試方法模板為您創(chuàng)建一個默認(rèn)的UI測試組合實現(xiàn)文件。創(chuàng)建UI測試目標(biāo)時,您可以指定測試將要處理的應(yīng)用程序。

UI測試的工作原理是通過一個應(yīng)用程序的UI對象進(jìn)行查詢,合成事件并將其發(fā)送到這些對象,并提供豐富的api,使您能夠檢查UI對象的屬性和狀態(tài),將其與預(yù)期狀態(tài)進(jìn)行比較。

要求

UI測試取決于開發(fā)工具中和在操作系統(tǒng)平臺上的服務(wù)和AP。您將需要Xcode 7,macOS 10.11和iOS 9(或更高版本)。UI測試保護(hù)隱私:

  • 需要啟動iOS設(shè)備進(jìn)行開發(fā)并連接到受信任的主機。
  • macOS需要授予特殊的Xcode Helper應(yīng)用程序的權(quán)限。您首次使用UI測試時,會自動提示您。

需要啟動iOS設(shè)備進(jìn)行開發(fā)并連接到受信任的主機。macOS需要授予特殊Xcode Helper應(yīng)用程序的權(quán)限(首次使用時自動提示)。

概念和API

UI測試和單元測試的基本方法不同。單元測試使您能夠在應(yīng)用程序的范圍內(nèi)工作,并允許您通過完全訪問應(yīng)用程序的變量和狀態(tài)和執(zhí)行功能和方法。UI測試以與用戶無關(guān)的應(yīng)用程序的內(nèi)部方法,函數(shù)和變量相同的方法執(zhí)行應(yīng)用程序的UI。這使您的測試能夠以與用戶相同的方式查看應(yīng)用程序,從而暴露用戶遇到的UI問題。

您的測試代碼作為一個單獨的工程運行,合成應(yīng)用程序的UI響應(yīng)的事件。

APIs

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

  • XCUIApplication
  • XCUIElement
  • XCUIElementQuery

開始UI錄制

從UI錄制開始。它將元代買生成可以編輯的測試實現(xiàn)文件中,以構(gòu)建測試過播放特定的使用場景。UI記錄對于探索新的UI或?qū)W習(xí)如何編寫UI測試序列也很有用。操作的基本步驟是:

  • 1、使用測試導(dǎo)航器創(chuàng)建UI測試目標(biāo)
  • 2、在創(chuàng)建的模板文件中,將光標(biāo)置于測試功能中。
  • 3、開始UI記錄。
    應(yīng)用程序啟動并運行。應(yīng)用程序執(zhí)行一系列UI操作事件。Xcode將功能的動作捕獲到源代碼中。
  • 4、完成您想要測試的動作后,停止UI錄制。
  • 5、向生成的源代碼中添加XCTest斷言。

寫UI測試

API測試可以具有功能和性能兩個方面,UI測試也可以。UI測試在應(yīng)用程序的表面空間運行,并且傾向于將許多低級功能集成到用戶看到的界面呈現(xiàn)和響應(yīng)中去。

UI測試從根本上對事件和響應(yīng)的級別進(jìn)行操作。

  • 查找元素。
  • 了解元素的預(yù)期作為參考。
  • 點擊或者是單擊元素以引出響應(yīng)。
  • 測量響應(yīng)與通過/失敗結(jié)果的預(yù)期匹配不匹配。

使用XCTest 創(chuàng)建UI測試是與創(chuàng)建單元測試相同的編程模型的擴展。使用類似的操作和編程方法,差異給出了UI測試API的基本概念以及它們在用戶界面測試中描述的操作方式。

在測試類結(jié)構(gòu)中,提供的setup方法包括setUp單元測試類中的兩個不同之處。

 - (void)setUp {
    
    [super setUp];
 
    //將設(shè)置代碼放在這里。在調(diào)用類中的每個測試方法之前調(diào)用此方法。
 
    self.continueAfterFailure = NO;
    [[[XCUIApplication alloc] init] launch];
}

該值self.continueAfterFailure被設(shè)置NO為默認(rèn)值。這通常是正確的配置,因為UI測試方法中的每個步驟傾向于依賴于前一個的成功; 如果一步失敗,所有以下測試也將失敗。

該setUp方法的另一個補充是包括創(chuàng)建一個實例XCUIApplication并啟動它。UI測試必須啟動他們測試setUp的應(yīng)用程序,并且由于在每個測試方法之前運行,這樣可以確保每個測試方法都啟動該應(yīng)用程序。

在編寫UI測試方法時,您應(yīng)該使用UI錄制功能為您的測試創(chuàng)建一組基本步驟。然后,為了您的目的,您可以編輯此基本步驟,使用XCTest斷言提供單元測試中的通過或者失敗結(jié)果。

UI測試的一般模式的正確性如下:

  • 使用XCUIElementQuery 查找XCUIElement。
  • 合并事件并將其發(fā)送到XCUIElement。
  • 使用單元來比較XCUIElement的狀態(tài)與預(yù)期的引用狀態(tài)。
    為了構(gòu)建性能的UI測試,將可重復(fù)的UI序列包裝到measureBlock中,詳情參考編寫測試類和方法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,978評論 2 374

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