徐小春,王禮生,董超群
XU Xiaochun,WANG Lisheng,DONG Chaoqun
江南計(jì)算技術(shù)研究所軟件測(cè)評(píng)中心,江蘇無錫214083
Software Testing Center,Jiangnan Institute of Computing Technology,Wuxi,Jiangsu 214083,China
不少信息系統(tǒng)存在的“用戶數(shù)過多無法登錄”、“系統(tǒng)忙無響應(yīng)”、“越用越慢”等問題導(dǎo)致了糟糕的用戶體驗(yàn)。因此在系統(tǒng)上線之前對(duì)其進(jìn)行測(cè)試時(shí),壓力測(cè)試是一項(xiàng)必不可少的工作。大中型的信息系統(tǒng)在設(shè)計(jì)時(shí),一般都會(huì)考慮支持的并發(fā)用戶數(shù)、吞吐量、連接數(shù)、持續(xù)運(yùn)行時(shí)間等壓力測(cè)試相關(guān)的指標(biāo),如何有效驗(yàn)證各類指標(biāo)的實(shí)現(xiàn)情況是測(cè)試人員必須解決的問題。
在傳統(tǒng)的軟件測(cè)試實(shí)驗(yàn)室內(nèi)難以部署復(fù)雜的、異構(gòu)和分布式的壓力測(cè)試環(huán)境,要直接在空間有限的實(shí)驗(yàn)室內(nèi)部署與真實(shí)環(huán)境完全一致的測(cè)試環(huán)境來開展測(cè)試的可能性?。粚?duì)于那些需要模擬用戶極度擁塞場(chǎng)景的軟件測(cè)試,更難在實(shí)驗(yàn)室內(nèi)開展。測(cè)試人員只能在非常有限的時(shí)間內(nèi)使用待上線的生產(chǎn)環(huán)境開展工作,測(cè)試的充分性得不到保證。
當(dāng)前云計(jì)算系統(tǒng)的高速建設(shè)給測(cè)試工作帶來了新的啟示。云計(jì)算能夠按需提供計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)等壓力測(cè)試必須的資源,使用方便且成本比為一個(gè)測(cè)試項(xiàng)目單獨(dú)構(gòu)建復(fù)雜測(cè)試環(huán)境低,因此可探索使用云計(jì)算的基礎(chǔ)設(shè)施實(shí)施壓力測(cè)試的方法。本文闡述利用云計(jì)算的基礎(chǔ)設(shè)施構(gòu)建虛擬測(cè)試實(shí)驗(yàn)室實(shí)施壓力測(cè)試的方法,將云計(jì)算技術(shù)引入到壓力測(cè)試過程中,以解決傳統(tǒng)的測(cè)試實(shí)驗(yàn)室構(gòu)建壓力測(cè)試環(huán)境困難的問題。
Vlab是一個(gè)寬泛的概念,有虛擬測(cè)試實(shí)驗(yàn)室、虛擬教學(xué)實(shí)驗(yàn)室、虛擬醫(yī)療實(shí)驗(yàn)室等。本文中的虛擬實(shí)驗(yàn)室是計(jì)算機(jī)領(lǐng)域的Vlab[1],它提供通用的桌面計(jì)算機(jī)、工作所需的網(wǎng)絡(luò)、標(biāo)準(zhǔn)軟件配置如操作系統(tǒng)、數(shù)據(jù)庫和測(cè)試工具等,并且保證計(jì)算機(jī)系統(tǒng)安全。工作人員不接觸實(shí)驗(yàn)室的實(shí)際物理設(shè)備,而是通過RDP、SSH或VNC客戶端訪問遠(yuǎn)程的桌面機(jī)或服務(wù)器的虛擬機(jī)(Virtual Machine,VM)。
利用云計(jì)算基礎(chǔ)設(shè)施構(gòu)建用于測(cè)試的Vlab,允許任何人在任何時(shí)刻按需訪問與物理環(huán)境類似的虛擬環(huán)境,無需像使用物理機(jī)那樣長時(shí)間地等待安裝配置。Vlab集中管理高度虛擬化的基礎(chǔ)設(shè)施,動(dòng)態(tài)地部署測(cè)試資源,確保滿足測(cè)試項(xiàng)目的需求[2]。從另外一個(gè)角度看,其管理的對(duì)象是測(cè)試云,按照服務(wù)等級(jí)協(xié)議選擇測(cè)試參數(shù)、配置測(cè)試環(huán)境、跟蹤測(cè)試進(jìn)展并檢查測(cè)試結(jié)果[3]。
Vlab使用云計(jì)算基礎(chǔ)設(shè)施構(gòu)建,虛擬計(jì)算機(jī)、網(wǎng)絡(luò)和存儲(chǔ)的功能表現(xiàn)與真實(shí)物理設(shè)備的表現(xiàn)相似,因此在實(shí)踐中用得較多的是功能、安全性和兼容性等方面的測(cè)試。如何將Vlab應(yīng)用于壓力測(cè)試則是本文研究的重點(diǎn)。
壓力測(cè)試是通過逐步增加系統(tǒng)負(fù)載,測(cè)試系統(tǒng)性能的變化,并最終確定在什么負(fù)載條件下系統(tǒng)性能處于失效狀態(tài),并以此來獲得系統(tǒng)性能提供的最大服務(wù)級(jí)別的測(cè)試[4]。通俗地講,壓力測(cè)試是一定要在規(guī)定的負(fù)載下測(cè)試到系統(tǒng)發(fā)生故障為止。對(duì)當(dāng)今的信息系統(tǒng)尤其是網(wǎng)絡(luò)應(yīng)用服務(wù)系統(tǒng)的壓力測(cè)試一般需:
(1)測(cè)試最大的并發(fā)用戶數(shù)、在線用戶數(shù)或連接數(shù)等指標(biāo);
(2)測(cè)試能處理的最大數(shù)據(jù)量,如吞吐率、帶寬或頁面數(shù)等指標(biāo);
(3)測(cè)試事務(wù)處理能力相關(guān)的指標(biāo)例如響應(yīng)時(shí)間和每秒處理的事務(wù)數(shù);
(4)測(cè)試在不同位置產(chǎn)生的負(fù)載對(duì)系統(tǒng)的影響;
(5)需進(jìn)行持續(xù)一段規(guī)定的時(shí)間,而且連續(xù)不能中斷的測(cè)試。
壓力測(cè)試常常被歸為性能測(cè)試的一種類型,一般與性能測(cè)試和調(diào)優(yōu)工作結(jié)合在一起進(jìn)行。測(cè)試通過與否需要依據(jù)系統(tǒng)需求作出相應(yīng)的判斷。
壓力測(cè)試一般通過自動(dòng)化的方法完成。首先完成壓力測(cè)試腳本創(chuàng)建和調(diào)試,然后配置好壓力測(cè)試的場(chǎng)景,提交壓力測(cè)試平臺(tái)執(zhí)行。多數(shù)壓力測(cè)試平臺(tái)中,控制器、負(fù)載發(fā)生器和分析器承擔(dān)著壓力測(cè)試執(zhí)行的主要工作??刂破鲗⒛_本傳遞給負(fù)載發(fā)生器,啟動(dòng)并監(jiān)控多個(gè)負(fù)載發(fā)生器的執(zhí)行;負(fù)載發(fā)生器是施加壓力的重要工具,按照指定用戶數(shù)執(zhí)行腳本,發(fā)起對(duì)目標(biāo)系統(tǒng)的壓力測(cè)試;分析負(fù)載發(fā)生器執(zhí)行的結(jié)果數(shù)據(jù),產(chǎn)生測(cè)試報(bào)告。
壓力測(cè)試的工具比較多,典型的工具有LoadRunner、RPT、SilkPerformer和Jmeter等[5],這些工具的共同特點(diǎn)是支持錄制或者手工編寫壓力測(cè)試的腳本,支持測(cè)試場(chǎng)景的配置,并且能控制多機(jī)上的負(fù)載發(fā)生器模擬一定數(shù)量的虛擬用戶(Virtual User,VU)生成高強(qiáng)度的壓力,對(duì)目標(biāo)系統(tǒng)進(jìn)行充分的測(cè)試。
壓力測(cè)試的這些特點(diǎn)要求壓力測(cè)試要有足夠的資源投入。傳統(tǒng)的壓力測(cè)試方法是通過在一定數(shù)量的物理機(jī)上部署負(fù)載發(fā)生器,生成VU,訪問被測(cè)系統(tǒng)。這種方法的缺點(diǎn)是需要部署指定數(shù)量的計(jì)算機(jī),工作量和成本較大,例如要測(cè)試支持10萬并發(fā)用戶的大型系統(tǒng),若每臺(tái)計(jì)算機(jī)支持創(chuàng)建250個(gè)VU,則需要配置400臺(tái)計(jì)算機(jī),在一般的實(shí)驗(yàn)室中難以實(shí)現(xiàn)。
基于云計(jì)算基礎(chǔ)設(shè)施構(gòu)建Vlab為解決上述問題提供了一個(gè)新的途徑[6]。利用支持千臺(tái)VM的測(cè)試云,在Vlab中以模板為基礎(chǔ)創(chuàng)建一定數(shù)量負(fù)載發(fā)生器,并且指定其分布于不同地點(diǎn)的資源池,快速部署所需VM群,工作量和成本都有效降低,且能實(shí)現(xiàn)多地點(diǎn)的并發(fā)訪問,與真實(shí)的使用環(huán)境相似,從而保證測(cè)試充分性。若能以標(biāo)準(zhǔn)的測(cè)試流程向用戶提供服務(wù),則能實(shí)現(xiàn)“測(cè)試即服務(wù)”的功能[7]。
一般的壓力測(cè)試過程(以下記作P1)較復(fù)雜,步驟比較多。在測(cè)試計(jì)劃已經(jīng)確定的情況下,需要選擇合適的測(cè)試工具,(1)設(shè)計(jì)測(cè)試腳本;(2)向設(shè)備管理員申請(qǐng)測(cè)試資源,如計(jì)算機(jī)、網(wǎng)絡(luò)和存儲(chǔ);(3)根據(jù)VU規(guī)模部署單機(jī)獨(dú)立測(cè)試環(huán)境或多機(jī)聯(lián)合測(cè)試環(huán)境,在其中安裝指定的操作系統(tǒng)和測(cè)試工具;(4)測(cè)試控制器與負(fù)載發(fā)生器的連通性;(5)設(shè)定測(cè)試場(chǎng)景及參數(shù);(6)執(zhí)行測(cè)試;(7)執(zhí)行完導(dǎo)出測(cè)試結(jié)果數(shù)據(jù),向設(shè)備管理員歸還測(cè)試資源;(8)分析測(cè)試結(jié)果。在這種模式下,測(cè)試人員必須參與所有的步驟。
在基于Vlab的環(huán)境下,壓力測(cè)試過程可以設(shè)計(jì)得更加簡(jiǎn)單易用,在壓力測(cè)試服務(wù)平臺(tái)中以服務(wù)的形式向測(cè)試人員提供專業(yè)的壓力測(cè)試服務(wù),其測(cè)試過程將(以下記作P2)步驟簡(jiǎn)化為3步。如圖1所示。
P2包括:(1)設(shè)計(jì)測(cè)試腳本;(2)向壓力測(cè)試服務(wù)平臺(tái)申請(qǐng)壓力測(cè)試,申請(qǐng)時(shí)配置測(cè)試場(chǎng)景及參數(shù),上傳已設(shè)計(jì)好的測(cè)試腳本,壓力測(cè)試服務(wù)平臺(tái)在接受到申請(qǐng)后在Vlab中自動(dòng)部署測(cè)試環(huán)境并開始測(cè)試執(zhí)行;(3)分析測(cè)試結(jié)果。
P2的步驟(1)和步驟(3)與P1的步驟(1)和步驟(8)相同,而步驟(2)的測(cè)試執(zhí)行由壓力測(cè)試服務(wù)平臺(tái)后臺(tái)進(jìn)行,無需測(cè)試人員參與。壓力測(cè)試服務(wù)平臺(tái)根據(jù)測(cè)試人員申請(qǐng)時(shí)所設(shè)定的參數(shù)計(jì)算所需的VM數(shù),從Vlab的資源池中自動(dòng)選擇資源,基于預(yù)置的控制器模板和負(fù)載發(fā)生器模板分配計(jì)算機(jī)、網(wǎng)絡(luò)和存儲(chǔ),創(chuàng)建控制器和負(fù)載發(fā)生器的VM,啟動(dòng)并執(zhí)行測(cè)試,集中測(cè)試結(jié)果數(shù)據(jù),將結(jié)果反饋給測(cè)試人員,最后自動(dòng)釋放所有的測(cè)試資源。
在壓力測(cè)試服務(wù)平臺(tái)的支持下,測(cè)試人員所關(guān)注的測(cè)試資源部署、測(cè)試工具安裝、測(cè)試環(huán)境的配置等工作量較大的工作交由了系統(tǒng)自動(dòng)完成,測(cè)試人員可以將更多精力投入在腳本、場(chǎng)景和結(jié)果分析等工作上。
本文提供了一個(gè)基于Vlab的壓力測(cè)試服務(wù)平臺(tái)的基礎(chǔ)架構(gòu)模型,供測(cè)試人員在設(shè)計(jì)壓力測(cè)試平臺(tái)時(shí)參考。
圖1 壓力測(cè)試過程
云計(jì)算基礎(chǔ)設(shè)施服務(wù)能提供用于測(cè)試的VM組成測(cè)試環(huán)境,但是基于VM的軟件測(cè)試環(huán)境往往只關(guān)注單個(gè)VM上的技術(shù),缺乏對(duì)多VM組成的分布式測(cè)試環(huán)境的考慮,忽略了VM之間的內(nèi)在聯(lián)系[8]。此外,由于缺乏對(duì)虛擬測(cè)試環(huán)境的整體設(shè)計(jì)、管理、監(jiān)控等功能的支持,傳統(tǒng)的由VM建立的測(cè)試系統(tǒng)無法體現(xiàn)壓力測(cè)試環(huán)境的特點(diǎn)。系統(tǒng)架構(gòu)設(shè)計(jì)應(yīng)根據(jù)壓力測(cè)試的特點(diǎn),考慮以下幾方面的需求:
(1)壓力測(cè)試服務(wù)的管理。服務(wù)管理包括服務(wù)的申請(qǐng)、處理和終止。測(cè)試人員能夠通過瀏覽器申請(qǐng)測(cè)試服務(wù),服務(wù)提交后Vlab后臺(tái)處理該服務(wù),測(cè)試執(zhí)行完成后服務(wù)自動(dòng)終止。測(cè)試人員能夠監(jiān)控后臺(tái)處理過程中服務(wù)的狀態(tài)。
(2)Vlab需支持按測(cè)試項(xiàng)目構(gòu)建測(cè)試環(huán)境。分布式系統(tǒng)一般由客戶端、應(yīng)用服務(wù)器、數(shù)據(jù)服務(wù)器等不同用途的計(jì)算資源構(gòu)成,在構(gòu)建項(xiàng)目的壓力測(cè)試環(huán)境時(shí)必須分別部署項(xiàng)目對(duì)應(yīng)的資源。為一個(gè)被測(cè)軟件系統(tǒng)測(cè)試而建立的所有測(cè)試資源納入一個(gè)測(cè)試項(xiàng)目的統(tǒng)一管理。
(3)VM、網(wǎng)絡(luò)和項(xiàng)目的模板化。將安裝了不同操作系統(tǒng)、數(shù)據(jù)庫或測(cè)試工具的VM模板化,將網(wǎng)絡(luò)參數(shù)如IP地址模式、掩碼、網(wǎng)關(guān)配置等模板化,新項(xiàng)目創(chuàng)建時(shí)選擇所需的模板,部署完成后就不需要再安裝相應(yīng)的軟件。將項(xiàng)目模板化,類似的項(xiàng)目實(shí)例化該模板,快速部署生成即配即用的環(huán)境,節(jié)省用于重復(fù)配置的時(shí)間。
(4)提供必要的管理功能。這些功能包括①與測(cè)試項(xiàng)目相關(guān)的用戶、用戶組和權(quán)限管理;②VM和網(wǎng)絡(luò)模板管理;③活動(dòng)日志、資源使用、已部署VM的監(jiān)視;④資源池中主機(jī)、數(shù)據(jù)存儲(chǔ)庫和網(wǎng)絡(luò)管理等。
能夠滿足以上需求的典型的壓力測(cè)試服務(wù)平臺(tái)架構(gòu)如圖2所示。
圖2所示的壓力測(cè)試服務(wù)平臺(tái)由云計(jì)算基礎(chǔ)設(shè)施、Vlab和壓力測(cè)試服務(wù)組成。云計(jì)算基礎(chǔ)設(shè)施為Vlab提供基本的計(jì)算、網(wǎng)絡(luò)和存儲(chǔ)服務(wù);Vlab處理來自壓力測(cè)試服務(wù)層的各類請(qǐng)求,調(diào)用云計(jì)算基礎(chǔ)設(shè)施的服務(wù)接口,完成資源的分配和釋放;壓力測(cè)試服務(wù)層負(fù)責(zé)將壓力測(cè)試過程封裝成服務(wù),提供面向測(cè)試人員的工作界面。
(1)壓力測(cè)試服務(wù):實(shí)現(xiàn)圖1所述的基于Vlab的測(cè)試過程。測(cè)試人員在瀏覽器中完成服務(wù)的申請(qǐng)、測(cè)試參數(shù)和場(chǎng)景的配置、測(cè)試腳本的上傳等工作,服務(wù)申請(qǐng)?zhí)峤缓笥蓧毫y(cè)試服務(wù)平臺(tái)自動(dòng)地分配所需的軟硬件資源、執(zhí)行測(cè)試腳本、反饋測(cè)試結(jié)果并釋放資源,后臺(tái)工作完成后,測(cè)試人員查看并分析測(cè)試結(jié)果。壓力測(cè)試服務(wù)通過調(diào)用Vlab提供的SOAP/REST API對(duì)項(xiàng)目、VM和模板等進(jìn)行管理和使用[9]。
(2)Vlab:是壓力測(cè)試服務(wù)平臺(tái)設(shè)計(jì)的關(guān)鍵,也是壓力測(cè)試服務(wù)和云計(jì)算基礎(chǔ)設(shè)施之間的“橋梁”,處理來自壓力測(cè)試服務(wù)層的各類請(qǐng)求。Vlab提供管理員功能部件和測(cè)試員功能部件。管理員功能部件至少應(yīng)包括VM模板管理、網(wǎng)絡(luò)模板管理、用戶/用戶組管理、權(quán)限管理、存儲(chǔ)庫管理、資源池管理、測(cè)試工具和腳本管理功能,才能滿足Vlab的配置管理需求;測(cè)試員功能部件一般包括測(cè)試項(xiàng)目創(chuàng)建、測(cè)試配置計(jì)劃、VM部署、VM開關(guān)停與快照、網(wǎng)絡(luò)管理、測(cè)試工具及腳本選擇器、資源監(jiān)控的功能,滿足一個(gè)測(cè)試項(xiàng)目的使用需求[10]。Vlab通過調(diào)用云計(jì)算基礎(chǔ)設(shè)施服務(wù)提供的SOAP/REST API對(duì)基礎(chǔ)設(shè)施資源等進(jìn)行管理和使用。
(3)云計(jì)算基礎(chǔ)設(shè)施:一般由服務(wù)器集群、存儲(chǔ)服務(wù)器和高速網(wǎng)絡(luò)組成測(cè)試云。服務(wù)器一般配置高性能多核CPU、大內(nèi)存、高速網(wǎng)卡,并且安裝虛擬化軟件和代理工具。虛擬化層之下的圍欄驅(qū)動(dòng)實(shí)現(xiàn)了對(duì)多VM的隔離,使得不同的測(cè)試模板可以重復(fù)生成和同時(shí)部署而不會(huì)在網(wǎng)絡(luò)上引起IP地址和MAC地址的沖突。多臺(tái)服務(wù)器同時(shí)工作,保持負(fù)載均衡,使用共享存儲(chǔ),形成服務(wù)器集群,以獲得比較高的性能。存儲(chǔ)服務(wù)器為測(cè)試工作提供存儲(chǔ)VM文件、測(cè)試工具、測(cè)試用例庫和系統(tǒng)軟件鏡像的服務(wù)[11]。測(cè)試云為上層的Vlab服務(wù)提供SOAP/REST API,包括VM管理、網(wǎng)絡(luò)管理、存儲(chǔ)管理等的應(yīng)用編程接口,開發(fā)人員按照接口規(guī)范實(shí)現(xiàn)Vlab服務(wù)。
圖2 壓力測(cè)試服務(wù)平臺(tái)的架構(gòu)示意圖
壓力測(cè)試服務(wù)平臺(tái)的構(gòu)建首先要確定測(cè)試云的獲取方式。測(cè)試云可自行構(gòu)建或者利用已有的商用計(jì)算云,例如基于云的CTaaS系統(tǒng)即利用Amazon EC2作為其基礎(chǔ)設(shè)施[12]。自行構(gòu)建測(cè)試云需要根據(jù)測(cè)試需求配置相應(yīng)數(shù)量的高性能服務(wù)器、網(wǎng)絡(luò)設(shè)備和存儲(chǔ)設(shè)備,而且需要一套功能完善的基礎(chǔ)設(shè)施管理軟件;租用已有的商用計(jì)算云省去了建造和維護(hù)基礎(chǔ)設(shè)施的過程,能夠縮短工程周期,但是對(duì)需要與互聯(lián)網(wǎng)物理隔離的企業(yè)不適用。測(cè)試云須為Vlab的設(shè)計(jì)提供一套功能全面的API,否則無法在Vlab中實(shí)現(xiàn)測(cè)試項(xiàng)目的VM管理、網(wǎng)絡(luò)管理和存儲(chǔ)管理等功能項(xiàng)。
其次需要決定是完全自主設(shè)計(jì)還是基于現(xiàn)有的COTS工具開發(fā)Vlab。完全自主設(shè)計(jì)按照需求設(shè)計(jì)系統(tǒng)的配置項(xiàng),實(shí)現(xiàn)系統(tǒng)所有功能,需要一個(gè)較長的開發(fā)周期;基于現(xiàn)有的COTS工具提供的接口進(jìn)行開發(fā),不僅能節(jié)省時(shí)間,而且可以得到較好技術(shù)支持?,F(xiàn)有虛擬實(shí)驗(yàn)室方面的COTS工具的基本功能完善,能與云計(jì)算基礎(chǔ)設(shè)施服務(wù)集成,并且提供進(jìn)一步開發(fā)的編程接口,擴(kuò)展測(cè)試方面的應(yīng)用。有代表性的工具是Vmware vCloud Director、SkytapCloud、SurgientVirtual Automation Platform和Microsoft Visual Studio Lab Management[13]。
最后是需要根據(jù)壓力測(cè)試服務(wù)的具體需求確定所需實(shí)現(xiàn)的服務(wù)功能集。因目前還沒有成熟的壓力測(cè)試服務(wù)構(gòu)建工具,需要自行設(shè)計(jì)。若要實(shí)現(xiàn)圖2所述的所有功能,實(shí)現(xiàn)較高程度的自動(dòng)化,則工作量較大。設(shè)計(jì)者可根據(jù)測(cè)試需求,進(jìn)行適當(dāng)剪裁。
為驗(yàn)證第4章所述之架構(gòu)實(shí)現(xiàn)的可行性,本文利用現(xiàn)有的COTS工具并結(jié)合自主開發(fā)構(gòu)建了一個(gè)小規(guī)模的壓力測(cè)試服務(wù)平臺(tái)實(shí)驗(yàn)環(huán)境,如圖3所示。
云計(jì)算基礎(chǔ)設(shè)施由5臺(tái)雙CPU(每CPU四核,主頻2.4 GHz)服務(wù)器、1臺(tái)4 TB盤陣、1臺(tái)交換機(jī)組成,安裝Vmware的ESX Server操作系統(tǒng)。為了對(duì)ESX Server進(jìn)行管理,配置了一臺(tái)vCenter Server服務(wù)器。
Vlab使用單獨(dú)的服務(wù)器,其中安裝vCloud Director,將vCenter Server所管理的所有ESX Server均納入到vCloud Director的資源池。在Vlab中創(chuàng)建預(yù)置了壓力測(cè)試工具(本文以LoadRunner為例)的VM模板,包括控制器模板和負(fù)載發(fā)生器模板。Vlab根據(jù)模板部署負(fù)載發(fā)生器VM,之后在測(cè)試執(zhí)行時(shí)產(chǎn)生所需數(shù)量的VU對(duì)被測(cè)系統(tǒng)施加壓力。
壓力測(cè)試服務(wù)亦使用單獨(dú)的服務(wù)器,其中安裝IIS服務(wù),并部署自行設(shè)計(jì)的壓力測(cè)試服務(wù)應(yīng)用。該應(yīng)用調(diào)用Vlab的REST API,提供服務(wù)申請(qǐng)、參數(shù)和場(chǎng)景配置、腳本上傳、查看結(jié)果的用戶界面,并能自動(dòng)部署負(fù)載發(fā)生器、測(cè)試連通性、在控制器中啟動(dòng)測(cè)試,執(zhí)行完后反饋測(cè)試結(jié)果,最后自動(dòng)釋放所自動(dòng)部署的資源。
圖3 壓力測(cè)試服務(wù)平臺(tái)實(shí)驗(yàn)環(huán)境
為了考察測(cè)試平臺(tái)的有效性,本文在小規(guī)模的壓力測(cè)試服務(wù)平臺(tái)實(shí)驗(yàn)環(huán)境下與在一般壓力測(cè)試平臺(tái)下都進(jìn)行了實(shí)驗(yàn),并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行了分析。
5.2.1 測(cè)試過程
本文選擇某信息系統(tǒng)的網(wǎng)站作為測(cè)試對(duì)象,主要測(cè)試大量并發(fā)用戶對(duì)該網(wǎng)站首頁的訪問時(shí)各項(xiàng)指標(biāo),包括響應(yīng)時(shí)間、點(diǎn)擊率、吞吐率等數(shù)據(jù),目的是能力驗(yàn)證,驗(yàn)證其能否支持1 000個(gè)并發(fā)用戶。
一般壓力測(cè)試平臺(tái)使用5臺(tái)微機(jī),主頻3.2 GHz,內(nèi)存1 GB,都安裝LoadRunner,其中一個(gè)是控制器,其余4個(gè)作為負(fù)載發(fā)生器,基于硬件配置、操作系統(tǒng)連接數(shù)限制、網(wǎng)站首頁復(fù)雜性和許可證等多因素的考慮,設(shè)置每個(gè)負(fù)載發(fā)生器產(chǎn)生的VU數(shù)為250。小規(guī)模的壓力測(cè)試服務(wù)平臺(tái)在后臺(tái)部署該項(xiàng)目的測(cè)試資源時(shí),亦創(chuàng)建配置相當(dāng)?shù)腣M。兩種方法構(gòu)建的測(cè)試環(huán)境類似。
在一般壓力測(cè)試平臺(tái)下,按照P1實(shí)施測(cè)試,包括資源部署、連通性測(cè)試和導(dǎo)出數(shù)據(jù)等工作都需要人工完成,只有并發(fā)執(zhí)行是由計(jì)算機(jī)自動(dòng)完成。而在基于Vlab的壓力測(cè)試服務(wù)平臺(tái)下,按照P2實(shí)施測(cè)試,設(shè)計(jì)好腳本之后,測(cè)試人員申請(qǐng)壓力測(cè)試服務(wù),指定并發(fā)用戶數(shù)量、場(chǎng)景調(diào)度策略[14]和位置等信息,上傳測(cè)試腳本,提交壓力測(cè)試服務(wù)平臺(tái)測(cè)試。后臺(tái)執(zhí)行時(shí),從模板自動(dòng)部署(1 000/250)=4個(gè)負(fù)載發(fā)生器和1個(gè)控制器VM,其余4個(gè)作為負(fù)載發(fā)生器。負(fù)載發(fā)生器的部署位置根據(jù)申請(qǐng)服務(wù)時(shí)所配置的值部署。例如若位置值配置為1,則將4個(gè)負(fù)載發(fā)生器部署在一臺(tái)服務(wù)器上;若位置值配置為4,即模擬在4個(gè)地點(diǎn)產(chǎn)生負(fù)載,則在4臺(tái)服務(wù)器上各部署一個(gè)負(fù)載發(fā)生器。本次實(shí)驗(yàn)中,為了保持與一般壓力測(cè)試平臺(tái)的相似性,采用后一種配置。
5.2.2 開銷分析
本次實(shí)驗(yàn)中,對(duì)于P1和P2,設(shè)計(jì)測(cè)試腳本和分析測(cè)試結(jié)果的工作內(nèi)容相同,所需時(shí)間基本相當(dāng);對(duì)于P1,步驟(2)~(7)中除步驟(6)是自動(dòng)執(zhí)行可準(zhǔn)確測(cè)量時(shí)間為147 s外,其余步驟均為人工完成,執(zhí)行時(shí)間只能估計(jì)。按照壓力測(cè)試經(jīng)驗(yàn)估計(jì),在熟練的情況下,步驟(2)約10 min,步驟(3)約4 h,步驟(4)約2 min,步驟(5)約5 min,步驟(7)約10 min,步驟(2)~(7)總時(shí)間約4 h 29 min。
在小規(guī)模的壓力測(cè)試服務(wù)平臺(tái)上執(zhí)行時(shí),對(duì)于P2,步驟②內(nèi)所有活動(dòng)包括部署軟硬件資源、連通性測(cè)試、測(cè)試執(zhí)行等是全自動(dòng)執(zhí)行,本次實(shí)驗(yàn)中步驟②執(zhí)行的總時(shí)間為12 min 28 s。
由此可見,基于Vlab的壓力測(cè)試服務(wù)平臺(tái)能將測(cè)試資源部署自動(dòng)化并與測(cè)試執(zhí)行銜接,大幅度節(jié)省測(cè)試工作所需的時(shí)間。
5.2.3 有效性分析
本次實(shí)驗(yàn)中,為了分析在壓力測(cè)試服務(wù)平臺(tái)下測(cè)試的有效性,對(duì)在一般壓力測(cè)試平臺(tái)和基于Vlab的壓力測(cè)試服務(wù)平臺(tái)下的測(cè)試曲線進(jìn)行了對(duì)比,包括運(yùn)行VU數(shù)、響應(yīng)時(shí)間、點(diǎn)擊率和吞吐量的曲線。
一般壓力測(cè)試平臺(tái)下的測(cè)試曲線見圖4。
基于Vlab的壓力測(cè)試服務(wù)平臺(tái)下的測(cè)試曲線見圖5。
對(duì)圖4和圖5進(jìn)行對(duì)比分析發(fā)現(xiàn),兩個(gè)平臺(tái)下運(yùn)行VU數(shù)、響應(yīng)時(shí)間、點(diǎn)擊率和吞吐量的測(cè)試曲線存在一些差別,但線型和趨勢(shì)基本一致。例如運(yùn)行VU數(shù)的曲線,兩者都是在前30 s VU數(shù)按一定數(shù)量線性增加,之后80 s VU數(shù)處于1 000,最后40 s,大量的VU完成測(cè)試,VU數(shù)急速減少直至為0。
因此,使用基于Vlab的壓力測(cè)試服務(wù)平臺(tái)與使用一般的壓力測(cè)試平臺(tái)進(jìn)行測(cè)試的結(jié)果基本相同,可以保證測(cè)試結(jié)果的有效性。
5.2.4 評(píng)價(jià)
本文對(duì)典型的場(chǎng)景包括用戶登錄、關(guān)鍵字檢索、數(shù)據(jù)項(xiàng)查詢、添加數(shù)據(jù)項(xiàng)等亦進(jìn)行了測(cè)試,使用基于Vlab的壓力測(cè)試服務(wù)平臺(tái)能大幅降低測(cè)試開銷,同時(shí)其測(cè)試曲線亦與一般壓力測(cè)試平臺(tái)一致。該平臺(tái)作為一種采用了虛擬化技術(shù)的自動(dòng)化測(cè)試服務(wù)平臺(tái),壓力測(cè)試項(xiàng)目能夠高效實(shí)施。在需測(cè)試的VU數(shù)量越多時(shí),該服務(wù)平臺(tái)越具有優(yōu)勢(shì)。該平臺(tái)的缺點(diǎn)是僅適用于面向多用戶的網(wǎng)絡(luò)應(yīng)用系統(tǒng)的壓力測(cè)試,具有一定的局限性。
圖4 一般壓力測(cè)試平臺(tái)下的測(cè)試曲線
圖5 基于Vlab的壓力測(cè)試服務(wù)平臺(tái)下的測(cè)試曲線
在云計(jì)算背景下,相對(duì)于采用一般的壓力測(cè)試方法實(shí)施壓力測(cè)試,基于Vlab壓力測(cè)試方法更易于使用,且效率更高。雖然構(gòu)建一個(gè)基于Vlab的專業(yè)壓力測(cè)試服務(wù)平臺(tái)需要一定的投入,但是利用它可以將測(cè)試資源部署和測(cè)試執(zhí)行有效對(duì)接,實(shí)現(xiàn)測(cè)試自動(dòng)化,并且支持多項(xiàng)目大規(guī)模的壓力測(cè)試。而在允許連接互聯(lián)網(wǎng)的條件下,可利用不同位置的商用測(cè)試云,構(gòu)建更大規(guī)模的壓力測(cè)試服務(wù)平臺(tái),模擬真實(shí)的場(chǎng)景,對(duì)目標(biāo)系統(tǒng)進(jìn)行更充分的測(cè)試。
[1] Burd S D,Seazzu A F.Virtual computing laboratories:a case study with comparisons to physical computing laboratories[J].Journal of Information Technology Education,2009,8:55-78.
[2] Lanowitz T,Dronzek L.Virtual lab management[R].2010:1-26.
[3] Bai Xiaoying,Li Muyang,Huang Xiaofei,et al.Vee@Cloud:the virtual test lab on the cloud[C]//Proc of the 8th International Workshop on Automation of Software Test,2013:15-18.
[4] 吳為根.基于Web的壓力測(cè)試[D].上海:復(fù)旦大學(xué),2006:1-2.
[5] 段念.軟件性能測(cè)試過程詳解與案例剖析[M].北京:清華大學(xué)出版社,2012:60-75.
[6] Gao Jerry,Bai Xiaoying,Tsai Wei-Tek.Cloud testing-issues,challenges,needs and practice[J].Software Engineering,2011,1(1):9-23.
[7] Yu Lian,Tsai Wei-Tek,Chen Xiangji,et al.Testing as a service over cloud[C]//Proc of the 5th IEEE International Symposium on Service Oriented System Engineering,2010:181-188.
[8] 龔愛斐,張文靜.基于虛擬化架構(gòu)的軟件開發(fā)與測(cè)試環(huán)境自動(dòng)化[J].自動(dòng)化與信息工程,2008,29(2):4-6.
[9] Candea G,Bucur S,Zamfir C.Automated software testing as a service[C]//Proc of the 1st ACM Symposium on Cloud Computing.New York:ACM Press,2010:155-160.
[10] Xie Weicheng,Yang Xia,Li Fugan.A virtual laboratory platform and simulation software based on Web[C]//Proc of the 10th International Conference on Control,Automation,Robotics and Vision,2008:1650-1654.
[11] Armbrust M,F(xiàn)ox A,Griffith R,et al.A view of cloud computing[J].Communications of the ACM,2010,53:50-58.
[12] Gao Jerry,Manjula K,Roopa P,et al.A cloud-based TaaS infrastructure with tools for SaaS validation,performance and scalability evaluation[C]//Proc of the 4th IEEE International Conference on Cloud Computing Technology and Science,2012:464-471.
[13] Kim W.Cloud computing adoption[J].International Journal of Web and Grid Services,2011,7:225-245.
[14] Mercury Interactive Ltd.Controller user guide[M].[S.l.]:HP Inc,2009:149-183.