基于云計算的測試平臺

隨著軟件開發技術的不斷成熟,軟件的測試變得日益重要。不過,測試是一項具有風險的工作,主要體現在以下方面:首先,測試需要大量的資源,如果放在開發者的機器上進行測試,導致開發者在測試的過程中機器性能降低,從而降低了開發者的開發效率;其次,由于測試失敗的可能性較高,因此后果無法預計,輕則輸出的結果和預想有偏差,重則導致整個系統崩潰;再次,對于部分測試,需要依賴于不同的硬件,如果團隊沒有足夠的資金去購買相應的硬件,這會使測試變得更加困難。
鑒于以上問題,我們需要設計一套更加良好的測試方案,使得開發者達到以下的目的:首先,提高開發者的測試效率,測試不占用開發者的計算資源,并且盡量能夠自動進行;其次,提高測試的安全性,即使測試失敗,也不會導致整個系統崩潰;再次,測試能夠彈性地改變測試環境,即改變測試的資源配置;最后,測試的過程中系統能夠盡量自動收集更多的測試數據,比如CPU占有率、內存占用、IO的情況等,能夠在測試結束后返回給用戶。
基于這些需求,我們通過比較,認為云計算是一個很好的解決方案。首先,云計算能夠把計算資源放在云端,幾乎不占用客戶端的任何計算資源;其次,利用云端虛擬化的天然隔離性,可以保證在一臺虛擬機崩潰后不影響整個云系統,從而使得測試的健壯性得到加強;再次,云計算的虛擬化可以通過改變虛擬機的配置,使動態改變資源配置成為了可能。這些特點,使得這個新測試系統能成為一個典型的云計算系統。
場景
這套系統主要是為軟件開發人員準備的。開發人員把測試的可執行文件加上測試用例提交給云端,然后進行其他工作,云端得到可執行代碼和測試用例以后,開啟一臺虛擬機運行測試用例,在運行的過程中,云系統可以記錄這臺虛擬機性能參數的變化。當運行完成以后,虛擬機被回收,測試系統把測試結果報告結合系統的性能記錄經過處理后一并返回給用戶。用戶得到報告,從中分析結果,并進行相應的下一步工作。
以下是部分典型的適用于云計算測試平臺的場景:
一個測試Unix系統程序的測試平臺,由于考慮到系統編程常常涉及底層的指針操作,所以出現故障的概率極高,如果是大型的系統程序,那么及其容易導致系統崩潰。在這個場景中,使用云測試平臺能夠很好地做到故障的隔離,使測試更加安全,系統恢復的速度也更快。
一個計算密集型系統的壓力測試,由于計算密集型系統需要使用大量的CPU資源,如果放到本地測,會使本地及其的CPU占用率居高不下,導致了測試的時候無法進行其他工作。在這種情況下,把測試放到云測試平臺是一個明智的選擇。
價值描述
這套云測試系統可以給用戶帶來如下的價值:
首先,增強了測試的健壯性,這套云測試系統特別適合易于導致系統崩潰的測試。
其次,系統加快了恢復的速度。在系統崩潰后,系統的恢復更加快捷,只需要刪除崩潰的虛擬機,重新建立新的虛擬機即可。因此,大大增加了測試的效率。
再次,利用云計算的特點,測試可以動態地改變硬件的配置,而且一個測試云可以為許多不同項目的測試提供服務,從而減少了重復部署,降低了開發者的成本。
架構
本系統的架構主要由用戶界面層、邏輯層和虛擬機管理層組成。用戶界面負責獲得用戶輸入,以及返回測試輸出;邏輯層負責包括代碼和測試用例在虛擬機上的部署,以及收集虛擬機性能數據,和虛擬機返回結果,最后匯總成報告;虛擬機管理層負責虛擬機的建立、回收,以及監控虛擬機的性能等任務。
用到的技術
首先,用到了Java的Spring技術。其次,利用VMWare的虛擬化產品來建立并管理用于測試的虛擬機。再次,可能會用到Hyper HQ,進行部分性能數據的收集和分析,為測試的結果分析提供幫助。