2011-06-15 201 views
11

我正在嘗試爲使用虛擬機環境的應用程序設置自動化測試。如何使用虛擬機進行自動化測試?

我想什麼都有點像以下情形:

  1. 構建服務器是自動觸發啓動一個自動化測試應用
  2. A「打造」的腳本,然後運行它包括:
    1. 複製應用程序文件和測試腳本由VM
    2. 啓動VM訪問的位置
      1. 在虛擬機中,一個特殊的應用程序查找共享文件夾,並開始測試腳本
      2. 測試腳本完成其工作,結果輸出到共享文件夾
      3. 測試腳本結束
      4. 特殊的應用程序,然後刪除測試腳本
      5. 特殊應用在某種程度上有VM管理器關閉虛擬機並恢復到以前的快照
    3. 當VM已經退出,處理結果發送到構建服務器。

我使用的TeamCity如果該事項。 對於虛擬機,我們使用VirtualBox,但如果需要,我們向任何其他人開放。

是否有任何應用程序/套件可以管理此場景?

如果沒有,我會自己編碼,應該很容易,但我不確定的唯一部分是處理虛擬機。

我需要做的就是讓VM在測試後關閉自身,並恢復到之前的快照,因爲我希望它在下一次測試中處於已知狀態。

任何指針?

回答

4

VirtualBox中確實有COM API。我沒有經驗,但可能會使用它。一種選擇是讓TeamCity發起一個腳本來做到這一點。我建議從NAnt開始(由TeamCity本地支持),並可能在必要時執行PowerShell。

+0

很高興知道有一個編程方式。去檢查是否有人對它進行C#前臺。 – 2011-06-15 18:23:01

+1

@Stecy - 這是COM,所以你可能不需要C#前臺。特別是如果您使用.NET 4並且可以使用動態關鍵字。 – TrueWill 2011-06-15 18:26:50

11

我有一個類似的安裝程序運行,我選擇使用Vagrant作爲我們的開發人員用於規範化開發環境的同樣的事情。

虛擬機的初始狀態是使用puppet編寫的腳本,但我們沒有在每次測試中從頭開始運行部署腳本,每天只運行一次。

您可以使用木偶/廚師做所有事情,但對於虛擬機上的所有其他操作,我們將使用Fabric腳本,因爲它們也用於真正的部署,並以某種方式滿足我們如何更好地工作。總之腳本看起來像下面:

vagrant up # fire up the vm, and run the puppet provisioning tool 
fab vm run_test # run tests on vm 
fab local process_result # process results on local shared folder 
vagrant destroy # destroy the vm 

的好處是,你的開發人員也可以使用流浪漢模仿生產環境,而不必採取照顧自己(即更改數據庫的設置都會同步到所有你的開發者vm的任何地方),同樣的腳本也可以在生產中使用。

相關問題