使用自動程式碼使用者介面測試來驗證程式碼
透過其 User Interface (UI) 驅動應用程式的自動化測試稱為 自動程式碼 UI 測試 (CUITs)。 這些測試包括 UI 控制項的功能測試。 它們可讓您驗證整個應用程式,包括它的使用者介面,正常運作。 自動程式碼 UI 測試特別有用的驗證或其他邏輯在使用者介面的地方,例如在網頁。 它們也經常用來自動化現有手動測試。
如下圖所示,一般開發經驗可能是一,您一開始,建立您的應用程式 (F5 鍵) 的位置並將 UI 控制項按一下驗證項目是否正確運作。 您可能會決定建立測試程式碼,讓您不需要繼續手動測試應用程式。 根據您的應用程式中測試的特殊功能,您可以撰寫程式碼以測試功能,或是可能有也可能沒有包含在 UI 測試層級的整合測試。 如果您要直接存取某些商務邏輯,您可以撰寫單元測試。 不過,在某些情況下,包括各種 UI 控制項的測試應用程式可能很有用處。 自動程式碼 UI 測試可以自動化初始 (F5) 案例,確認程式碼變換不會影響應用程式的功能。
建立自動程式碼 UI 測試非常容易。 當 CUIT 測試產生器在背景中執行時,您以手動方式執行測試。 您也可以指定哪些值應該於特定欄位隨即出現。 CUIT 測試產生器記錄您的動作和產生程式碼產生的類別。 在測試之後,您就可以編輯它在讓您修改一連串的特定編輯器。
或者,因此,如果您在 Microsoft 測試管理員中記錄的測試案例,您可以從該的程式碼。 如需詳細資訊,請參閱記錄和播放手動測試。
特製 CUIT 測試產生器和編輯器可讓您輕鬆地建立和編輯自動程式碼 UI 測試,即使您的主要技術在測試中心而不是編碼。 但是,如果您是開發人員,而且您想要擴充測試以進階方式,建構程式碼,讓它成為直接的複本並調整。 例如,您可能會記錄測試網站購買其他項目,然後編譯產生的程式碼將購買許多項目的複本。
需求
- Visual Studio Ultimate, Visual Studio Premium
如需自動程式碼 UI 測試所支援之平台和組態的詳細資訊,請參閱自動程式碼 UI 測試和動作記錄的支援組態和平台。
本主題內容
建立自動程式碼 UI 測試
Main 程序
啟動和停止應用程式
驗證 UI 控制項屬性
自訂您的自動程式碼 UI 測試
產生的程式碼
自動程式碼 UI 控制項動作和屬性
偵錯
什麼是下的
建立自動程式碼 UI 測試
建立自動程式碼 UI 測試專案。
必須在自動程式碼 UI 測試專案包含自動程式碼 UI 測試。 如果您還沒有自動程式碼 UI 測試專案,請建立一個。 在 [方案總管] 中,於方案的捷徑功能表中,選取 [加入][新的專案] ,然後選取 [Visual Basic] 或 [Visual C#]。 下,選取 [測試]],則 [自動程式碼 UI 測試]。
我沒有看到 [自動程式碼 UI 測試] 專案範本。
您可以使用不支援自動程式碼 UI 測試的 Microsoft Visual Studio 2012 版本。 若要建立自動程式碼 UI 測試,您必須使用 Visual Studio Ultimate 或 Visual Studio Premium。
將自動程式碼 UI 測試檔案。
如果您建立自動程式碼 UI 專案,第一 CUIT 檔案會自動加入。 若要加入其他測試檔案,在自動程式碼 UI 測試專案的捷徑功能表,指向 [加入],然後選取 [自動程式碼 UI 測試]。
在 [產生自動程式碼 UI 測試的程式碼] 對話方塊中,選取 [記錄動作,編輯 UI 對應或加入判斷提示]。
自動程式碼 UI 測試產生器隨即顯示,而且 Visual Studio 最小化。
記錄順序。
開始錄製,選取 [記錄] 圖示。 執行您在您的應用程式要測試的動作,包括啟動應用程式,則需要該。
例如,在中,如果您要測試的 Web 應用程式,您可能會啟動瀏覽器,巡覽至網站和登入到應用程式。
暫停錄製,例如,如果您必須處理來確定,選取 [暫停]。
您 誤記錄的刪除動作。 ],選取 [編輯動作。]。
會將您的動作,請選取 [產生程式碼] 圖示並輸入名稱和描述您的自動程式碼 UI 測試方法的產生程式碼 。
在 UI 欄位驗證值 (例如文字方塊)。
選取在自動程式碼 UI 測試產生器上的 [加入判斷提示] ],然後選取您的執行中應用程式的 UI 控制項。 在出現屬性的清單中,選取屬性,例如,在文字方塊中的 [文字] 。 在捷徑功能表上,選擇 [加入判斷提示]。 在對話方塊中,選取比較運算子、比較值和錯誤訊息。
關閉判斷提示視窗並選取 [產生程式碼]。
提示
可在錄製動作之間並驗證值。產生程式碼在每個順序或驗證的結尾。如果需要,您之後插入新的動作和驗證。
如需詳細資訊,請參閱 驗證控制項屬性。
檢視所產生的測試程式碼。
若要檢視產生的程式碼,請關閉 UI 測試產生器視窗。 在程式碼中,您可以為每個步驟的名稱。 程式碼在您建立的 CUIT 檔案:
[CodedUITest] public class CodedUITest1 { ... [TestMethod] public void CodedUITestMethod1() { this.UIMap.AddTwoNumbers(); this.UIMap.VerifyResultValue(); // To generate more code for this test, select // "Generate Code" from the shortcut menu. } }
將多個動作和判斷提示。
將游標置於適當的點在測試方法,然後在捷徑功能表,選擇 [自動程式碼 UI 測試的程式碼]。 此時會插入新的程式碼。
編輯測試動作和判斷提示的詳細資料。
開啟 UIMap.uitest。 這個檔案在自動程式碼 UI 測試編輯器中開啟,您可以編輯任何順序您記錄以及編輯您的判斷提示。
如需詳細資訊,請參閱使用自動程式碼 UI 測試編輯器,編輯自動程式碼 UI 測試。
執行測試。
使用測試總管或開啟測試方法的捷徑功能表,然後選擇 [執行測試]。 如需如何執行測試的詳細資訊, 請執行 下一個是什麼? 一節中的 自動程式碼 UI 測試其他選項 請參閱 使用測試總管執行單元測試 在這個主題的結尾。
在本主題的其餘章節提供關於步驟的詳細資料。在這個程序。
如需詳細的範例,請參閱 逐步解說:建立、編輯和維護自動程式碼 UI 測試。 在這個逐步解說中,您將建立簡單的 Windows Presentation Foundation (WPF) 應用程式示範如何建立,編輯和維護自動程式碼 UI 測試。 本逐步解說提供解決方案用來修正各種因時間問題和控制項重構而中斷的測試。
啟動和停止應用程式進行測試
我不想要個別啟動和停止我的應用程式、瀏覽器或資料庫對每一個測試。 如何?避免該?
如果您不希望錄製啟動待測應用程式的動作,則必須先啟動應用程式,然後才按一下 [錄製] 圖示。
在測試結束時,測試回合結束的處理序。 如果您啟動您的測試的應用程式,應用程式通常會關閉。 如果您不要測試結束應用程式,當它結束時,您必須將 .runsettings 檔案加入至您的方案和使用 KeepExecutorAliveAfterLegacyRun 選項。 如需詳細資訊,請參閱使用 .runsettings 檔案設定單元測試。
您可以加入測試初始化方法 (以 [TestInitialize] 屬性識別),以便在每個測試方法啟動時執行程式碼。 例如,您可以開始從 TestInitialize 方法的應用程式。
您可以加入測試清除方法,判斷由 [TestCleanup] 屬性,執行程式碼在每個測試方法結束時。 例如,您可以從 TestCleanup 方法呼叫關閉應用程式的方法。
驗證 UI 控制項屬性
您可以使用 [自動程式碼 UI 測試產生器] 將使用者介面 (UI) 控制項加入至測試的 UIMap,或為針對 UI 控制項使用判斷提示的驗證方法產生程式碼。
若要產生 UI 控制項的判斷提示,然後在自動程式碼 UI 測試產生器上的 加入判斷提示 工具並將其拖曳至控制項在應用程式中您要驗證的測試是正確的。 當方塊包含控制項時,釋放滑鼠。 UIMap.Designer.cs 檔案中會立即建立控制項類別程式碼。
這個控制項的屬性在 [加入判斷提示] 對話方塊中列出。
另一種方式巡覽至特定控制項選取箭號 [(<<)] 展開 [應用程式中的位置。] 的檢視。 若要尋找父代,同層級或子控制項,您只要在導覽可以按一下和使用方向鍵在樹狀目錄內移動。
我沒有看到任何屬性,當我選擇在應用程式中的控制項,則不會在 UI 控制項對應的控制項。
在應用程式程式碼中,您要驗證的控制項必須有唯一的 ID,例如 HTML ID 屬性或 WPF UId。 您可能必須更新應用程式程式碼將這些 ID。
接著,開啟屬性的捷徑功能表要驗證的 UI 控制項,然後指向 [加入判斷提示]。 在 [加入判斷提示] 對話方塊中,選取您的判斷提示選取 [比較子。] ],例如 AreEqual,然後輸入您的判斷提示的值在 [比較值]。
當您加入測試時您所有的判斷提示,請選取 [OK]。
若要產生判斷提示的程式碼,並將控制項加入至 UI 對應,請點選 [產生程式碼] 圖示。 輸入名稱。您的自動程式碼 UI 測試方法和說明的方法,將會當做註解的方法。 選取 [加入並產生]。 下,選取 [關閉] 圖示關閉 [自動程式碼 UI 測試產生器]。 這個程式碼會產生類似下列程式碼。 例如,在中,如果您輸入的名稱是 AssertForAddTwoNumbers,程式碼如下所示:範例:
將呼叫 Assert 方法 AssertForAddTwoNumbers 加入至自動程式碼 UI 測試檔案中的測試方法:
[TestMethod] public void CodedUITestMethod1() { this.UIMap.AddTwoNumbers(); this.UIMap.AssertForAddTwoNumbers(); }
您可以編輯此檔案變更步驟和判斷提示的順序,或建立新的測試方法。 若要加入其他程式碼,請將游標放在測試方法,然後在捷徑功能表中選擇 [自動程式碼 UI 測試的程式碼]。
將名為 AssertForAddTwoNumbers 的方法加入至 UI 對應 (UIMap.uitest)。 這個檔案在自動程式碼 UI 測試編輯器中開啟,您可以編輯判斷提示。
如需詳細資訊,請參閱使用自動程式碼 UI 測試編輯器,編輯自動程式碼 UI 測試。
您也可以檢視 Assert 方法產生的程式碼在 UIMap.Designer.cs 的。 不過,您不需要編輯這個檔案。 如果想要進行調整發行程式碼,請複製方法至另一個檔案,例如 UIMap.cs 給方法重新命名,並編輯其存在。
public void AssertForAddTwoNumbers() { ... }
我要選取的控制項失去焦點且消失,當我嘗試選取加入判斷提示工具從自動程式碼 UI 測試產生器時。如何?選取控制項?
選擇使用鍵盤的隱藏控制項
在某些情況下,,當 將控制項和驗證其屬性。,您可能必須使用鍵盤。 例如,使用時,內容功能表控制項嘗試錄製自動程式碼 UI 測試,請在控制項中的功能表項目清單會失去焦點且消失,當您嘗試選取加入判斷提示工具從自動程式碼 UI 測試產生器。 下圖所示,在 Internet Explorer 的內容功能表會失去焦點且消失,如果您嘗試以選取該加入判斷提示工具。
若要使用鍵盤選取 UI 控制項,請將滑鼠停留於用滑鼠按兩下。 然後同時按住 [Ctrl] 鍵和 [我] 鍵。 釋放按鍵。 控制會被程式碼UT測試產生器紀錄。
警告
如果您使用的是 Microsoft Lync,您必須先關閉 Lync才能開始自動程式碼 UI 測試產生器。Microsoft Lync 用 [Ctrl+I] 干擾鍵盤快速鍵。
我無法記錄在控制項的滑鼠停留。是否能夠在周圍?
手動記錄的滑鼠停留
在某些情況下,用於自動程式碼 UI 測試的特定控制項可能會要求您使用鍵盤手動記錄滑鼠停留事件。 例如,,同時對測試期間 Windows Form 或 Windows Presentation Foundation (WPF) 應用程式,則可能在自訂程式碼。 當使用者將滑鼠停留在上時,或者,可能會針對停留定義的特殊行為在控制項中,例如展開樹狀目錄中的節點。 若要測試情況等這些設定,您必須手動告知自動程式碼 UI 測試產生器您停留在控制項按下預先定義的鍵盤按鍵。
當您執行自動程式碼 UI 測試時,請將滑鼠停留在控制項。 然後,而按住鍵盤上的,傳輸和 R 索引鍵按住 Ctrl 鍵。 釋放按鍵。 滑鼠停留事件由自動程式碼 UI 測試產生器 UT 記錄。
在您產生測試方法之後,程式碼類似下列程式碼範例會加入至 UIMap.Desinger.cs 檔案:
// Mouse hover '1' label at (87, 9) Mouse.Hover(uIItem1Text, new Point(87, 9));
擷取的滑鼠停留事件指定索引鍵值在我的環境中其他地方使用。我可以變更預設指定索引鍵值?
設定滑鼠停留鍵盤工作
如果需要,用來套用在您的自動程式碼 UI 測試的滑鼠停留事件 Ctrl+Shift+R 的預設鍵盤工作可以使用不同的金鑰。
警告
在正常狀況下應該不需要變更滑鼠停留事件之鍵盤指派。當重新配置鍵盤工作時,請特別小心。您選擇的可能位於其他地方正在使用 Visual Studio 或所測試之應用程式中。
若要變更鍵盤工作,您必須修改下列組態檔:
<drive letter:>\ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ CodedUITestBuilder.exe.config
在組態檔中,變更 HoverKeyModifier 和 HoverKey 索引鍵的值可以修改鍵盤的工作:
<!-- Begin : Background Recorder Settings --> <!-- HoverKey to use. --> <add key="HoverKeyModifier" value="Control, Shift"/> <add key="HoverKey" value="R"/>
我有錄製滑鼠停留的問題在網站上。沒有這個的內建,也是?
設定為隱含滑鼠這個瀏覽器停留
在許多網站中,也就是說,當您停留在特定控制項時,視窗會展開並顯示詳細資料。 通常,這些看起來與桌上型電腦應用程式的功能表。 由於這是一個常用的模式,自動程式碼 UI 測試可瀏覽的網路的隱含停留。 例如,在中,如果您在 Internet Explorer 中記錄停留,就會啟動。 這些事件可能會造成取得訂閱者迴圈的停留。 因此,隱含停留記錄與 ContinueOnError 設為 UI 測試組態檔的 true 。 如果停留事件失敗,這允許繼續播放。
若要啟用隱含停留記錄在 Web 瀏覽器中,開啟組態檔:
<drive letter:>\ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ CodedUITestBuilder.exe.config
確認組態檔有關鍵字 RecordImplicitiHovers 設為 [ true 的值 (如下列範例所示:
<!--Use this to enable/disable recording of implicit hovers.--> <add key="RecordImplicitHover" value="true"/>
自訂您的自動程式碼 UI 測試
在您建立自動程式碼 UI 測試之後,您可以使用任何在 Visual Studio 中,下列工具就可以編輯它:
自動程式碼 UI 測試產生器: 使用自動程式碼 UI 測試產生器將其他控制項和驗證加入至測試。 請參閱本主題稍後的 將控制項和驗證其屬性。 一節。
自動程式碼 UI 測試編輯器: 自動程式碼 UI 測試編輯器可讓您輕鬆地修改自動程式碼 UI 測試。 您可以使用 [自動程式碼 UI 測試編輯器] 來找出、檢視和編輯測試方法。 您也可以在 UI 控制項對應中編輯 UI 動作及其相關聯的控制項。 如需詳細資訊,請參閱使用自動程式碼 UI 測試編輯器,編輯自動程式碼 UI 測試。
程式碼編輯器:
控制項中手動加入程式碼納入如 自動程式碼 UI 控制項動作和屬性 一節所描述的測試在這個主題。
在您建立自動程式碼 UI 測試之後,您可以修改資料驅動。 如需詳細資訊,請參閱HOW TO:建立資料驅動型自動程式碼 UI 測試。
在自動程式碼 UI 測試播放中,您可以指示測試等候系統發生特定事件,例如視窗顯示、進度列消失等等。 若要這麼做,請將適當的 UITestControl.WaitForControlXXX() 方法。 如需可用方法的完整清單,請參閱 讓自動程式碼 UI 測試在播放期間等候特定事件。 使用 WaitForControlEnabled 方法,如需等候控制項啟用自動程式碼 UI 測試的範例,請參閱 逐步解說:建立、編輯和維護自動程式碼 UI 測試。
自動程式碼 UI 測試支援部分的 HTML5 控制項包含在 Internet Explorer 9 和 Internet Explorer 10中。 如需詳細資訊,請參閱在自動程式碼 UI 測試中使用 HTML5 控制項。
程式碼指引的自動程式碼 UI 測試:
產生的程式碼
當您選擇 [產生程式碼] 時,有幾個程式碼片段建立:
在測試方法中的一行。
[CodedUITest] public class CodedUITest1 { ... [TestMethod] public void CodedUITestMethod1() { this.UIMap.AddTwoNumbers(); // To generate more code for this test, select // "Generate Code" from the shortcut menu. } }
您在這個方法也可以用滑鼠右鍵按一下加入錄製的動作和驗證。 您可以手動編輯其擴充或修改程式碼。 例如,您可以在迴圈可以封入其他程式碼。
您也可以加入新測試方法並加入程式碼對它們的方式。 每個測試方法必須有 [TestMethod] 屬性。
在 UIMap.uitest 的方法
這個方法包含您記錄或值您確認動作的詳細資料。 您可以開啟 UIMap.uitest 編譯這個程式碼。 它在刪除或重構記錄的動作的特定編輯器開啟。
您也可以檢視在 UIMap.Designer.cs 產生的方法。 此方法會執行在執行測試時錄製的動作。
// File: UIMap.Designer.cs public partial class UIMap { /// <summary> /// Add two numbers /// </summary> public void AddTwoNumbers() { ... } }
警告
您不需要編輯這個檔案,,因為它會重新產生,當您建立多個測試時。
您可以調整版本這些方法將檔案複製到 UIMap.cs。 例如,您可以讓您可以從測試方法呼叫的參數型版本:
// File: UIMap.cs public partial class UIMap // Same partial class { /// <summary> /// Add two numbers – parameterized version /// </summary> public void AddTwoNumbers(int firstNumber, int secondNumber) { ... // Code modified to use parameters. } }
在 UIMap.uitest 的宣告
這些宣告代表測試使用應用程式的 UI 控制項。 產生的程式碼會在其操作控制器和存取其屬性。
如果您撰寫自己的程式碼,您也可以使用它們。 例如,您可將測試方法定義為按一下 Web 應用程式中的超連結、在文字方塊中輸入值,或進行分支作業並根據欄位中的值採用不同測試動作。
您可以加入多個自動程式碼 UI 測試和多個 UI 對應物件與檔案,加速測試大型應用程式。 如需詳細資訊,請參閱測試含有多個 UI 對應的大型應用程式。
如需所產生程式碼的詳細資訊,請參閱 自動程式碼 UI 測試的結構。
自動程式碼 UI 控制項動作和屬性
當在自動程式碼 UI 測試中使用 UI 測試控制項時,它們會分為兩個部分:動作和屬性。
第一個部分包含可以針對 UI 測試控制項執行的動作。 例如,自動程式碼 UI 測試可以模擬滑鼠點選 UI 測試控制項或模擬鍵盤輸入的按鍵會影響 UI 測試控制項。
第二個部分包括取得和設定 UI 測試控制項。 例如,自動程式碼 UI 測試可以取得計算 ListBox的項目,或將 CheckBox 設定為選取的狀態。
存取 UI 測試控制項的動作
若要對 UI 測試控制項的動作,例如按下滑鼠或鍵盤動作,如 Mouse 和 Keyboard 類別使用方法:
若要執行滑鼠導向的動作,例如在 UI 測試控制項上按一下滑鼠下,請使用 Click。
Mouse.Click(buttonCancel);
若要執行鍵盤導向動作,例如輸入編輯控制項,請使用 SendKeys。
Keyboard.SendKeys(textBoxDestination, @"C:\\Temp\\Output.txt");
存取 UI 測試控制項的屬性
若要取得和設定 UI 控制項的特定屬性值,您可以直接取得或設定控制項的屬性值,也可以使用 UITestControl.GetProperty 和 UITestControl.SetProperty 方法,根據您要取得或設定之特定屬性的名稱。
傳回GetProperty 物件,可以轉型為適當的 Type。 SetProperty 可接受物件做為屬性值。
若要直接取得或設定 UI 測試控制項的屬性
從 T 衍生的控制項: Microsoft.VisualStudio.TestTools.UITesting.UITestControl,例如 T:Microsoft.VisualStudio.TestTools.UITesting.HtmlControls.HtmlList 或 T:Microsoft.VisualStudio.TestTools.UITesting.WinControls.WinComboBox,您可以直接取得或設定它們的屬性值,如下所示:
int i = myHtmlList.ItemCount; myWinCheckBox.Checked = true;
若要取得 UI 測試控制項的屬性
若要取得控制項的屬性值,請使用 GetProperty。
若要指定所要取得的控制項屬性,請以每個控制項之 PropertyNames 類別中的適當字串做為 GetProperty 的參數。
GetProperty 傳回適當的資料類型,但這個傳回值轉換成 Object。 接著必須轉換傳回 Object 為適當的型別。
範例:
int i = (int)GetProperty(myHtmlList.PropertyNames.ItemCount);
若要設定 UI 測試控制項的屬性
若要設定控制項中的屬性,請使用 SetProperty。
若要指定所要設定的控制項屬性,請以 PropertyNames 類別中的適當字串做為 SetProperty 的第一個參數,並以屬性值做為第二個參數。
範例:
SetProperty(myWinCheckBox.PropertyNames.Checked, true);
偵錯
使用自動程式碼 UI 測試記錄,您可以分析自動程式碼 UI 測試。 自動程式碼 UI 測試或動作記錄檔篩選條件和有關您的自動程式碼 UI 測試回合的記錄重要資訊。 記錄檔的格式可讓您快速偵錯問題。 如需詳細資訊,請參閱使用自動程式碼 UI 測試記錄分析自動程式碼 UI 測試。
下一個是什麼?
執行自動程式碼 UI 測試其他選項: 在這個主題可以直接從 Visual Studio 執行自動程式碼 UI 測試,如所述。 此外,您可以執行自動化 UI 測試從 Microsoft Test Manager,或從 Team Foundation Build。 當自動程式碼 UI 測試會自動執行時,必須與桌面互動的自動化測試,當您執行這些測試時,不同於其他自動化測試。
加入對自訂控制項: 自動程式碼 UI 測試架構不支援每個可能的 UI,而且可能不支援您要測試的 UI。 例如,您無法立即為 Microsoft Excel 的 UI 建立自動程式碼 UI 測試。 不過,您可以建立自動程式碼 UI 測試架構的擴充功能,以支援自訂控制項。
自動程式碼 UI 測試通常用來自動化手動測試。 如需其他指引,請 要測試與 Visual Studio 2012 的連續傳遞–第 5 章:自動化系統測試參閱。 如需手動測試的詳細資訊,請參閱使用 Microsoft Test Manager 建立手動測試案例。 如需自動化系統測試的詳細資訊,請參閱 使用 Microsoft Test Manager 建立自動化測試。
外部資源
指引
測試以搭配使用 Visual Studio 2012RC–第 2 章:單元測試:內部測試
要測試與 Visual Studio 執行的傳遞– 2012 年第 5 章:自動化系統測試
常見問題集
論壇
Visual Studio UI 自動化測試 (包含 CodedUI)
請參閱
工作
參考
概念
升級 Visual Studio 2010 的自動程式碼 UI 測試