|
回顧
最近比較忙,距離上次更新的時(shí)間較久,見諒。
在本章上部分,介紹了“添加用戶”窗口的測試代碼編寫。想必大家也看到了,在UIMap.cs文件中實(shí)現(xiàn)自定義編碼是一件很輕松的事情,接下來將介紹下個部分,查詢用戶窗體的測試代碼的編寫,以及他們測試的關(guān)聯(lián)。
示例程序介紹
系統(tǒng)主窗口:(下載點(diǎn)我)
該系統(tǒng)擁有兩個功能,“添加用戶”和“查詢用戶”:
點(diǎn)擊添加用戶后,進(jìn)入添加用戶子窗體:(“添加用戶”窗口的測試代碼編寫在上部分已經(jīng)實(shí)現(xiàn))
如果在之前的主窗口,點(diǎn)擊查詢用戶,則進(jìn)入查詢用戶子窗體:
注:系統(tǒng)默認(rèn)自帶了5個用戶TestUser1, TestUser2, TestUser3, TestUser4, TestUser5。
這個窗體不會彈任何提示框,默認(rèn)進(jìn)入窗體時(shí),DataGridView里面沒有加載數(shù)據(jù),現(xiàn)在進(jìn)行一個說明:
查詢條件-用戶名:表示是否按用戶名查詢(非模糊查詢),如果不輸入,默認(rèn)為不按其查詢。
查詢條件-用戶類型:有三個選項(xiàng)“所有”,“管理員”,“一般用戶”。
查詢條件-日期:表示是否按日期查詢,如果勾上了日期CheckBox,則旁邊的DateTimePicker會啟用,然后選擇一個具體的日期。
按鈕-查詢:就會按以上條件查詢。
按鈕-重置:用戶名清空,用戶類型變成所有,日期取消勾選。
文本框-用戶備注:當(dāng)查詢出數(shù)據(jù)以后,每選擇DataGridView里面中的一行數(shù)據(jù),用戶備注TextBox會自動加載當(dāng)前行的用戶備注。
如何設(shè)計(jì)測試
現(xiàn)在需要明確的就是,我們既需要檢查“查詢用戶”窗口的基本功能,又需要確定之前在“添加用戶”窗口添加的用戶是否被添加了進(jìn)來,所以這里的檢查尤其重要,根據(jù)剛才的功能描述,現(xiàn)在需要編寫測試設(shè)計(jì)。(在看下面的設(shè)計(jì)之前大家可以先試著自己設(shè)計(jì)下) 。
自動化測試,關(guān)鍵不在技術(shù),而是在測試設(shè)計(jì)上,所以這里需要設(shè)計(jì)得比較全面:
步驟序號 | 操作步驟 | 檢查點(diǎn) |
1 | 在主窗口菜單點(diǎn)擊用戶查詢 | 檢測查詢用戶子窗口是否彈出 |
2 | 用戶名為空,用戶類型為“所有”,不勾選時(shí)間,點(diǎn)擊查詢,記錄查詢出的用戶行數(shù),程序默認(rèn)選中第一行,這時(shí)我們選中第二行 | 檢測“用戶備注”一列的值是否和下方的“用戶備注”文本框的值一致 |
3 | 加的用戶,其他條件不變,點(diǎn)擊查詢(例如,在上個部分的示例中,我們使用的是”TestUser6”) | 查詢出用戶名為TestUser6的一條數(shù)據(jù) |
4 | 用戶名為一個不存在的用戶“testuser100”,其他條件不變,點(diǎn)擊查詢 | 未查詢出數(shù)據(jù) |
5 | 將用戶名設(shè)置為空,其他條件不變,用戶類型為“管理員”,記錄查詢出的行數(shù) | 查詢出所有為“管理員”的用戶(注,為了方便,這里沒有使用從數(shù)據(jù)庫比對,而只使用查詢條件與查詢出的數(shù)據(jù)比對,實(shí)際項(xiàng)目中可能使用數(shù)據(jù)庫比對) |
6 | 將用戶類型設(shè)置為“一般用戶”,其他條件不變,記錄查詢出的行數(shù) | 查詢出所有為“一般用戶”的用戶 |
7 | 使用剛才用戶類型分別為“所有”,“管理員”,“一般用戶”查詢出的數(shù)據(jù)行數(shù),進(jìn)行比對 | 一般用戶行數(shù)+管理員用戶行數(shù)=所有用戶行數(shù) |
8 | 用戶名為空,用戶類型為“所有”,勾選時(shí)間,并進(jìn)行選擇“2008-1-11” | 查詢出所有添加時(shí)間為“2008-1-11”的用戶 |
9 | 將條件設(shè)置為剛才我們在添加用戶窗口添加的用戶信息(使用我們在上一個示例中使用的值,如”TestUser6”,”一般用戶”,時(shí)間為添加時(shí)間,時(shí)間這個需要用到某個變量來記錄) | 查詢出對應(yīng)的一條數(shù)據(jù) |
10 | 點(diǎn)擊重置按鈕 | 用戶名為空,用戶類型為“所有”,不勾選時(shí)間 |
11 | 點(diǎn)擊退出 | 退出窗口 |
接下來將以上的檢查點(diǎn)轉(zhuǎn)換為代碼。
對測試進(jìn)行編碼
我們可以接著上次錄制的代碼來編寫,因?yàn)樵?a >上個部分對于某些編寫方式(例如先捕獲對象再編寫和先錄制再轉(zhuǎn)移修改的方式)已經(jīng)描述得很詳細(xì)了,下面默認(rèn)使用這些方式,因此就不一一闡述對象的捕捉過程了。這里只介紹上個部分沒有介紹的注意點(diǎn)和和給出主要代碼。
由于是接著上個部分的代碼寫,這里需要注釋掉AddUserUIMap.cs中Step7_CloseWindows的兩句代碼,以免他在測試結(jié)束后將主窗口關(guān)閉掉:
public void Step7_CloseWindows()
{
//操作步驟
bool isClosed;
Mouse.Click(this.UI添加用戶Window.UI取消Window.UI取消Button, new Point(1, 1));
//和WaitForControlExist相反,這里是最長等待他3秒關(guān)閉,如果3秒內(nèi)關(guān)閉返回true,否則為false
isClosed= this.UI添加用戶Window.WaitForControlNotExist(3000);
// 這里添上了注釋,以免將主窗口關(guān)閉掉
// Mouse.Click(this.UI系統(tǒng)主窗口Window.UI系統(tǒng)主窗口TitleBar.UICloseButton, new Point(1, 1));
// isClosed &= this.UI系統(tǒng)主窗口Window.WaitForControlNotExist(3000);
//檢查點(diǎn)
Assert.IsTrue(isClosed, "點(diǎn)擊退出,檢測是否退出添加用戶子窗體和主窗體失敗");
}
NET技術(shù):VS2010 測試功能之旅:編碼的UI測試(4)-通過編寫測試代碼的方式建立UI測試(下),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。