使用Visual Studio 2010進行UI自動化測試


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版;文中如有問題,請幫忙指出;各位大牛如果有更好的方法測試應用程序請賜教!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM