在負載測試中使用自動程式碼 UI 測試
若要判斷軟體回應不同層級使用的情況,您可執行「負載測試」(Load Test)。 負載測試會建立軟體程式的預期使用模型,方法是模擬多位使用者同時存取程式。 如需詳細資訊,請參閱建立和編輯負載測試。
負載測試主要是由一系列的 Web 效能測試或單元測試所組成,這些測試會在一段時間以多位模擬使用者進行運作。 負載測試也可包含自動程式碼 UI 測試。 只有在特殊的情況下才應該包含自動程式碼 UI 測試。 負載測試中使用自動程式碼 UI 測試的所有情節都會將自動程式碼 UI 測試做為效能測試。 這麼做相當有用,因為自動程式碼 UI 測試可讓您擷取 UI 層的效能。 例如,如果有應用程式花費 1 秒將資料傳回至用戶端,但花費 8 秒將資料呈現在瀏覽器中,便無法使用 Web 效能測試來擷取這類效能問題。
另一個會在負載測試中使用自動程式碼 UI 測試的情節是當應用程式難以編寫通訊協定層的指令碼。 在這個案例中,您可以考慮暫時使用自動程式碼 UI 驅動負載,直到可以正確編寫通訊協定層的指令碼。
需求
- Visual Studio Ultimate
針對自動程式碼 UI 測試中的時間測量實作程式碼
根據預設,您無法從負載測試中所用的自動程式碼 UI 測試取得準確的時間測量值,因為呼叫是非同步的。 您必須正確實作自動程式碼 UI 測試,以取得準確的時間測量值。 可以藉由使用 WaitForControlReady 方法來完成這個作業。 下列範例程式碼片段會示範登入頁面的這個用法。
注意事項 |
---|
這是簡化的範例。實際測試也必須在登入失敗時處理計時。 |
若要正確實作負載測試中所用的自動程式碼 UI 測試
測量花費在載入登入頁面的時間。
TestContext.BeginTimer("UI Login Page Load");
這個呼叫會載入登入頁面。
UIMap.LoginPage();
Web 測試中所測量的任何時間都必須使用 WaitForReady。 這會等候表單顯示。
UIMap.UIHttpteamtestweb1STORWindow1.UIHttpteamtestweb1STORDocument.UIEmailEdit.WaitForControlReady(); TestContext.EndTimer("UI Login Page Load");
警告
請確定花費在填寫表單的時間不包含在計時器中。錄製時,在填寫表單之後,但在送出表單之前,從錄製器產生程式碼。
這個函式會填寫登入表單。
UIMap.FilledInLoginForm();
測量登入作業的時間。
TestContext.BeginTimer("UI Login"); UIMap.LoggedIn();
Web 測試中所測量的任何時間都必須使用 WaitForReady。 這會等候登入確認頁面顯示。
UIMap.UIHttpteamtestweb1STORWindow.UIHttpteamtestweb1STORDocument.UIWelcomeJamesBondwellPane.WaitForControlReady(); TestContext.EndTimer("UI Login");
負載測試中的自動程式碼 UI 測試限制
自動程式碼 UI 測試會驅動滑鼠和鍵盤。 因此,每個代理程式上只有 1 個虛擬使用者可以執行自動程式碼 UI 測試。 控制這項行為的最佳方式是在負載測試中設定另一個情節,並將使用者負載設為 1 個使用者。 如果您有多個 UI 測試,請將測試混合設為 [循序]。 如需詳細資訊,請參閱針對現有的負載測試建立其他情節與編輯測試混合模型以指定虛擬使用者執行測試的可能性。
您也需要將負載代理程式設定成做為互動式處理序執行,而不是做為服務執行。 如需詳細資訊,請參閱安裝並設定 Test Agent 和 Test Controller。
外部資源
指引
Visual Studio 2012 連續傳遞測試– 第 6 章:測試工具箱