應用微軟虛擬化技術構建高效開發與測試環境

發表于:2012-01-29來源:未知作者:徐磊點擊數: 標簽:
應用微軟虛擬化技術構建高效開發與測試環境在中國的文化中,制衡之道往往是諸多治國明君都必須掌握的策略,不論是太平盛世也好,車馬亂世也罷,如果希望能夠延續自己統治,管理好一個國家,一座城池乃至一個村鎮,都離不開制衡;其原因在于我們永遠生活在矛盾

應用微軟虛擬化技術構建高效開發測試環境

  在中國的文化中,制衡之道往往是諸多治國明君都必須掌握的策略,不論是太平盛世也好,車馬亂世也罷,如果希望能夠延續自己統治,管理好一個國家,一座城池乃至一個村鎮,都離不開制衡;其原因在于我們永遠生活在矛盾之中,那么生存的守則就是要平衡這些矛盾,這就是制衡之道。紀曉嵐誠然是好官,但是沒有和珅幫襯,很多事情乾隆也一樣做不到。制衡之道中最關鍵的一點是如何能夠引導矛盾雙方的沖突為我所用,在總體上獲得好的結果。

  項目管理也是一樣,不同角色之間的劃分,往往就是希望形成最優化的分權制,以便在角色的沖突中將問題暴露,實現透明,最終改進和保證質量。任何的軟件開發團隊都離不開兩個基本角色:開發與測試。你可以沒有項目經理,可以沒有架構師,也可以沒有設計師;但是不能沒有開發,否則沒有人可以幫你實現產品;也不能沒有測試,否則沒有人可以決定你的產品是否能夠交付。這就好像你往杯子里面倒水必須要用眼睛看著,沒有眼睛反饋的信息,你永遠不知道何時該停下來,也不知道停在那里;我們不希望水太少,更不希望水溢出來。眼睛與手的反饋循環就是我們實現倒水這一動作高質量的必要系統,而開發和測試的有效循環就是我們實現高質量軟件的必須環節。

  但是開發和測試本身的角色的局限性造成了他們往往沒有辦法有效地形成循環,比如我們經常會聽到這樣的抱怨:

  測試:這個軟件需要的環境太復雜,沒有辦法為每種情況都創建測試環境;

  測試:我沒有辦法保證測試的一致性,因為環境在不停地變化,恢復到原來的狀態很麻煩;

  開發:你是怎么測出這個Bug的,我怎么沒法重現?測試:我忘記步驟了。

  其實這些問題都和測試人員本身的定位有關系,測試人員的首要目標是發現軟件中的問題,要做到這一點他們往往專注于軟件的反應而忽視了造成這種響應的原因,如:硬件軟件環境,系統配置情況,操作一致性等等;而這些正是開發人員修復Bug最需要的內容。但是測試人員不關心,或者沒有更多的精力來關心這些內容,造成了非常多的“不可重現”的Bug的出現。

  借助微軟的虛擬化技術平臺和工具,配合Team Foundation Server所提供的測試和實驗室管理器(Test and Lab Manager)功能,我們可以有效地協助測試人員來完成這些繁瑣的數據收集工作,從而改善測試與開發的交互能力,實現無縫的反饋循環,最終達到提高質量的目的。

  測試環境

  測試人員遇到的第一大難題就是環境的架設問題,沒有統一的環境,再好的測試人員和再好的測試用例也測不出正確的結果;測試環境必須滿足以下兩個條件才算好的環境:

  統一性:測試環境必須在不同測試迭代和不同測試人員之間保持統一,首先測試用例的設計應該是相互獨立的,可以獨立執行的,那么就需要每次啟動測試用例的運行之前,系統能維持在一個統一的狀態才能保證每次測試結果的可比性;如果是團隊開發,每個測試人員之間也同樣要保證這樣的可比性才能保證測試本身的質量,也就是測試結果的可信度。

  易用性:測試人員的工作核心永遠是執行測試用例,驗證產品的質量;為了能夠專注于這個核心,必須降低測試環境搭建的成本,特別是重復搭建的成本,這樣才能實現測試的高效率。

  以上兩個條件正是微軟實驗室管理平臺所解決的首要問題:

  圖1:微軟TFS實驗室管理平臺架構

  實驗室管理平臺通過集成Team Foundation Server和Hyper-V虛擬化平臺來實現,主要由以下3個模塊組成:

  測試用例管理模塊:這部分主要通過測試管理器(Microsoft Test Manager)來完成需求導入,測試計劃,測試用例設計以及測試環境的配置;其目的是實現應用生命周期管理中(ALM)的項目管理和測試管理的銜接。

  虛擬機管理模塊:這部分主要通過System CenterVirtual Machine Manager (SCVMM)來實現測試環境的搭建,以及狀態快照和回復的能力。

  TFS生成管理模塊:這部分主要是一個工作流引擎,通過Workflow Foundation 4.0的工作流引擎來驅動不同的操作;將以上模塊所提供的內容(也就是軟件產品本身)放入生產線進行生產,典型的流程包括:

  從源代碼管理器獲取特定版本的代碼

  編譯代碼,構建版本進行打包

  部署版本到測試環境

  測試代理執行測試用例

  恢復測試環境到基線狀態

  采集測試結果

  對測試環境進行快照

  部署版本到生產或者準生產環境

  解決統一性問題

  微軟虛擬化平臺的特點就是可以創建所需環境的模板,并根據模板自動復制環境。

  圖2:使用實驗室管理器創建新的測試環境模板定義

  圖3:配置測試環境

  圖4:激活自動化部署和測試執行能力,并根據需要啟用網絡隔離能力

  以上的測試自動執行能力和版本自動部署能力不言而喻,而對于測試最有意義的還是網絡隔離能力。

  網絡隔離能力對于測試環境的統一性非常重要,如果有多名測試人員執行統一產品版本的測試,我們希望每個測試人員所使用的環境都是一樣的,比如:服務器IP地址,名稱等等;但是這樣的系統部署在同一網絡中會造成沖突。通過網絡隔離我們讓多個測試人員在同樣的測試環境的副本上同時執行測試。

  自動化測試流程

  敏捷開發中非常重要的一個工程方法就是持續集成,簡單的理解就是自動化生成+自動化測試;普通的持續集成一般使用單元測試來作為自動化測試的單元,所以不存在恢復測試環境的問題(因為單元測試本身應該具備隔離性和獨立性)。但是如果我們希望將集成測試或者負載測試放入到持續集成中,那么環境的統一性就變得非常重要了。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97