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