周有志 杜明
摘 要:性能測試是一種昂貴且耗時的測試活動,是評估系統(tǒng)性能至關(guān)重要的手段。在傳統(tǒng)測試環(huán)境下進行性能測試存在冗余測試次數(shù)增多、性能瓶頸定位困難等問題,人們開始思考和研究如何利用當前流行的云計算技術(shù)來提高性能測試的效率。在本文中,我們研究了云環(huán)境下性能測試技術(shù)的最新研究成果,設(shè)計并實現(xiàn)了基于CloudStack云平臺的自動化性能測試原型系統(tǒng)。實驗結(jié)果表明,在云環(huán)境下的性能測試,能顯著簡化用戶的測試工作,并具有與傳統(tǒng)測試環(huán)境下相一致的性能測試結(jié)果。
關(guān)鍵詞:云計算;云測試;性能測試;TaaS;CloudStack
中圖分類號:TP311 文獻標識碼:A 文章編號:2095-2163(2015)02-
Performance Testing Research and Application on Cloud Environment
ZHOU Youzhi,DU Ming
(School of Computer Science and Technology, Donghua University, Shanghai 201620, China)
Abstract: Performance testing is an expensive and time-consuming testing activities and is a vital tool to assess the system performance. In the traditional test environment to test the presence of increased redundancy performance test times, difficult to locate performance bottlenecks and other issues, people began to think and study how to use the current popular cloud computing technologies to improve the efficiency of performance testing. In this paper, the latest research of performance testing technology in cloud environment is presented and a prototype system of automated performance testing based on CloudStack cloud platform is designed and implemented. Experimental results show that, in a cloud environment performance tests, the proposed method can significantly simplify the user testing, and having consistent with conventional test environment performance test results.
Keywords: Cloud Computing; Cloud Testing; Performance Testing; TaaS; CloudStack
0 引 言
隨著計算機和網(wǎng)絡(luò)相關(guān)技術(shù)的飛速發(fā)展,使得當今軟件系統(tǒng)的規(guī)模越來越大,復雜度越來越高。軟件測試是保證軟件質(zhì)量的有效技術(shù)策略,而性能測試則是軟件測試的一個重要組成部分。性能測試是指,通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統(tǒng)的各項性能指標進行測試; 是驗證系統(tǒng)的性能是否滿足用戶的功能需求,是否達到設(shè)計目的,是否可交付的主要手段。一般來說,軟件系統(tǒng)性能的好壞,決定著企業(yè)對外向用戶提供服務(wù)的質(zhì)量優(yōu)劣,關(guān)系著一個企業(yè)經(jīng)營的存亡成敗。
性能測試是一種資源密集型測試活動。對于軟件系統(tǒng)的性能測試,在傳統(tǒng)測試環(huán)境下,每次都需要花費巨資去搭建和拆除測試環(huán)境,如:自動化測試工具安裝與配置,負載機配置,服務(wù)器安裝與配置等。此外,軟件系統(tǒng)在使用過程中,其現(xiàn)實的運行環(huán)境發(fā)生有一定變化,而測試人員每次手動配置的測試環(huán)境卻是一成不變的,所以傳統(tǒng)模式下的性能測試實際上很難得到被測系統(tǒng)在不同配置和網(wǎng)絡(luò)變化環(huán)境下的性能表現(xiàn)。
當今,計算機軟件在社會各行業(yè)中已經(jīng)發(fā)揮了關(guān)鍵性的支配作用,用戶對于安全、可靠、方便的應(yīng)用軟件的需求也呈現(xiàn)上升趨勢。中小型企業(yè)由于資源有限,并不具有進一步測試、分析、調(diào)優(yōu)系統(tǒng)的能力,這就使得其在市場競爭中必將處于不利地位。相反,有些大型企業(yè)內(nèi)部卻存在著大量的服務(wù)器資源只為一些軟件系統(tǒng)的特定場景提供服務(wù)的具體事實,這就使得彼此間閑置的系統(tǒng)資源并不能跨越融合,進而導致資源的嚴重浪費。
云計算是一種能夠通過網(wǎng)絡(luò)以便利快捷、按需付費的方式獲取計算資源,并提高其可用性的模式,這些資源來自一個共享的、可配置的資源池,并可以高效、自動的方式進行獲取和釋放[1]。云計算的按需服務(wù)、泛化接入、資源池化、彈性服務(wù)、可計費服務(wù)等特點,使得用戶可以在云環(huán)境下構(gòu)建智能升級的性能測試平臺,并通過網(wǎng)絡(luò)為所需用戶提供在線的性能測試服務(wù),從而簡化性能測試過程,提高性能測試的效率。
本文基于開源的云計算平臺CloudStack,設(shè)計并實現(xiàn)了針對B/S架構(gòu)應(yīng)用軟件進行性能測試的原型系統(tǒng),證明了對部署在云環(huán)境中的軟件進行性能測試的可行性,重點對比分析在相同配置條件下傳統(tǒng)測試環(huán)境和云測試環(huán)境性能測試結(jié)果的異同。
1 相關(guān)工作
當前,學術(shù)界的研究方向主要集中在基于云計算技術(shù)對軟件的功能測試,很少有學者關(guān)注云環(huán)境下的性能測試技術(shù)研究。
文獻[2]從被測軟件的特征和所執(zhí)行的測試類型這兩個方面綜述了何時適合將軟件測試遷移到云環(huán)境下進行,其中在測試類型中提出,將云計算技術(shù)與性能測試工具相結(jié)合構(gòu)建云測試系統(tǒng)能更好地按需模擬用戶負載對被測程序進行性能測試,但卻并未展開具體工作。文獻[3]通過對從事不同軟件領(lǐng)域的測試服務(wù)提供商和使用者進行調(diào)研,而全面論述了對軟件測試是否遷移到云環(huán)境中關(guān)鍵的影響因素。同時,文獻[4]又提出了Cloud9模型,一個測試即服務(wù)平臺原型系統(tǒng),使用并行符號執(zhí)行引擎技術(shù),利用商業(yè)化云平臺(Amazon EC2)中的海量資源解決了以往符號測試中CPU和內(nèi)存資源不足,以及無法應(yīng)用于大型軟件系統(tǒng)測試的缺陷,由此而提高了符號測試的能力,并可為用戶提供方便、快捷、成本低廉的測試服務(wù)。文獻[5-6]則提出了D-Cloud模型,在云環(huán)境下,以改進的、帶有錯誤或異常植入功能的虛擬機實例模擬真實的物理節(jié)點,再由云平臺Eucalyptus管理、分配和執(zhí)行測試任務(wù),即為大型并行分布式軟件系統(tǒng)一旦部署就難以測試的問題提供了新的解決思路。還有,文獻[7]提出了一個測試框架HadoopUnit,這是對原有JUnit測試框架的擴展,而且將云計算技術(shù)與Hadoop技術(shù)相結(jié)合,使得傳統(tǒng)的單元測試過程可以在分布式的云環(huán)境下并行運行,提高了單元測試效率。此外,另有文獻[8]通過利用云計算提供的超大規(guī)模測試資源為網(wǎng)絡(luò)管理系統(tǒng)構(gòu)建測試環(huán)境,有效地解決了傳統(tǒng)測試環(huán)境下對大規(guī)模軟件進行性能測試所存在的測試資源不足和測試環(huán)境搭建困難的問題,并且進一步通過測試實驗證明了這種方法的可行性。
以上研究文獻,通過將云計算技術(shù)與傳統(tǒng)的軟件測試方法相結(jié)合,對原有的測試問題和測試方法作了相關(guān)的拓展和應(yīng)用,其共同特點是利用云計算技術(shù)解決了被測軟件在原有測試環(huán)境下測試資源不足的問題。但是,卻均未考慮和研究如何對部署在云測試環(huán)境中的軟件進行性能測試。基于此,本文即開展了改進式的綜合研究,實現(xiàn)過程如下。
2 云環(huán)境下性能測試
2.1 測試環(huán)境部署
大體上,按照性能測試的目標,將性能測試可以劃分為負載測試、壓力測試、并行測試、可靠性測試、容量測試等。在傳統(tǒng)測試環(huán)境下,利用自動化的測試工具錄制用戶行為,生成、并編輯形成測試腳本,再分配到測試代理機上運行,以此來模擬真實用戶的行為。隨著被測系統(tǒng)規(guī)模和復查度的擴大,傳統(tǒng)的性能測試面臨著如下問題:(1)測試難度增加;(2)冗余測試次數(shù)增多;(3)很難定位性能瓶頸。為此,若將對軟件的性能測試過程遷移到云環(huán)境中來,則是云計算技術(shù)在軟件測試領(lǐng)域的一種新的應(yīng)用。
如圖1所示,用戶對軟件系統(tǒng)的性能測試活動存在3種部署情況。在圖1(a)中,是傳統(tǒng)測試環(huán)境下的性能測試部署拓撲圖,被測軟件和測試代理機全都部署在同一個局域網(wǎng)內(nèi)。圖1(b)和圖1(c)是基于云計算性能測試的兩種部署拓撲圖。在云環(huán)境下,云計算作為一種可以快速獲取海量測試資源的有效方式,已經(jīng)參與到性能測試活動的各階段中。
如圖1(b)所示,測試代理機部署在云環(huán)境中,而將被測軟件部署在局域網(wǎng)環(huán)境中,有效利用云計算提供的資源對云環(huán)境以外的其他軟件進行性能測試,為其搭建廉價、快捷、高效的測試環(huán)境。在圖1(c)中,被測軟件部署在云環(huán)境中,這是針對部署在云環(huán)境中的軟件進行性能測試。此種部署模式,支持面向需求的軟件測試服務(wù)市場,云計算服務(wù)提供商可以通過網(wǎng)絡(luò)為具有測試服務(wù)需要的個人或企業(yè)提供在線的軟件測試服務(wù)(TaaS)。
在本文中,研究的是基于圖1(c)中性能測試環(huán)境的部署模式,也就是針對部署在云環(huán)境中的軟件進行性能測試相關(guān)技術(shù)的研究。
(a)局域網(wǎng)-局域網(wǎng)
(a)LAN-LAN
(b)局域網(wǎng)-云環(huán)境
(b)LAN- Cloud Environment
(c)局域網(wǎng)-云環(huán)境(被測軟件在云環(huán)境中)
(c) LAN- Cloud Environment(The software under test?in a cloud environment)
圖1測試環(huán)境部署模式
Fig.1 Test environment deployment mode
2.2兩種模式對比
從圖1中,根據(jù)在傳統(tǒng)測試環(huán)境下和云環(huán)境下測試環(huán)境部署模式的不同,可以從如下七個方面分析這兩種測試環(huán)境部署之間的差異性,具體如表1所示。
表1差異性分析
Tab.1 Difference analysis
角度
傳統(tǒng)性能測試
云環(huán)境下性能測試
基礎(chǔ)設(shè)施
企業(yè)自行購買各種測試基礎(chǔ)設(shè)施
由云測試服務(wù)提供商提供測試基礎(chǔ)設(shè)施服務(wù)
價格模型
一次性付費,在項目初期投入較大
按需付費,可以按照被測項目規(guī)模、被測目標、被測時間等付費
測試人員要求
企業(yè)需要投入較多資源對測試人員進行專業(yè)技能培訓
由云測試服務(wù)提供商配置專業(yè)的測試人員,無需用戶考慮
測試過程管理
分散管理模式,參差不齊的軟件質(zhì)量保證
集中管理模式,統(tǒng)一的軟件質(zhì)量保證
安全模型
企業(yè)內(nèi)部管理,安全系數(shù)高,安全機制簡單
共享公共云測試平臺,需要測試服務(wù)需求方、云測試服務(wù)提供商等多方參與,安全機制復雜
測試環(huán)境部署
手工配置和分配測試資源
云計算平臺動態(tài)分配測試資源,自動化配置測試環(huán)境
商業(yè)擴展
增加軟硬件資源,易產(chǎn)生資源閑置,可擴展性差
有效利用云計算平臺資源池化,可擴展性強
3云環(huán)境下性能測試平臺
3.1 云測試平臺架構(gòu)
云環(huán)境下性能測試系統(tǒng)基于B/S架構(gòu),主要由三層構(gòu)成,分別為:用戶接口層、任務(wù)管理層和云資源服務(wù)層,其總體架構(gòu)如圖2所示。
圖2云測試平臺架構(gòu)
Fig.2 Cloud testing platform architecture
由圖2可知,云測試平臺架構(gòu)中各層級的功能實現(xiàn)可描述如下:
(1)用戶接口層:是用戶通過瀏覽器訪問云測試平臺的入口,該層主要用于與用戶交互,其功能將表述為:① 提交性能測試腳本;② 提交性能測試環(huán)境的資源需求描述文件;③ 跟蹤性能測試的執(zhí)行過程;④ 可視化展示測試結(jié)果,下載測試報告。
(2)任務(wù)管理層:該層主要包括四大模塊,分別是測試環(huán)境自動化配置模塊,測試任務(wù)調(diào)度模塊,測試任務(wù)監(jiān)控模塊和云計算服務(wù)管理模塊。在性能測試任務(wù)執(zhí)行前,該層首先需要根據(jù)測用戶提交的測試環(huán)境資源描述文件,通過與云資源服務(wù)層交互,自動化配置性能測試環(huán)境,并為測試任務(wù)提供不同并行粒度的調(diào)度服務(wù)。在測試任務(wù)執(zhí)行時,負責監(jiān)控測試任務(wù)的狀態(tài),還可實時反饋給用戶。而在測試任務(wù)執(zhí)行完畢之后,對測試結(jié)果進行分析統(tǒng)計,同時則為用戶生成性能測試報告,供用戶下載和查看。
(3)云資源服務(wù)層:本文基于開源的云計算平臺CloudStack,對各種物理硬件資源集中管理,通過虛擬化技術(shù)(KVM)為測試用戶提供計算、存儲、網(wǎng)絡(luò)以及其他資源,利于用戶能夠部署操作系統(tǒng)、被測軟件和其他軟件。該層根據(jù)任務(wù)管理層的指令,選擇合適的鏡像文件,創(chuàng)建虛擬機實例,并把測試任務(wù)腳本分發(fā)到各虛擬機實例上,再將虛擬機充當負載機,執(zhí)行測試腳本,對被測軟件進行性能測試。而在測試任務(wù)結(jié)束后,銷毀虛擬機實例,釋放其所占用的資源。
3.2 云環(huán)境下性能測試執(zhí)行流程
在該云測試平臺下,性能測試執(zhí)行流程如圖3所示。為了減少自動化配置測試環(huán)境所需要的時間,云測試平臺將會維護一份常用的測試資源模板庫,具體表現(xiàn)形式為虛擬機實例對應(yīng)的各種鏡像文件。多數(shù)情況下,每個鏡像都有一個資源描述文件,其中包含有安裝時常用的操作系統(tǒng)和應(yīng)用軟件。
圖3性能測試執(zhí)行流程
Fig.3 Performance testing execution process
3.3 技術(shù)方案
本文基于B/S架構(gòu),搭建云環(huán)境下的性能測試平臺。其綜合設(shè)計方案具體如下:
(1)用戶接口層:采用JSP、AJAX等技術(shù)開發(fā),主要負責與云測試平臺用戶交互。
(2)任務(wù)管理層:主要使用Java、MySQL和SSH框架等技術(shù)實施研發(fā),并負責測試環(huán)境自動配置、測試任務(wù)調(diào)度、測試執(zhí)行過程監(jiān)控、測試結(jié)果回收和生成測試報告等功能實現(xiàn)。
(3)云資源服務(wù)層:主要包括云管理服務(wù)器和云節(jié)點服務(wù)器。基于開源的云計算平臺CloudStack對各種物理的軟硬件資源進行管控,利用KVM虛擬化技術(shù)在云節(jié)點服務(wù)器上按照鏡像模板生成各種虛擬機,并在云虛擬機上使用商用的自動化性能測試工具(LoadRunner)執(zhí)行用戶提交的測試腳本。
3.4 服務(wù)流程
該云測試平臺以用戶需求為核心,從測試用戶的角度出發(fā),使用性能測試服務(wù)的流程則如圖4所示。具體來說,就是用戶通過自動化性能測試工具(LoadRunner)錄制或編程語言(C、Java)編寫形成測試腳本,并由云測試平臺門戶網(wǎng)站上傳測試腳本和測試環(huán)境資源描述文件,再經(jīng)過云測試平臺對上傳文件進行分析,由此即為用戶相應(yīng)性能測試環(huán)境的配置和搭建,同時則將測試腳本分發(fā)到各虛擬機實例上運作且執(zhí)行,等測試任務(wù)執(zhí)行結(jié)束,將返回性能測試結(jié)果,用戶就可以在門戶網(wǎng)站個人中心處查看或者下載對應(yīng)的測試報告。
圖4服務(wù)流程
Fig.4 Service process
4 實驗
4.1 實驗配置與步驟
基于上圖1(a)和1(c)中性能測試環(huán)境的兩種部署模式,研究采用JPetStore作為被測系統(tǒng),分別對其在兩個測試平臺下的性能測試結(jié)果進行觀察和分析。其中,JpetStore運行在Tomcat 7.0中,使用MySQL 5.5.27作為JpetStore的數(shù)據(jù)庫服務(wù)器。
在傳統(tǒng)性能測試環(huán)境下,本文采用兩臺物理機作為負載機,一臺物理機作為控制機和部署機。云環(huán)境下,在CloudStack計算節(jié)點服務(wù)器上,創(chuàng)建3個虛擬機實例,其中兩個虛擬機作為負載機,另一個作為部署機。物理機的配置為:CPU,雙核2G;內(nèi)存,2G;操作系統(tǒng),Ubuntu 12.04。
通過對JPetStore架構(gòu)和用戶使用行為分析,為了更好地模擬真實用戶的行為習慣,研究中定義用戶的行為如圖5所示。在性能測試用例的設(shè)計中,每個虛擬用戶都需經(jīng)歷3個動作,其中第二動作會以不同的概率發(fā)生。
圖5測試用例設(shè)計
Fig.5 Test case design
4.2 實驗結(jié)果與分析
實驗一:在虛擬機實例和物理機配置相同的情況下,研究測試了16組JPetStore在不同負載條件下的性能指標,取平均后結(jié)果值如表2所示,單位為毫秒(ms)。
表2虛擬機與物理機配置相同
Tab.2 Virtual machines and physical machines configured with the same
虛擬用戶數(shù)
平臺
響應(yīng)時間
請求成功率
50
LAN
1668
100%
CLOUD
1876
100%
150
LAN
2048
100%
CLOUD
2628
99.6%
300
LAN
3665
97.8%
CLOUD
4746
94.2%
500
LAN
6067
87.4%
CLOUD
7852
80.8%
實驗二:云測試平臺下,不同配置的虛擬機實例,在相同的測試腳本下,其性能指標隨負載變化的情況如表3所示,單位為毫秒(ms)。Small虛擬機實例的配置為:CPU,單核1G;內(nèi)存,1G;操作系統(tǒng),Ubuntu 12.04。Medium虛擬機實例的配置為:CPU,單核2G;內(nèi)存,1G;操作系統(tǒng),Ubuntu 12.04。Large虛擬機實例的配置為:CPU,雙核2G,內(nèi)存2G;操作系統(tǒng),Ubuntu 12.04。
表3虛擬機配置不同
Tab.3 Different virtual machines configuration
虛擬用戶數(shù)
虛擬機實例
響應(yīng)時間
請求成功率
50
Small
2 236
100%
Medium
2 012
100%
Large
1 862
100%
150
Small
3 762
95.8%
Medium
2 976
97%
Large
2 578
99.7%
300
Small
6 292
52%
Medium
5 372
84%
Large
4 823
96.9%
500
Small
18 876
32%
Medium
11 778
54%
Large
7 836
87.2%
實驗一結(jié)果表明,在測試環(huán)境配置和負載數(shù)量都相同的情況下,傳統(tǒng)測試環(huán)境和云測試平臺具有相一致的性能測試結(jié)果,這間接驗證了將軟件的性能測試活動遷移到云計算環(huán)境下的可行性。實驗二結(jié)果表明,在云測試環(huán)境下,隨著虛擬機實例的配置越高,其生成負載的質(zhì)量越好,而對應(yīng)的性能測試結(jié)果就越可靠。
5 結(jié)束語
本文結(jié)合云計算和自動化性能測試技術(shù),解決了在傳統(tǒng)測試環(huán)境下,性能測試環(huán)境構(gòu)建困難、測試資源不足等難題,設(shè)計并實現(xiàn)了云環(huán)境下性能測試平臺的原型系統(tǒng)。通過該云測試平臺,測試用戶只需要通過提交測試環(huán)境資源描述文件和測試腳本,云平臺即可進行測試資源的動態(tài)分配,測試環(huán)境的自動配置,并把測試任務(wù)分配到各虛擬機實例上執(zhí)行,最后將測試結(jié)果集中展現(xiàn)給用戶。實驗結(jié)果表明,云環(huán)境下的性能測試,有助于用戶節(jié)省巨大的測試成本,且能明顯優(yōu)化用戶的測試工作,并可獲得與傳統(tǒng)測試環(huán)境下的性能測試相一致的測試結(jié)果。
在實驗過程中,卻仍存在測試虛擬機運行效率不高,虛擬機調(diào)度算法適應(yīng)性不強等問題。若能研發(fā)更好的調(diào)度算法,則將在更大程度上展現(xiàn)云環(huán)境下性能測試的優(yōu)勢。
參考文獻:
[1] NIST, NIST. The NIST definition of Cloud Computing[J]. COMMUNICATIONS OF THE ACM, 2010, 53(6):50-50.
[2] PARVEEN T, TILLEY S. When to migrate software testing to the Cloud?[J]. Software Testing, Verification, and Validation Workshops, Third International Conference on, 2010:424 - 427.
[3] RIUNGU L M, TAIPALE O, SMOLANDER K. Software testing as an online service: Observations from practice[C]//Software Testing, Verification, and Validation Workshops (ICSTW), 2010 Third International Conference on. [s.l.]:IEEE, 2010:418 - 423.
[4] CIORTEAL, ZAMFCC, BUCURS, et al. Cloud9: a software testing service[J]. IEEE Trans on Operating Systems Review, 2009, 43(4) :5-10.
[5] TAKAYUKI B, HITOSHI K, RYOK, et al. D-cloud: design of a software testing environment for reliable distributed systems using cloud computing technology [C] //Proc of the10thInternational Conference on Cluster, Cloud and Grid Computing. Washington DC: IEEE Computer Society, 2010:631-636.
[6] HANAWAT, BANZAIT, KOIZUMIH, et al.Large-scale software testing environment using cloud computing technology for dependable parallel and distributed systems[C]//Proc of the 3rd International Conference on Software Testing, Verification,and Validation. Washington DC: IEEE Computer Society, 2010:428-433.
[7] PARVEEN T, TILLEY S, DALEY N, et al. Towards a distributed execution framework for JUnit test cases[C]//Software Maintenance, Icsm, IEEE International Conference on. [s.l.]:IEEE, 2009:425-428.
[8] GANON Z, ZILBERSHTEIN I E. Cloud-based performance testing of Network Management Systems[C]//Computer Aided Modeling and Design of Communication Links and Networks, 2009. CAMAD '09. IEEE 14th International Workshop on. [s.l.]:IEEE, 2009:1-6.
1基金項目:上海市教育委員會科研創(chuàng)新項目(12ZZ060),上海市科委啟明星項目(12QB1402300)。
作者簡介:周有志(1989-),男,湖南衡陽人,碩士研究生,主要研究方向: 云計算、軟件測試;
杜 明(1975-),男,黑龍江虎林人,博士,副教授,主要研究方向: 閃存數(shù)據(jù)庫。