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