Visual Studio 2013 在軟體測試上的強化

微軟MVP – 王寧疆

註: 內文提及Visual Studio Ultimate已於 2015/3月改名為 Visual Studio Enterprise

註: 內文提及Visual Studio Online已於 2015/11月改名為 Visual Studio Team Services

摘要

軟體測試是提升系統品質的不二法門,善用應用程式開發工具提供的軟體測試支援,就可以更經濟的代價獲得更佳的軟體品質。在這篇文章中我們將要為大家介紹Microsoft Visual Studio 2013在支援軟體測試方面的新功能,包括:更便捷的測試管理工具、單元測試與自動程式碼UI測試的改良、支援更全面的測試管理功能的 Test Manager、以及利用Visual Studio Online雲端服務執行網站負載測試等。

更便捷的測試管理工具

Visual Studio 2013支援系統開發團隊利用隨手可以取得的瀏覽器進行測試計畫與測試案例的維護與管理,協助團隊隨時關注所開發的系統品質。開發團隊可以在連接至 Team Foundation Server 的Team專案之後,點選[Team Explorer]視窗上方的[Web入口網站連結,如圖1所示:

圖1:開啟專案的Web入口網站的連結


 

開啟專案的Web入口網站之後,點選文字為[其他]的按鍵,再點選其中的[測試案例]功能,就可以利用網頁提供的功能建立測試案例,如圖2所示:

 圖2:利用專案的Web入口網站建立測試案例的畫面

 

 開發團隊不僅能夠利用專案的Web入口網站建立測試案例,也可以為測試案例加入附件,插入共用步驟,以及設定測試步驟的參數資料。您可以直接利用圖2畫面提供的功能建立測試案例,再於編輯測試案例時點選工具列的[附件]按鈕,為所建立的測試案例加入附件。圖3所示即為利用專案的Web入口網站建立測試案例時利用工具列的[附件]按鈕為測試案例加入附件的畫面:

 圖3:利用工具列的[附件]按鈕為測試案例加入附件的畫面

 

  [ 提示]   開發團隊不僅可以利用專案的Web入口網站建立、管理、和執行測試案例,利用共用的步驟建立測試案例,附予測試案例參數,利用專案的Web入口網站直接執行測試案例,在執行測試中修改測試案例的內容,也可以對於遠端裝置執行的Windows巿集應用程式進行測試,並檢視測試的結果,或是於建立Team Foundation Server的組建定義的時候設定組建專案時要自動執行測試Windows巿集應用程式的動作。除此之外,也支援對於遠端裝置執行的Windows巿集應用程式進行手動測試和探勘測試。

 

單元測試與自動程式碼UI測試的改良

 

在支援單元測試方面,Visual Studio 2013支援對Windows巿集應用程式進行單元測試,以及於自動組建定義設定對專案執行自動組建時執行指定的Windows巿集應用程式的單元測試。

Visual Studio 2013 支援搭配 Team Foundation Server 2013 執行單元測試的程式設計師於原始碼程式編輯視窗檢視單元測試的相關資訊,不需要離開原始碼編輯視窗,包括單元測試結果、原始程式碼變更記錄、和程式碼參考等等資訊的CodeLens功能。圖4所示即為於原始程式碼編輯視窗檢視名稱為 Average的方法的程式碼變更與單元測試的相關資訊: 

圖4:利用 CodeLens 功能檢視方法的變更與單元測試相關資訊的畫面

 

 

        您可以點選CodeLens功能顯示的程式碼變更資訊,再使用滑鼠右鍵點選欲檢視的變更集,執行[檢視變更集n的差異]功能(其中的n為變更集的編號),檢視變更集的變更內容,您就會看到如圖5所示的畫面,明列所檢視的變更集的變更內容: 

圖5:檢視變更集差異的畫面

 

 請注意利用[檢視變更集差異]功能檢視程式碼的變更時,有變更的原始程式碼會以不同的色彩標示,方便比對與檢視。

您可以視需要使用滑鼠右鍵點選[測試總管]視窗中顯示的單元測試案例,從出現的功能表選擇[加入至播放清單 | 新增播放清單]功能,將單元測試案例建立成容易管理的播放清單進行管理,也可以利用[測試總管]視窗的搜尋功能對測試案例進行搜尋,或是利用[測試總管]視窗的工具列中的[群組依據]功能,將單元測試案例分類管理,如圖6所示:

圖6:將單元測試案例分類管理的做法

 

 

        在自動程式碼UI測試方面,新增支援對以 XAML文件為基礎的Windows巿集應用程式進行使用者介面相關的測試,也支援測試使用者對Windows巿集應用程式進行的觸控與手勢操作。

         要對Windows巿集應用程式進行自動程式碼UI測試,請先啟動 Visual Studio 2013建立欲測試的Windows巿集應用程式,然後執行[檔案 | 加入 | 新增專案]功能,然後選擇[Visual C# | Windows巿集]項目,再選擇[自動程式碼UI測試專案(Windows巿集應用程式)]型態的專案,表示要加入能夠對Windows巿集應用程式進行自動程式碼UI測試的專案,如圖7所示:

 圖7:加入能夠對Windows巿集應用程式進行自動程式碼UI測試的專案

 

 

        執行為方案加入[自動程式碼UI測試專案(Windows巿集應用程式)]型態的專案的動作之後,您將會看到如圖7的畫面,詢問欲建立的自動程式碼UI測試的類型,如圖8所示:

 圖8:選擇欲建立的自動程式碼UI測試的類型的畫面

 

         請點選其中的[編輯UI對應或加入判斷提示]項目之後按下[確定]鍵,螢幕的右下角就會出現自動程式碼UI測試的工具列,協助開發團隊對Windows巿集應用程式進行使用者介面相關的測試,如圖9所示:

 圖9:對Windows巿集應用程式進行使用者介面相關的測試的畫面

 

 

[ 注意]  Visual Studio 2013只有安裝在Windows 8.1才支援對Windows巿集應用程式進行自動程式碼UI測試。

[ 提示]  開發團隊可以視需要加裝 Selenium components for Coded UI Cross Browser Testing套件,透過Selenium Web驅動程式的幫助,允許開發團隊利用IE瀏覽器錄製自動程式碼UI測試的內容,再於其他的瀏覽器執行錄製妥的自動程式碼UI測試,並驗証測試結果的正確性。Selenium components for Coded UI Cross Browser Testing套件支援包括Internet Explorer 9、Internet Explorer 10、Firefox 15或更高版本、以及Chrome 21或更高版本的瀏覽器。

除此之外,Visual Studio 2013支援透過設定搜尋屬性的方式,在執行自動程式碼UI測試時,依據所設定的屬性內容值搜尋自動程式碼UI測試檢測的目標,提升自動程式碼UI測試的實用性。

 

支援更全面的測試管理功能 - Microsoft Test Manager

 

新版本的Test Manager和專案的Web入口網站一樣,都支援建立測試計畫,管理測試套件,利用共享步驟和參數撰寫測試案例,執行測試案例,在測試進行中編輯測試案例的內容等等。支援建立與管理以下三種測試套件,支援開發團隊執行更有效率,更切合專案需求的測試工作:

1. Static test suite(靜態測試套件):靜態測試套可以包含測試案例和其他的測試套件。請注意最上層的測試套件必須是靜態測試套件。

2. Requirements-based suite(以需求為基礎的測試套件):以需求為基礎的套件支援從產品待處理項目(Product Backlog Item)、使用者本文(User Stories)、或是其他的需求文件建立測試套件。以需求為基礎的測試套件包含的所有測試案例都會連結至其所對應的需求文件,可以協助開發團隊追蹤系統所有的功能需求是否都已經測試完成。

3. Query-based suite(以查詢為基礎的測試套件):支援利用查詢敘述建立的測試套件。例如程式開發團隊可以在建立測試套件的查詢敘述中指定要將所有[優先權]屬性內容值為1的測試案例建立成測試套件。

 

啟動Test Manager 連上 Team Foundation Server的Team專案,建立新的測試計畫或是選擇現有的測試計畫之後,就可以看到Test Manager的執行畫面,您可以利用[新增]下拉式按鍵提供的[套件]功能建立靜態測試套件,利用[新增]下拉式按鍵提供的[查詢式套件]功能建立以查詢為基礎的測試套件,或是按下[加入需求]鍵建立以需求為基礎的測試套件。例如圖10所示即為建立以查詢為基礎的測試套件的畫面:

 圖10:建立以查詢為基礎的測試套件的畫面

 

         您只要於查詢條件的編輯畫面指定查詢測試案例的條件,查詢欲加入測試套件的測試案例,再按下[建立測試套件]鍵,就可以很輕易地將需要的測試案例加入到測試套件中。

         Test Manager和專案的Web入口網站一樣都支援程式開發團隊建立測試計畫、管理測試套件、建立和編輯測試案例,建立共用步驟、指定參數、執行測試案例、並在測試案例執行時編輯測試案例的內容。

 

利用 Visual Studio Team Services (原名Visual Studio Online) 在雲端執行網站負載測試

 Visual Studio Team Services 雲端服務最新支援開發團隊利用Windows Azure提供的大量運算資源,在極短的時間內,模擬數以千計的使用者對開發團隊開發的網站進行負載測試,節省開發團隊花費在建置負載測試環境或虛擬實驗室的金錢投資與時間成本,協助開發團隊以最經濟及最有效率的方式發掘網站執行的效能瓶頸。

 欲利用 Visual Studio Team Services提供的最新雲端負載測試服務,首先必須使用Visual Studio Enterprise ( 原名Visual Studio Ultimate) 建立[Web效能和負載測試專案]型態的專案,於專案中建立妥[Web效能測試],再利用建立妥的[Web效能測試]建立[負載測試]的內容。建立好[負載測試]的內容之後,請使用滑鼠的左鍵連按專案中名稱為[Solution Items]的資料夾中,名稱為[Local.testsettings]的設定檔兩下,開啟如圖11所示的測試設定畫面:

 圖11:設定測試內容的畫面

 

 

        您可以點選[一般]項目提供的[測試回合位置]選項中的[使用Visual Studio Visual Studio Team Services執行測試]項目,表示要利用Visual Studio Team Services雲端服務提供的雲端負載測試功能,對所開發的網站進行負載測試。

         選妥之後按下[關閉]鍵,記得儲存所做的設定。回到Visual Studio的[負載測試]的編輯畫面。在利用Visual Studio Team Services提供的雲端負載測試功能對網站進行負載測試之前,請先開啟瀏覽器並連結到https://tfs.visualstudio.com,點選右上角的[Sign up for free]建立一個使用帳號,如果已有Visual Studio Team Services的使用帳號則可以省略這個動作。

         建立好Visual Studio Team Services的使用帳號後請執行[檢視 | Team Explorer]功能,開啟[Team Explorer]視窗,點選[Team Explorer]視窗工具列中的[連接到Team專案]的按鈕,再點選[新增]連結,執行新增Team專案的動作,或是點選[選取Team專案]連結連接到現有的Team專案。做好之後請點選編輯妥的負載測試上方工具列的[執行負載測試]按鈕,就可執行負載測試的動作。執行完畢後您將會看到如圖12的畫面:

 圖12:雲端負載測試執行完畢的畫面

 

 

        您可以檢視畫面顯示的網站效能數據,點選圖8畫面[Throughput]按鍵檢視負載測試中錯誤發生的頻率和網站每秒處理的Request數量(RPS),或是點選[View status messages2]連結檢視雲端負載測試的詳細內容。圖13顯示的內容即為點選[View status messages]連結檢視雲端負載測試的詳細內容的畫面:

 圖13:檢視雲端負載測試的詳細內容的畫面

 

 

        您可以從圖13畫面顯示的資訊看到此次的負載測試消耗掉多少virtual-user minutes(虛擬使用者-分鐘),本月尚餘多少virtual-user minutes可供執行雲端負載測試使用。請注意每個Visual Studio Online的帳號一個月有15000 virtual-user minutes的用量限制,換句話說如果要模擬250個虛擬使用者對網站進行雲端負載測試,則最多只能測試60分鐘。若超過則可以在線上進行購買,付費機制是與 Windows Azure相同,詳細可參考這裏

 回到顯示負載測試效能資訊的畫面。請按下畫面中的[Download report]連結,下載負載測試的報表,待報表下載完成後請按下[View report]連結,檢視負載測試的結果報表,您將會看到和使用Visual Studio Ultimate內建的負載測試功能得到的相同報表,如圖14所示:

 圖14:負載測試的結果報表

 

         當您使用 Visual Studio Ultimate 2013開啟[Web效能和負載測試專案]型態的專案時,可以利用[負載測試 | Load Test Manager]功能,開啟[負載測試管理員]視窗,管理所有的負載測試,如圖15所示:

 圖15:利用[負載測試管理員]視窗管理負載測試的畫面

 

 

        您可以利用選取左方的項目選擇欲管理的負載測試,或是利用右上方的[狀態]、[全部]、[日期]、[過去7天]、[依據]、或[全部]連結,依據負載測試的狀態、日期、或執行者篩選欲管理的負載測試報表。

  [ 提示]  利用Visual Studio Team Services對所開發的網站進行雲端負載測試和利用Visual Studio Enterprise內建的負載測試功能對網站進行負載測試的差別在於執行雲端測試能夠更真實地模擬外界的使用者瀏覽網站的場景,有助於更精確地了解網站被外界的使用者瀏覽時的效能實際表現。但是雲端負載測試比Visual Studio Enterprise提供的內建負載測試多了一些限制,例如一次只能執行一個負載測試,而且負載測試的內容不能包含[自動程式碼UI測試]。

 

[線上功能展示影片]