在前面幾篇文章網站測試自動化系統—基于Selenium和VSTT、資料驅動測試、在測試代碼中寫死測試資料裡,已經編寫了一部分測試用例的代碼了。我在文章自動化系統該有的功能裡,也提到了,自動化測試用例代碼應該能夠被系統自動執行起來。我們總不能要求測試人員每天下班之前把最新的測試代碼下載下傳到自己本機,用VSTS打開,然後選擇要批次執行的測試用例。這種重複機械的勞動是應該要被程式消滅的,畢竟機器的成本要比人工的成本低多了。
首先先分解一下執行測試用例的步驟,編碼實作每一個步驟,然後使用批處理的形式将工作流串起來:(當然啦,我們也可以使用.NET裡面的Workflow來實作,隻不過那樣的話我們需要格外添加一個指令—安裝.NET Framework 3.0。)
1. 安裝最新版本的産品,在這次測試過程中,由于開發團隊沒有使用什麼自動化每日編譯系統,所有的程式員都是從代碼伺服器下載下傳最新的代碼,在 Visual Studio裡面編寫調試網站。是以我們測試團隊也是直接下載下傳最新的代碼,使用Visual Studio編譯産品代碼 。
當然啦,在自動化測試系統裡面,不可能要求有一個專人按什麼“F5”之類的按鈕編譯整個網站的。幸好Visual Studio隻是一個內建開發環境(IDE),它編譯程式的實際工作是由MSBUILD這個程式完成的,Msbuild這個程式類似于Ant和Make等軟體。你隻要提供代碼的解決方案檔案(.sln檔案)或者項目檔案(.csproj檔案),Msbuild自己會根據項目之間的依賴關系編譯代碼。是以安裝最新版本産品的工作就被分解成:
1.1 下載下傳最新的源代碼,所有的檔案版本伺服器的用戶端程式都提供了這個功能。我們這個項目使用的是hg,這個指令擷取最新的代碼:
hg.exe update
1.2 編譯代碼:
Msbuild /nologo productcode.sln
1.3 釋出編譯好的網站,或者使用xcopy指令更新網站檔案夾,或者在IIS裡面将網站的根目錄直接指向産品代碼的檔案夾。
2. 下載下傳并且編譯最新的測試代碼,這個步驟跟第1步類似,是以就省略相關指令了。
3. 運作所有的自動化測試用例。VSTT提供了一個叫做用例清單(Test List)的功能,因為是SCRUM的第一個Spring,是以我們在工作時,将所有自動化好了的測試用例都歸檔到一個叫做Automation的用例清單(Test List)裡。
當自動化測試工程師在VSTT批量執行測試用例的時候,通常的步驟是通過執行下面這些步驟實作的:
a) 在VSTT裡面打開測試工程檔案。
b) 點選Visual studio菜單裡的“測試(Test)”—> “視窗(Windows)”—> “Test List Editor”。
c) 展開“Lists of Tests”,勾上“Automation”這個用例清單(Test List),這樣就選擇了所有自動化的測試用例。如下圖所示:
d) 最後點選Visual studio菜單裡的“測試(Test)”—> “運作(Run)”—> “Tests in Current Context”,就可以運作所有的用例了。
前面已經講到過,Visual Studio隻不過是一個內建開發環境,基本上所有界面上的操作都可以使用指令行工具完成,例如編譯程式可以使用msbuild.exe,調試程式可以使用mdbg.exe(當然Visual Studio的調試器是窗體程式,不是指令行程式),執行測試用例是通過Mstest.exe完成的。上面a,b,c,d四個步驟,可以使用下面這個指令實作:
mstest /runconfig:TestRunConfig.testrunconfig /testmetadata:Test.vsmdi /testlist:Automation /resultsfile: \TestResults\%SELENIUMHOST%_%ORCHARDSERVICE%_%1.trx
下表列出了上面的指令裡使用的參數的意義。
參數名 | 說明 |
Runconfig | 當你在Visual Studio裡建立了一個測試工程(Test Project),VS會自動在你的項目解決方案添加一個.testrunconfig檔案。這個檔案是用來配置執行一遍測試過程(Test Run)所需要準備的環境的。例如: l 測試用例是在本機執行,還是在其他機器上執行。 l 要拷貝的測試資料。 l 在所有測試用例執行前後要運作的指令—用來準備測試環境。 l 是否要進行代碼覆寫率統計。 l 等等。 使用.testrunconfig的過程我會在後面講到。 |
Testmetadata | VS除了添加一個.testurnconfig檔案以外,它還會添加一個叫做測試用例中繼資料(test meta data)的.vsmdi檔案。這個檔案嘛,就像是所有中繼資料所标榜的那樣,用來描述測試用例的資訊。例如測試用例屬于哪一個用例清單(test list)啦,測試用例的負責人(Owner)是誰啦等等。 .vsmdi檔案的詳細資訊我也會在後面的文章中講解。 |
testlist | 用例清單,通過這個參數,可以指定要執行的測試用例清單,用例清單是一個樹形結構,即用例清單可以包含其他用例清單,具體的示例請看上圖。 |
resultsfile | 測試用例執行完畢以後,測試結果檔案儲存的位置。 |
備注:mstest.exe的其他參數請參考MSDN文檔:
http://msdn.microsoft.com/zh-cn/library/ms182489%28VS.80%29.aspx