加入RUN!PC粉絲團
最近新增的精選文章
 
最多人點閱的精選文章
 
 
精選文章 - 開發技術
分享到Plurk
分享到FaceBook
 
TFS 2012 實驗室管理(1)
文‧圖/胡百敬 2013/3/4 下午 03:18:54

  以往如何快速建立測試環境是個麻煩的課題,尤其為了相容性測試,其環境可能涵蓋多種作業系統、多國語言、不同版本的伺服器程式、前端程式、測試工具程式、測試資料、資料蒐集工具程式、獨立的環境…等,例如,繁、簡中文、日、韓、英…等國文字;搭配 Windows XP、Vista、Windows 7、Windows 8等使用者端、呼叫執行在 Windows Server 2003、2008、2008 R2、2012 等伺服器、啟動 AD 與否…等。各種環境需求如同矩陣相乘,有著成千上萬種組合。執行時還需隔絕於獨立網段,安全、不受干擾也不干擾其他系統。但測試過後即拋棄,因為環境已經髒亂。換句話說,每一次準備測是環境都曠日廢時。

  而在系統開發的過程中,還需整合原始碼控制、文管、自動化建置、部署與測試,可批次週期性執行,並提供扼要的報告與容易取得資訊的入口網站…等,這些流程是提升軟體開發品質的有效方式。但須儘量省掉人力與雜工,才能在提升軟題品質的同時,不致耗費太大的成本或流於形式。然而,因為整個流程的建置與控管不易,往往需要熟悉作業平台和工具程式的專家,以及大量的腳本語言串起各個環節,才能讓整個流程自動化。

  另一個麻煩事是:當測出缺失後,開發者要能重建缺失。但若開發者和測試者所用機器不同,軟硬體建置與設定殊異,不了解測試者的操作流程、測試資料以及待測程式的建置版本…等,不一定能重新產生相同的錯誤。最好有測試環境軟硬體規格、測試步驟的錄影、程式所觸發事件的細節、測試環境的快照…等,而這些資料要容易取得並可搭配原始碼交互參照,才好讓開發人員直接重建錯誤。

設定測試實驗室
  為解決上述問題,Visual Studio與Team Foundation Server從2010版開始,若使用「Visual Studio Ultimate」或「Test Professional」版本加上「Team Foundation Server」服務,可以透過以下方式設定測試實驗室:

■搭配Hyper-V的管理服務「SCVMM(System Center Virtual Machine Manager)」,以及執行 Hyper-V 的實體主機和虛擬機器;提供了豐富的測試實驗室管理(Lab Management)功能。包括從範本配置測試環境,虛擬環境安裝、部署、設定和移除,啟動、停止虛擬環境的執行、建立環境的快照(Snapshot)…等功能。以添加測試的整合能力,例如選擇一組虛擬機範本庫(Template Library)建置虛擬環境。
附帶說明,若是透過TFS要整合SCVMM,則所有相關的機器應都要加入Windows AD網域。而此部分的建置我們將於下篇專欄介紹。
  TFS 2012後提供「標準環境(Standard Environment) 」
■不整合SCVMM,團隊可使用已經建置的實體/虛擬機器,只需安裝Visual Studio提供的Test Controller和測試代理程式(Test Agent)即可。

實驗室管理的更新
  TFS 2012版本針對實驗室管理做了如下的更新:
■不再需要在受管理的虛擬機上安裝三種代理程式(2010版本需要分別安裝測試、建置和實驗室三種代理程式),現在只需要安裝測試代理程式(Test Agent)即可。
■不需針對測試實驗室使用的機器或虛擬機範本,逐機器手動安裝與設定測試代理程式,實驗室管理環境會自動安裝,以及後續安裝修補程式…等(但安裝Test Agent 時需要安裝.NET Framework 4.5,若虛擬機內尚未安裝.NET Framework 4.5以及C++相關的程式庫,也可以利用agents for visual studio 2012光碟自行安裝)。
■支援當下System Center Virtual Machine Manager最新的2012版本。
■在實驗室環境以實體或虛擬機建立「標準環境(Standard Environment) 」時,不需搭配System Center Virtual Machine Manager。可在標準環境中執行「建置-部署-測試(Build Deploy Test)」流程。
■當環境發生錯誤時,會較為聰明地嘗試自我修正。
[註] 然而在整個實驗室管理的安裝與應用中,若真要橫跨多台虛擬/實體機器,各種軟硬體設備,諸如:Active Directory、防火牆、網路設定、Windows Remote Management…加上各種帳號/權限設定。雖然實驗室環境會嘗試自我修復,但若你不熟網路與透過各種事件檢視器來找尋問題,安裝TFS/Visual Studio實驗室仍有些困難。

特徵
  換句話說,Visual Studio 2010/2012實驗室管理支援在多個不同的實體/虛擬環境中,各自安裝所需的平台與服務,擔任應用系統中特定的角色,並部署不同的應用程式和自動化測試。其特徵簡而言之有以下幾點:
■管理測試用的一組實體或虛擬機器,稱為「環境」,歸屬於團隊專案(Team Project)。
■開發者透過 TFS 的工作項目可以存取到測試者的環境。
■經由環境檢視器(Environment Viewer),可與實體/虛擬環境互動。
■在測試管理員可以定義測試計劃,測試套件(Suit)和測試案例,以及執行它們的實驗室環境。
■透過TFS的「組建」流程,可以自動化地建置、部署與測試。
■定義測試的環境設置,快速建立與準備虛擬機器。
■虛擬環境可以在多個主機間複製、共享。
■建立虛擬環境的快照或恢復到現有的快照。
■利用網路柵欄(Network fencing)機制,也就是封閉的虛擬網路提供多台虛擬機器相連,但與其他機器獨立的測試環境。
  上述最後四點需要搭配SCVMM。

額外需要的安裝軟體
  在使用TFS/Visual Studio的實驗室管理時,除了TFS和Visual Studio需要先安裝完畢外,額外需要的安裝軟體如下:
■Test Controller/Test Agent:設定 Lab Management以管理Test Agent執行測試
 若要發揮強大的虛擬機器管理,則須搭配SCVMM建立實驗室環境,其線上說明網址點此
■SCVMM:安裝 SCVMM 2012(本身在安裝時,要有大過 4G 的可用記憶體)前要先安裝
 ●適用於 Windows 7 的 Windows 自動化安裝套件 (AIK)
 ●SQL Server 2008 R2 Command Line Utilitie(從SQL Server 2008 R2 Feature Pack下載)
■若想安裝SCVMM 2012 SP1以完整使用Windows 2012提供的Hyper-V 3.0版之功能,至今尚未上市,當下只有Beta,需安裝在如下的作業系統:
 ●只能裝在 Windows 8 或 Windows Server 2012
 ●需要包含Windows PowerShell 3.0 的Windows Management Framework 3.0 – RC
 ●適用於 Windows 8 的 Windows 評定及部署套件

  本篇專欄僅是介紹如何使用TFS 2012的實驗室管理功能,完成建置「標準」與「SCVMM」兩種環境,並進行測試。但接下來實作的過程中,必須已經建置好Team Foundation Server 2012,並且建立了團隊專案(Team Project)與測試計畫(Test Plan),以及 Visual Studio 2012和SCVMM 2012。由於這一部分的建置與設定超過專欄範圍,須請你自行參考線上文件準備環境。

標準環境
  TFS 2012的測試實驗室環境功能新引進了「標準環境」功能,讓你較容易透過已經安裝好的實體機或虛擬機,建立「建置-部署-測試(Build Deploy Test) 」的環境與流程,而不需要搭配SCVMM。用來執行測試的實體機與虛擬機也不一定需要先安裝測試代理程式,若你未先安裝,TFS 2012的實驗室環境會自動透過Windows的遠端管理功能為你安裝。

  「標準環境」的好處是安裝簡單,但無法像整合SCVMM的環境可以完全掌控虛擬機的狀況,例如啟動、建立快照、停止…等。換句話說,標準環境缺乏了SCVMM控制虛擬機的能力,對機器的管理需要自己完成。

  接下來簡單說明設定標準環境的步驟:
■安裝和設定Visual Studio 2012 Test Controller和執行測試的機器
■建立標準環境
■建立測試計畫和測試案例
■執行測試案例
■透過LabDefaultTemplate建立建置定義

安裝和設定Visual Studio 2012 Test Controller以及 執行測試的機器
  取得「Visual Studio 2012 Agent」的光碟或iso檔案後,先透過「TestController」目錄下的安裝程式「vstf_testcontroller.exe」安裝Test Controller,使用的機器不需與TFS伺服器在同一台機器,若需要安裝.NET Framework 4.5,則會要重新啟動該機器。


▲ 圖1:安裝Visual Studio Test Controller 2012


  安裝完VS 2012 Test Controller後,自動叫起「設定測試控制器」工具程式。透過相關項目可以設定服務帳戶與Team Foundation Server上的「專案集合(Project Collection)」,Test Controller將會從這個專案集合取得執行測試所需的設定與程式。

建立標準環境
  接著在「Microsoft Test Manager」內的「實驗室中心」建立「標準環境」。開啟「Test Manager」後切到「實驗室中心」,在第一個「實驗室」頁籤中點選「新增」,進入「新增環境」畫面,於「輸入及命名步驟」可以點選上方的「標準環境」。如圖2所示:


▲ 圖2:透過「Microsoft Test Manager」的「實驗室中心」建立「標準環境」


  賦予標準環境「名稱」後,點選「下一步」按鈕或是直接點選左方的「電腦」頁籤,進入到「電腦」步驟,:


▲ 圖3:設定標準環境需要使用到的實體或虛擬機器


  點選上方的「加入電腦」按鈕,而後在新出現的電腦圖案下方輸入實體或虛擬機器名稱,並於下拉選單中選擇該機器的用途。圖3中我們選擇一台虛擬機。
[註] 由於我們的TFS環境本身也是安裝在虛擬機器上,且與要執行測試的虛擬機在不同的Hyper-V Host,故透過SCVMM Console呈現所選擇的虛擬機器。

  在下方的登入帳號需要輸入該電腦Administrator群組成員之「使用者名稱」和「密碼」。透過這個帳號,實驗室環境可自動幫你安裝測試代理程式。其後「電腦屬性」步驟可以不用輸入,接下來進入到「進階」步驟:


▲ 圖4:設定選用的測試控制器和在測試機上是否要使用執行UI測試


  若你為專案集合定義多個測試控制器,在「進階」步驟可以選用測試控制器。在「設定要執行UI測試的環境」可勾選測試機上是否要使用執行UI測試,若要執行UI測試就須設定測試代理程式以互動方式登入本機,才能操控待測程式使用者介面。因此,需要賦予可以互動登入測試機器的帳號。最後步驟進行「驗證」,若一切無誤可以點選「完成」。

  回到實驗室環境後將自動遠端安裝並設定測試代理程式,並重新啟動機器。在「Test Manager」的「實驗室中心」會呈現建置測試機器的進度(如圖5所示)
[註] 由於安裝Visual Studio 2012 Test Agent需要安裝.NET Framework 4.5,這會較為耗時且需要來回啟動。或許你可以先在目標機器自行安裝Visual Studio 2012 Test Agent。而後,實驗室環境依然會幫你安裝與設定Visual Studio 2012 Test Agent,但速度比較快。


▲ 圖5:實驗室中心會自動依照環境設定,遠端安裝與設定測試機器所需的測試代理程式


  準備好測試環境後,接著就可以建立測試計畫和測試案例,在此以我們先前專欄「自動程式碼UI測試(上)、(下)」所建置的.NET測試專案為範例,賦予測試案例並納入Test Manager的測試計畫。

建立測試計畫和測試案例
  以Visual Studio 2012開啟先前建立好的.NET自動程式碼UI測試專案,接著開啟「Team Explorer」視窗點選「工作項目」,在「工作項目」頁面上方的「新增工作項目」下拉選單選擇「測試案例」選項,如圖6所示:


▲ 圖6:新增執行自動程式碼UI測試的測試案例


  在「新增測試案例」畫面中先賦予測試案例名稱,接著於中間工作列切換到「關聯的自動化」頁籤,透過「…」按鈕可以選擇我們先前以「自動程式碼UI測試產生器」錄製,或直接撰寫程式建立的測試方法:


▲ 圖7:建立關連到自動化測試的測試案例


  選完測試方法後,確認該.NET測試專案原始碼有放到Team Foundation的原始檔控制,並建立自動化「組建」定義,透過Test Manager進行自動化測試需要有可執行的組建結果。由於原始檔控制和自動化組建需要很大的篇幅介紹,超過本篇專欄的範圍。就請你自行參照Team Foundation的線上說明完成這兩部分。
[註] 若對TFS 2012原始碼控制有興趣,可以參看先前的專欄:「TFS 2012對原始碼控制所做的強化」。

  利用組建定義成功執行組建流程後,才可以在測試計畫中指定使用該組建,此一部分請參看下文圖11的左下方設定。

  回到Test Manager在你已經建立好的測試計畫中加入該測試案例,如圖8所示:


▲ 圖8:將自動化測試案例加入到測試計畫中


  圖8簡單透過「套件」來管理圖7所建立的測試案例。於左方樹狀結構新增套件後,在右方點選「加入」按鈕,進入到圖8下方執行工作項目查詢(Work Item Query)之畫面。點選中間的「執行」按鈕,找到並選擇先前建立的測試案例,再按下方「加入測試案例」按鈕。

  接著回到原先「測試中心」的「計劃」頁面,點選上方的「屬性」頁籤,在中間右方的「自動化回合」內,於「測試設定」下拉選單選擇「新增」,畫面將呈現定義「測試設定」的步驟流程,如圖9所示:


▲ 圖9:新增適合執行自動程式碼UI測試的設定


  於「一般」步驟賦予「自動化回合」的「測試設定」名稱,接著點選「角色」步驟,由於我們先前只製作了含有「桌面用戶端」角色的測試環境,所以此處只有「桌面用戶端」一種選項。選完上方的桌面用戶端後,為了要執行自動程式碼UI測試,在「進階」.jpg'>「主機」步驟確定勾選「強制測試在32位元處理序中執行」。設定畫面如圖10所示:


▲ 圖10:設定要強制32位元處理序以執行自動程式碼UI測試


  其餘的步驟依照預設即可,你可以自行進入到「資料診斷」步驟,選擇執行測試時要同時收集的資訊,在此不多做說明。透過下方的「完成」按鈕建立執行測試時可選用的設定。

  回到屬性設定畫面後,在「測試設定」下方有「測試環境」,可以選擇先前圖2~5完成的「環境」。


▲ 圖11:選擇測試環境與組建


  最後,在圖11的左下方,需要選擇自動化測試所要採用團隊組建(Team Build)已經建置可用的「組建」。

執行測試案例
  完成了先前的設定後,切換到「測試中心」項目的「測試」頁面,可以滑鼠右鍵點選先前加入的測試案例,若選擇「以選項執行」,在執行前可先檢視所採用的設定,如圖12所示:


▲ 圖12:執行測試案例前先檢視或更改測試設定


  透過「執行選項」對話窗可以修改本次執行測試的相關設定,如使用中的組建、組建組態、測試設定、環境等。點選「執行」後,我們所建置的實驗室標準環境將遠端控制執行測試的機器,由測試代理程式從放置團隊組建產出的共享目錄下載執行檔,而後在測試機器上執行。由於是以互動方式執行測試,所以可從Windows桌面直接觀察測試代理程式的執行狀況,如圖13所示:


▲ 圖13:透過測試實驗室的標準環境遠端控制執行測試的機器


  請參看先前專欄「自動程式碼UI測試(上)、(下)」對Windows工具程式小算盤的操控,可了解如圖13所呈現Test Agent執行的測試內容。

  測試代理程式會將測試執行結果存回Team Foundation Server,待執行完畢後,可以從Test Manager的「測試中心」之「分析測試回合」頁籤,檢視歷來測試的結果,如圖14所示:


▲ 圖14:檢視歷來測試的執行紀錄


  滑鼠雙擊下方「附件」內的.trx檔,將會自動叫起Visual Studio檢視測試內容。若有錯誤,也會有錯誤訊息,並自動抓取執行畫面附在測試結果中。

  限於篇幅,TFS 2012實驗室管理所提供的「標準環境」介紹到此。在下期專欄中,將繼續說明如何透過團隊組建預設提供的「LabDefaultTemplate」組件範本,定義組建完成後自動在測試環境執行測試。

參考資料
介紹實驗室管理所提供的「標準環境」之blog