在前面的文章網站測試自動化系統—基于Selenium和VSTT當中,我簡單介紹了使用selenium錄制測試步驟,以及優化生成的C#代碼,對代碼使用面向對象的編程理念進行一些封裝,以便規避網站界面更動對測試代碼所帶來的風險。
在網站測試當中(甚至是桌面程序的功能測試),很多情況下,測試步驟是不變,變化的僅僅是測試數據而已。比如說,為了測試網站是否支持國際化,一個正常登錄成功的測試,你可能會使用英文的用戶名;也可能會使用中文的用戶名;甚至還會使用包含一些合法的特殊字符串的用戶名。這三個測試用例的操作步驟都是一樣,都是輸入用戶名和密碼,然后點擊登錄按鈕,唯一不同的就是用戶名和其密碼。又比如,為了執行SQL注入或者腳本注入安全性測試,你可能會設計一個針對用戶提交評論的通用測試步驟,然而用戶評論的內容(包括SQL注入語句或者腳本注入語句)是變化的。 這些測試場景,都可以使用 數據驅動測試來避免重復創建雷同的測試用例,而且數據驅動也給我們提供了很大的彈性,這是因為如果在后續測試過程中發現有些特殊數據被遺漏了,只要更新數據文件就可以了。
VSTT自帶了數據驅動測試功能,網上已經有很多文章介紹使用VSTT執行數據驅動的方法了,這里我就不詳細說了,如果你不熟悉這個方法的話,請參考MSDN的這篇文章:
http://msdn.microsoft.com/zh-cn/library/ms182527%28VS.80%29.aspx
你可以使用很多數據源來保存數據驅動所需的測試數據,例如access數據庫、其他關系型數據庫(只要你能提供合法的數據庫連接字符串)、csv文件以及Excel文件。
我們在本次測試過程中,采用的是Excel數據源,原因是因為:
1. Excel文件相對于其他數據庫來說,更廉價一些,畢竟Excel相對于Access以及其他關系型數據庫來說,更便宜(并且易用)一些。
2. Excel文件和csv文件都可以使用Excel來編輯,然而之所以選擇Excel文件是因為一個Excel文件可以包括多個工作簿(Worksheet),這個功能方便我們管理測試數據,原因在下文中介紹到。
3. 但是如果你使用Office 2007的話,需要注意,Visual Studio Team Test 2008只支持Excel 2003的格式,因此你在保存文件的時候,千萬要保存為Excel 2003的格式,否則VSTT會告訴你它無法訪問測試數據源。
為了讓例子簡單一些,我們還是采用上一篇提到的登錄測試的用例,下面是已經改進過的代碼:
[TestClass] public class UsersTest { [TestMethod] public void LogOnTest() { var username = "donjuan"; var password = "它是個秘密"; TestLibrary.UserHelper.LogOn(username, password);
Assert.IsTrue(selenium.IsTextPresented(...)); } } |
在上面的代碼中,我們已經注意到,username和password是可以變化的測試數據,而LogOn所封裝的測試步驟是不會更改的,因此,創建一個Excel 2003的文件用來保存LogOnTest所需的測試數據。這個Excel 2003的文件名就叫UsersTest.xls,在文件中創建一個名為LogOnTest的工作簿(worksheet),LogOnTest工作簿里面有兩列,一個叫username, 另一列是password,如下圖所示:
原文轉自:http://www.anti-gravitydesign.com