|
回顧
在之前的入門篇系列中,分別介紹了一個簡單的示例, 操作動作的錄制原理,通過修改UIMap.UItest文件控制操作動作代碼的生成,對象的識別原理。接下來正式進入我們UI測試的進階篇,在這一章,將講述如何初步通過自己編寫代碼的方式來建立UI測試。
示例程序
一個系統的基本功能是增,刪,改,查,其中增和改界面基本一樣,刪就幾乎是一個按鈕的事,所以我做了一個程序示例(下載點我),擁有增和查兩個功能,之后的操作都將會在這個示例之上進行:
系統主窗口:
該系統擁有兩個功能,“添加用戶”和“查詢用戶”,點擊添加用戶后,進入添加用戶子窗體:
這里添加用戶的時候根據情況會出現以下幾個提示框:
“用戶名不能為空”
“已有重名用戶”
“備注不能為空”
“添加成功!”
如果在之前的主窗口,點擊查詢用戶,則進入查詢用戶子窗體。
注:系統默認自帶了5個用戶TestUser1, TestUser2, TestUser3, TestUser4, TestUser5。
這個窗體不會彈任何提示框,默認進入窗體時,DataGridView里面沒有加載數據,現在進行一個說明:
查詢條件-用戶名:表示是否按用戶名查詢(非模糊查詢),如果不輸入,默認為不按其查詢。
查詢條件-用戶類型:有三個選項“所有”,“管理員”,“一般用戶”。
查詢條件-日期:表示是否按日期查詢,如果勾上了日期CheckBox,則旁邊的DateTimePicker會啟用,然后選擇一個具體的日期。
按鈕-查詢:就會按以上條件查詢。
按鈕-重置:用戶名清空,用戶類型變成所有,日期取消勾選。
文本框-用戶備注:當查詢出數據以后,每選擇DataGridView里面中的一行數據,用戶備注TextBox會自動加載當前行的用戶備注。
因為篇幅的關系,這里仍然分為上下兩部分,上部分介紹添加用戶窗體,下部分介紹查詢用戶窗體和測試之間的銜接。
如何設計測試
首先從前面的分析中,就可以得出添加用戶實際上是檢測是否有那些反例的彈出框彈出,然后正確添加用戶,這里設計了一些檢查點。
步驟序號 | 操作步驟 | 檢查點 |
1 | 運行主程序exe | 檢測系統主窗口是否彈出 |
2 | 點擊添加用戶 | 檢測添加用戶子窗口是否彈出 |
3 | 輸入用戶名為空,用戶類型選擇“一般用戶”,備注為空 | 檢測是否彈出“用戶名不能為空” |
4 | 輸入用戶名為“TestUser1”(系統默認就已有該用戶),用戶類型選擇“一般用戶”,備注為空 | 檢測是否彈出“已有重名用戶” |
5 | 輸入用戶名為“TestUser6”,用戶類型選擇“一般用戶”,備注為空 | 檢測是否彈出“備注不能為空” |
6 | 輸入用戶名為“TestUser6”,用戶類型選擇“一般用戶”,備注為“Test” | 檢測是否彈出“添加成功!” |
7 | 點擊取消按鈕,并退出主窗體 | 檢測是否退出添加用戶子窗體和主窗體 |
接下來要做的工作就很輕松,我們要將以上的檢查點轉換為代碼。
對測試進行編碼
實際上,很多自動化測試項目在編寫的時候都是采用邊錄制邊編寫的方法來進行的,比如復雜的操作可以先錄制下來,然后手工去改某些步驟,這里我們將采用這種方法。
我們需要新建一個項目,然后在添加一個編碼的UI測試映射,命名為AddUserUIMap.uitest,建立之后,錄制生成器會自動彈出,這個時候,我們什么也不做,直接點擊“生成代碼”,這樣VS2010就會自動生成AddUserUIMap.cs文件和AddUserUIMap.Designer.cs文件,在第二章(下)已經提到,自定義代碼可以編寫到.cs文件下,因為這里不會被覆蓋。
實現步驟1
為了實現第一步檢查點,首先我們需要捕獲主窗體對象,首先我們需要打開示例程序,然后點擊錄制生成器的準星。
從點擊準星的那一刻起,按住鼠標不放,將鼠標挪動到主窗體直到主窗體被藍色框選中,這個時候便可以松開鼠標。
之后我們可以看到對象庫中識別了該對象,現在點擊對象庫上面的“添加”圖標,就可以將這個對象正式加入對象庫:
然后選擇錄制生成器的生成代碼。
之后對象識別代碼就生成在了AddUserUIMap.Designer.cs。
之后我們就可以進入AddUserUIMap.cs(注,這里是.cs,不是.Designer.cs),實現我們第一個步驟的代碼Step1_LoginSystem()。
public void Step1_LoginSystem()
{
//操作步驟:假設程序在D盤,這句的作用是加載程序
ApplicationUnderTest.Launch(@"D:/TestDemo.exe");
//檢查點:this.UI系統主窗口Window.WaitForControlExist(6000)的作用為,最多花6秒的時間等待UI系統主窗口Window出現,如果沒有出現,返回false,如果出現了,則返回true
Assert.IsTrue(this.UI系統主窗口Window.WaitForControlExist(6000), "運行主程序exe,檢測系統主窗口彈出失敗");
}
NET技術:VS2010 測試功能之旅:編碼的UI測試(4)-通過編寫測試代碼的方式建立UI測試(上),轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。