用戶界面測試

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

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

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

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

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

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

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

要求

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

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

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

概念和API

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

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

APIs

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

  • XCUIApplication
  • XCUIElement
  • XCUIElementQuery

開始UI錄制

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

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

寫UI測試

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

UI測試從根本上對事件和響應的級別進行操作。

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

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

在測試類結構中,提供的setup方法包括setUp單元測試類中的兩個不同之處。

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

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

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

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

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

  • 使用XCUIElementQuery 查找XCUIElement。
  • 合并事件并將其發(fā)送到XCUIElement。
  • 使用單元來比較XCUIElement的狀態(tài)與預期的引用狀態(tài)。
    為了構建性能的UI測試,將可重復的UI序列包裝到measureBlock中,詳情參考編寫測試類和方法。
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容