UI 測試考量
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
在 CI/CD 管線中執行自動化測試時,您可能需要特殊設定才能執行 UI 測試,例如 Selenium、Appium 或自動程式化 UI 測試。 本文說明執行UI測試的一般考慮。
必要條件
無頭部模式或可見UI模式?
執行 Web 應用程式的 Selenium 測試時,您可以透過兩種方式啟動瀏覽器:
無頭部模式。 在此模式中,瀏覽器會正常執行,但不會顯示任何 UI 元件。 雖然此模式不適用於瀏覽網頁,但在 CI/CD 管線中以自動方式執行自動化測試很有用。 Chrome 和 Firefox 瀏覽器可以在無外設模式中執行。
此模式通常會耗用計算機上的資源較少,因為 UI 不會轉譯,而且測試的執行速度較快。 因此,同一部計算機上可能會平行執行更多測試,以減少測試運行時間總計。
此模式可以擷 取螢幕快照,並用於疑難解答失敗。
注意
Microsoft Edge 瀏覽器目前無法在無外設模式中執行。
可見的UI模式。 在此模式中,瀏覽器會正常執行,且會顯示UI元件。 在 Windows 上以這個模式執行測試時, 需要特殊設定代理 程式。
如果您正在執行傳統型應用程式的UI測試,例如 使用WinAppDriver 或自動程式化UI測試的Appium測試, 則需要特殊設定代理 程式。
提示
端對端 UI 測試通常會長時間執行。 使用可見的 UI 模式時,視測試架構而定,您可能無法在相同的電腦上平行執行測試,因為應用程式必須處於焦點,才能接收鍵盤和滑鼠事件。 在此案例中,您可以在不同計算機上平行執行測試,以加速測試週期。 如需任何測試執行器,以及使用 Visual Studio 測試工作平行執行測試,請參閱平行執行測試。
可見UI模式中的UI測試
代理程式需要特殊設定,才能在可見UI模式中執行UI測試。
使用Microsoft裝載的代理程序進行可見的UI測試
Microsoft裝載的代理程式不支援的可見 UI 測試。 測試失敗,並出現錯誤訊息「元素無法互動」。 Microsoft裝載的代理程式支援無外設瀏覽器測試。
使用Microsoft裝載的代理程序進行無頭部模式 UI 測試
Microsoft裝載的代理程式已針對 Web 應用程式預先設定 UI 測試和 UI 測試。 Microsoft裝載的代理程式也會預先設定熱門 瀏覽器,並比對可用於執行 Selenium 測試的 Web 驅動程式版本 。 瀏覽器和對應的 Web 驅動程式會定期更新。 若要深入瞭解如何執行 Selenium 測試,請參閱 使用 Selenium 進行 UI 測試。
使用自我裝載的 Windows 代理程式進行可見 UI 測試
設定為以服務身分執行的代理程式只能使用無頭瀏覽器執行 Selenium 測試。 如果您未使用無頭瀏覽器,或正在執行傳統型應用程式的UI測試,則必須將Windows代理程式設定為以啟用自動記錄的互動式程式執行。
設定代理程式時,當系統提示您以服務身分執行時,請選取 [否]。 後續步驟可讓您使用自動記錄來設定代理程式。 當您的 UI 測試執行時,會在自動記錄設定中指定的使用者內容中啟動應用程式和瀏覽器。
如果您使用遠端桌面來存取代理程式以自動登入執行的計算機,只要中斷遠端桌面連線,就會鎖定計算機,而且此代理程式上執行的任何 UI 測試都可能會失敗。 若要避免失敗,請使用 遠端電腦上的 tscon 命令來中斷遠端桌面的連線。 例如:
%windir%\System32\tscon.exe 1 /dest:console
在此範例中,數位 『1』 是遠端桌面會話的識別碼。 此數目可能會在遠端會話之間變更,但可以在任務管理器中檢視。 或者,若要自動尋找目前的會話標識碼,請建立包含下列程式代碼的批處理檔:
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console
)
儲存批處理檔並建立桌面快捷方式,然後將快捷方式屬性變更為 「以系統管理員身分執行」。 從此快捷方式執行批處理檔會中斷與遠端桌面的連線,但會保留 UI 工作階段,並允許 UI 測試執行。
在 Azure VM 中布建代理程式以進行 UI 測試
如果您要在 Azure 上佈建虛擬機(VM),則可以透過 DevTest Labs 的代理程式成品取得 UI 測試的代理程式組態。
設定螢幕解析度
執行UI測試之前,您可能需要調整螢幕解析度,讓應用程式正確呈現。 為此, 可從 Marketplace 取得螢幕解析度公用程式工作 。 在管線中使用這項工作,將螢幕解析度設定為代理程式計算機所支援的值。 根據預設,此公用程式會將解析設定為代理程式計算機所支援的最佳值。
如果您使用螢幕解析度工作遇到失敗,請確定代理程式已設定為啟用自動記錄執行,且所有遠端桌面會話都使用 tscon 命令安全地中斷連線,如上所述。
注意
螢幕解析度公用程式工作會在統一組建/發行/測試代理程式上執行,且無法與已被 取代的執行功能測試工作搭配使用。 解決公用程式工作也無法用於 Azure 虛擬機。
針對UI測試中的失敗進行疑難解答
當您以自動方式執行UI測試時,擷取診斷數據,例如 螢幕快照 或 影片 ,對於探索失敗時的應用程式狀態很有用。
擷取螢幕快照
大部分的UI測試架構都可讓您擷取螢幕快照。 當這些結果發佈至伺服器時,收集的螢幕快照可作為測試結果的附件。
如果您使用 Visual Studio 測試工作 來執行測試,則必須將擷取的螢幕快照新增為結果檔案,才能在測試報告中使用。 為此,請使用下列程式代碼:
首先,請確定 TestContext 已定義在您的測試類別中。 例如:public TestContext TestContext { get; set; }
使用 新增螢幕快照檔案 TestContext.AddResultFile(fileName); //Where fileName is the name of the file.
如果您使用 [發佈測試結果] 工作 來發佈結果,則只有在使用 VSTest (TRX) 結果格式或 NUnit 3.0 結果格式時,才能發佈測試結果 附件。
如果您使用 JUnit 或 xUnit 測試結果,則無法發佈結果附件。 這是因為這些測試結果格式在結果架構中沒有附件的正式定義。 您可以改用下列其中一種方法來發佈測試附件。
如果您在組建 (CI) 管線中執行測試,您可以使用 複製和發佈組建成品 工作來發佈測試中建立的任何檔案。 這些會出現在 組建摘要的 [成品 ] 頁面中。
使用 REST API 來發布必要的附件。 您可以在此 GitHub 存放庫中找到程式碼範例。
擷取
如果您使用 Visual Studio 測試工作 來執行測試,則可以擷取測試的影片,並自動作為測試結果的附件使用。 為此,您必須在 .runsettings 檔案中設定影片數據收集器,而且此檔案必須在工作設定中指定。
說明與支援
- 請參閱我們的 疑難解答 頁面
- 取得 Stack Overflow 的建議,並透過 開發人員社群 取得支援