1. 被測試功能說明。
非常簡單的一個功能:在文本框中輸入文字,點擊Go按鈕,下面則會顯示文本框中輸入的文字。
接下來我們就為這個小程序創建UI自動化測試:
2. 創建測試項目。
打開VS2010,選擇 文件 - 新建 -項目,模板列表中選擇 測試 - 測試項目,輸入測試項目名稱 UITestProject。
3. 添加UI自動化測試。
1. 右鍵 UITestProject,選擇 添加 - 編碼的 UI 測試。
2. VS2010將彈出如下窗體:單擊 確定 按鈕。
3. 進而VS2010自動最小化,右下角彈出 UI 自動化測試生成器:
4. UI自動化測試基本步驟。
1. 單擊紅色按鈕開始錄制。
2. 操作一遍功能。
3. 暫停錄制。
4. 查看錄制的操作。
5. 生成測試代碼。
測試代碼:
[TestMethod] public void CodedUITestMethod1() { this.UIMap.TestMyApplication(); }
查看 TestMyApplication 方法,轉到定義:
/// <summary> /// TestMyApplication - 使用“TestMyApplicationParams”將參數傳遞到此方法中。 /// </summary> public void TestMyApplication() { #region Variable Declarations WpfEdit uITbContentEdit = this.UIMainWindowWindow.UITbContentEdit; WpfButton uIGOButton = this.UIMainWindowWindow.UIGOButton; WpfButton uI關閉Button = this.UIMainWindowWindow.UIMainWindowTitleBar.UI關閉Button; #endregion // 啟動“%VisualStudioDir%\Projects\MyUITestWpfSimple\MyUITestWpfSimple\bin\Debug\MyUITestWpfSimple.exe” ApplicationUnderTest uIMainWindowWindow = ApplicationUnderTest.Launch(this.TestMyApplicationParams.UIMainWindowWindowExePath, this.TestMyApplicationParams.UIMainWindowWindowAlternateExePath); // 在 “tbContent” 文本框 中鍵入“Hello cnblogs” uITbContentEdit.Text = this.TestMyApplicationParams.UITbContentEditText; // 單擊 “Go” 按鈕 Mouse.Click(uIGOButton, new Point(66, 10)); // 單擊 “關閉” 按鈕 Mouse.Click(uI關閉Button, new Point(24, 12)); }
TestMyApplication方法也是根據UI測試生成器記錄的步驟生成的。
6. 運行測試,VS將會自動打開窗體,自動在文本框中輸入文字Hello cnblogs,自動點擊按鈕。UI自動化測試的基本操作就是這樣了。
6. 為 UI 自動化測試添加斷言。
1. 按住 UI測試生成器 的十字線,拖到要斷言的控件上。
2. 松開鼠標,將彈出添加斷言窗口。點擊添加斷言,輸入結果值:Hello cnblogs 。
3. 單擊 確定,輸入驗證方法名:ValidateValue。
4. 查看生成的代碼:
[TestMethod] public void CodedUITestMethod1() { this.UIMap.TestMyApplication(); this.UIMap.ValidateValue(); }
轉到ValiateValue方法的定義:
/// <summary> /// ValidateValue - 使用“ValidateValueExpectedValues”將參數傳遞到此方法中。 /// </summary> public void ValidateValue() { #region Variable Declarations WpfText uIHellocnblogsText = this.UIMainWindowWindow.UIHellocnblogsText; #endregion // 確認 “Hello cnblogs” 標簽 的屬性“AutomationId”等於“Hello cnblogs” Assert.AreEqual(this.ValidateValueExpectedValues.UIHellocnblogsTextAutomationId, uIHellocnblogsText.AutomationId); // 確認 “Hello cnblogs” 標簽 的屬性“AutomationId”等於“Hello cnblogs” Assert.AreEqual(this.ValidateValueExpectedValues.UIHellocnblogsTextAutomationId1, uIHellocnblogsText.AutomationId); }
生成斷言和生成測試步驟的原理是一樣的。
7. 為 UI 自動化測試添加測試數據。
1. 打開 測試視圖(測試 - 窗口 - 測試視圖),選擇當前的測試項目,選擇屬性。在屬性對話框中,選擇 數據連接字符串:
2. 選擇數據源類型,這里我選擇 CSV文件。
3. 編碼實現使用CSV文件中的數據進行測試。
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\TestSources.csv", "TestSources#csv", DataAccessMethod.Sequential), DeploymentItem("UITestProject\\TestSources.csv"), TestMethod] public void CodedUITestMethod1() { using (ApplicationUnderTest.Launch(this.UIMap.StartMyApplicationParams.UIMainWindowWindowExePath, this.UIMap.StartMyApplicationParams.UIMainWindowWindowAlternateExePath)) { this.UIMap.TestMyApplicationParams.UITbContentEditText = TestContext.DataRow["input"].ToString(); this.UIMap.TestMyApplication(); this.UIMap.ValidateDisplayValueExpectedValues.UIHellocnblogsTextDisplayText= TestContext.DataRow["output"].ToString(); this.UIMap.ValidateDisplayValue(); } }
4. 運行測試,程序將自動打開,自動根據CSV文件中的數據進行輸入和驗證:
PS:VS2010 的版本必須是 Premium版 或者 Ultimate版;文中如有問題,請幫忙指出;各位大牛如果有更好的方法測試應用程序請賜教!