熊 婧,夏仲平,林 軍,楊春暉
(工業(yè)和信息化部電子第五研究所軟件質(zhì)量工程研究中心,廣州510610)
基于國產(chǎn)CPU/OS的信息系統(tǒng)指部署在國產(chǎn)基礎(chǔ)軟硬件平臺(tái)之上的信息系統(tǒng),其中國產(chǎn)基礎(chǔ)軟硬件平臺(tái)包括國產(chǎn)的CPU、操作系統(tǒng)、中間件、數(shù)據(jù)庫及辦公軟件。
目前國產(chǎn)CPU主要包括基于MIPS架構(gòu)的龍芯系列CPU、基于SPARC架構(gòu)的飛騰系列和基于Alpha架構(gòu)的申威系列CPU等;國產(chǎn)操作系統(tǒng)主要包括中標(biāo)麒麟系列操作系統(tǒng)、紅旗Linux系列操作系統(tǒng)、共創(chuàng)Linux系列操作系統(tǒng)等;國產(chǎn)中間件主要包括金蝶中間件及東方通中間件等;國產(chǎn)數(shù)據(jù)庫主要包括人大金倉數(shù)據(jù)庫、達(dá)夢數(shù)據(jù)庫及神通數(shù)據(jù)庫等;國產(chǎn)辦公軟件主要包括中標(biāo)普華及金山Office等。
基于國產(chǎn)CPU/OS的信息系統(tǒng)從底層CPU及主板等至上層操作系統(tǒng)、數(shù)據(jù)庫等都是國產(chǎn)產(chǎn)品,一方面由于國產(chǎn)產(chǎn)品其成熟性、兼容性等尚欠缺,另一方面用戶體驗(yàn)不夠滿意,與Intel體系下的信息系統(tǒng)相比,用戶較難接受目前的性能表現(xiàn),使基于國產(chǎn)CPU/OS的信息系統(tǒng)應(yīng)用處于困境。因此,研究基于國產(chǎn)CPU/OS的信息系統(tǒng)的性能是目前國產(chǎn)CPU/OS信息系統(tǒng)面臨的一個(gè)重大問題。
本文通過研究信息系統(tǒng)性能測試原理,介紹目前業(yè)界普遍采用的針對基于國產(chǎn)CPU/OS的信息系統(tǒng)的性能測試方案,指出其存在只考慮服務(wù)器響應(yīng)時(shí)間和網(wǎng)絡(luò)延遲等時(shí)間,未考慮瀏覽器渲染時(shí)間,從而導(dǎo)致性能測試結(jié)果與終端用戶體驗(yàn)預(yù)期差異較大的問題,并分別設(shè)計(jì)基于LoadRunner和JMeter的性能測試改進(jìn)方案,以期提高基于國產(chǎn)CPU/OS的信息系統(tǒng)性能測試水平,使系統(tǒng)設(shè)計(jì)達(dá)到可用、好用的目標(biāo)[1]。
性能測試[2-4]是通過產(chǎn)生模擬真實(shí)業(yè)務(wù)的數(shù)據(jù)或動(dòng)作,對被測系統(tǒng)進(jìn)行加壓,研究被測系統(tǒng)在不同壓力情況下的表現(xiàn),找出其潛在的瓶頸問題[5-6]。
LoadRunner作為成熟的商用測試工具,是一種預(yù)測系統(tǒng)行為和性能的工業(yè)標(biāo)準(zhǔn)級負(fù)載測試工具,通過模擬上千萬用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測的方式來確認(rèn)和查找問題,該工具被普遍用于基于X86/Windows平臺(tái)的Web系統(tǒng)的性能測試。
通過將LoadRunner測試工具各個(gè)組件部署在基于X86平臺(tái)的終端測試機(jī)上,對服務(wù)器發(fā)起并發(fā)形成壓力,可得到服務(wù)器的響應(yīng)時(shí)間,LoadRunner測試工具的框架如圖1所示。
圖1 LoadRunner框架
其中:(1)VuGen為虛擬用戶產(chǎn)生器,用來錄制操作者的操作,建立虛擬用戶腳本;(2)Controller為后臺(tái)壓力控制器,壓力測試的控制中心,用來管理、設(shè)計(jì)、驅(qū)動(dòng)及監(jiān)控壓力測試場景;(3)Load Generator為壓力生成器,執(zhí)行虛擬使用者腳本以產(chǎn)生虛擬用戶,對被測系統(tǒng)發(fā)出請求和接收響應(yīng),模擬實(shí)際的負(fù)載;(4)Analysis為結(jié)果分析器,通過測試結(jié)果的數(shù)據(jù),用來分析壓力測試結(jié)果。
測試的具體過程如圖2所示,在一臺(tái)X86測試機(jī)上模擬100個(gè)用戶并發(fā)操作,并發(fā)請求從測試終端發(fā)起,經(jīng)過 Windows操作系統(tǒng)的處理、網(wǎng)絡(luò)驅(qū)動(dòng)模塊、網(wǎng)卡等硬件設(shè)備,再經(jīng)過網(wǎng)絡(luò)傳輸?shù)竭_(dá)服務(wù)器端,數(shù)據(jù)通過服務(wù)器端的網(wǎng)卡等硬件設(shè)備、網(wǎng)絡(luò)驅(qū)動(dòng)模塊、操作系統(tǒng)處理、上層系統(tǒng)處理請求后,將處理結(jié)果原路返回至測試終端。
圖2 信息系統(tǒng)性能測試原理
從基本原理上分析,基于LoadRunner的測試方案性能測試結(jié)果表示網(wǎng)絡(luò)延遲和服務(wù)器處理響應(yīng)時(shí)間之和,同時(shí)也包括了網(wǎng)卡、操作系統(tǒng)網(wǎng)絡(luò)驅(qū)動(dòng)等處理時(shí)間[7]。由此可以認(rèn)為,性能測試響應(yīng)時(shí)間與測試終端和服務(wù)器所處的硬件平臺(tái),以及操作系統(tǒng)的處理效率都存在關(guān)系[8-9]。
基于國產(chǎn)CPU/OS的信息系統(tǒng)的服務(wù)器端(數(shù)據(jù)服務(wù)器、應(yīng)用服務(wù)器)和終端均采用的是全國產(chǎn)軟硬件平臺(tái),從CPU到整機(jī),從操作系統(tǒng)、數(shù)據(jù)庫、中間件到瀏覽器均為全國產(chǎn)化[10]。由于LoadRunner不支持國產(chǎn)CPU/OS平臺(tái),國產(chǎn)終端無法安裝LoadRunner測試工具,目前測試手段是將LoadRunner部署于X86/Windows機(jī)器上,通過網(wǎng)絡(luò)連接基于國產(chǎn)CPU/OS服務(wù)器,同樣采用圖2的測試方法和流程得到性能測試結(jié)果。
由本文第2節(jié)的論述,硬件平臺(tái)和操作系統(tǒng)的對并發(fā)請求和應(yīng)答的處理效率會(huì)影響響應(yīng)時(shí)間,為避免當(dāng)前所存在的性能測試的響應(yīng)時(shí)間良好,但國產(chǎn)終端用戶體驗(yàn)極差的問題,本文針對傳統(tǒng)基于LoadRunner的性能測試方案進(jìn)行改進(jìn),提出基于用戶體驗(yàn)的國產(chǎn)信息系統(tǒng)性能測試方案,以解決以下2個(gè)問題:(1)LoadRunner無法部署成功完成測試;(2)性能測試響應(yīng)時(shí)間無法真實(shí)反映用戶體驗(yàn)。LoadRunner性能測試工具無法測試瀏覽器的渲染時(shí)間,而針對國產(chǎn)終端目前的性能水平,瀏覽器渲染時(shí)間在用戶體驗(yàn)時(shí)間中所占比重較大。因此,改進(jìn)的測試方案以用戶體驗(yàn)時(shí)間為最終性能測試指標(biāo),其計(jì)算原理如圖3所示。
圖3 改進(jìn)方案中的用戶體驗(yàn)指標(biāo)計(jì)算原理
同樣以需要獲取100個(gè)并發(fā)用戶下的信息系統(tǒng)終端用戶體驗(yàn)時(shí)間為例,改進(jìn)后的測試方案原理如圖4所示。
圖4 基于LoadRunner的信息系統(tǒng)性能測試原理
測試的具體步驟如下:
(1)LoadRunner安裝在X86平臺(tái)的測試終端上,模擬99個(gè)并發(fā)用戶,對服務(wù)器產(chǎn)生并發(fā)壓力。
(2)1個(gè)測試用戶通過使用基于國產(chǎn)CPU平臺(tái)的終端上的瀏覽器,操作國產(chǎn)信息系統(tǒng),利用Firbug工具的計(jì)時(shí)功能,得到結(jié)果,該計(jì)時(shí)記錄的就是最終包括瀏覽器渲染時(shí)間在內(nèi)的100個(gè)并發(fā)用戶的用戶體驗(yàn)時(shí)間。
該方案通過拆分N個(gè)用戶并發(fā)請求,采用LoadRunner對服務(wù)器施加壓力,在服務(wù)器承受壓力的情況下,終端用戶通過非自動(dòng)化的方式訪問服務(wù)器,得到最終的用戶體驗(yàn)時(shí)間。
基于理論分析,該方案存在的不足之處是:并發(fā)請求仍舊從X86平臺(tái)的測試終端上發(fā)起,這種情況與所有并發(fā)請求都從國產(chǎn)CPU平臺(tái)發(fā)起的情況相比,對服務(wù)器造成的壓力是存在差異的,導(dǎo)致測試結(jié)果并不能夠完全模擬真實(shí)應(yīng)用場景中,100個(gè)并發(fā)用戶均從國產(chǎn)終端發(fā)起請求的使用情況。
為了解決上文改進(jìn)測試方案所存在的問題,通過對開源測試工具JMeter進(jìn)行二次集成開發(fā),使其滿足運(yùn)行于基于國產(chǎn)CPU/OS的平臺(tái)之上,可為國產(chǎn)信息系統(tǒng)開展性能測試提供技術(shù)支撐[11-12]。本文對具體集成改造技術(shù)不進(jìn)行過多闡述。
JMeter可直接運(yùn)行于基于國產(chǎn)CPU/OS的平臺(tái)之上,向服務(wù)器發(fā)起并發(fā)請求,采用用戶體驗(yàn)時(shí)間作為性能測試指標(biāo),利用輔助工具計(jì)算瀏覽器渲染時(shí)間,最終獲得用戶體驗(yàn)時(shí)間。
基于JMeter的信息系統(tǒng)性能測試方案原理如圖5所示。
圖5 基于JMeter的信息系統(tǒng)性能測試原理
為驗(yàn)證本文所提出2種改進(jìn)測試方案(分別記為LoadRunner和JMeter)的有效性,對某電子政務(wù)中心的基于國產(chǎn)CPU/OS的辦公信息系統(tǒng)進(jìn)行測試驗(yàn)證,本次測試驗(yàn)證使用30個(gè)并發(fā)用戶。由于對2種方案進(jìn)行對比,因此需要選取一個(gè)較為可信的數(shù)據(jù)作為優(yōu)劣對比的參考值,本文利用Selenium測試工具的分布式測試能力,在30臺(tái)國產(chǎn)CPU桌面機(jī)上部署Selenium測試工具[13],該工具的測試腳本可運(yùn)行在Firefox上,利用Firebug計(jì)時(shí)得到單用戶體驗(yàn)時(shí)間,通過同步30臺(tái)機(jī)器的時(shí)間后在同一時(shí)刻觸發(fā)測試腳本并運(yùn)行,運(yùn)行結(jié)束后,得到30個(gè)用戶并發(fā)的用戶體驗(yàn)數(shù)據(jù)數(shù)據(jù),重復(fù)3組實(shí)驗(yàn),取平均值,該值即為30個(gè)并發(fā)用戶體驗(yàn)時(shí)間值。在測試中,分別記錄考慮瀏覽器渲染時(shí)間和不考慮瀏覽器渲染時(shí)間的結(jié)果,具體如表1和表2所示。
表1 不考慮瀏覽器渲染時(shí)間的用戶平均響應(yīng)時(shí)間 s
表2 考慮瀏覽器渲染時(shí)間的用戶平均響應(yīng)時(shí)間 s
由圖3可知,用戶體驗(yàn)時(shí)間是瀏覽器時(shí)間加上網(wǎng)絡(luò)延遲和服務(wù)器處理時(shí)間的總和,表1中的不考慮瀏覽器渲染時(shí)間即為網(wǎng)絡(luò)延遲和服務(wù)器處理時(shí)間,因此,可以粗略地認(rèn)為表2中的考慮瀏覽器渲染時(shí)間為不考慮瀏覽器渲染時(shí)間與瀏覽器渲染時(shí)間之和,通過表1和表2考察瀏覽器渲染時(shí)間在用戶體驗(yàn)時(shí)間中所占比重情況,計(jì)算LoadRunner和JMeter的瀏覽器渲染時(shí)間和考慮瀏覽器渲染時(shí)間的平均比值:
其中,L1i,J1i分別表示表1中 LoadRunner和JMeter不考慮瀏覽器渲染時(shí)間的第i行的值,以及表2中LoadRunner和JMeter考慮瀏覽器渲染時(shí)間的第i行的值。通過計(jì)算可以計(jì)算得出:=82.25%,=90.55%,由此可知,無論是哪種測試方案,瀏覽器渲染時(shí)間都遠(yuǎn)大于不考慮瀏覽器渲染時(shí)間,因此,考慮包括瀏覽器渲染時(shí)間的用戶體驗(yàn)時(shí)間測試是非常必要的。
為了得知哪種方案與用戶體驗(yàn)時(shí)間參考值更為接近,需計(jì)算表2中LoadRunner和JMeter分別與用戶體驗(yàn)時(shí)間的方差DL及DJ,哪個(gè)值最小就說明對應(yīng)哪種方案更接近參考值結(jié)果。設(shè)Li為LoadRunner在表中第i行的值,Ji為JMeter在表中第i行的值,Ui為用戶體驗(yàn)時(shí)間在表中第i行的值,根據(jù)下式:
計(jì)算得到:DL=0.62,DJ=0.18,DJ比DL小70.49%。
由此可得出,基于用戶體驗(yàn)的JMeter國產(chǎn)信息系統(tǒng)性能測試更接近真實(shí)結(jié)果。
因此,可以得出以下結(jié)論:
(1)考慮用戶體驗(yàn)的性能測試方案對于目前針對國產(chǎn)信息系統(tǒng)的性能測試來說,更符合實(shí)際情況,能夠更真實(shí)地反映用戶的使用狀況,為國產(chǎn)信息系統(tǒng)的使用評價(jià)提供依據(jù)。
(2)在考慮用戶體驗(yàn)的情況下,基于JMeter的測試方案和基于LoadRunner的測試方案均可從一定程度上反映用戶的真實(shí)體驗(yàn),但相對比來說,基于JMeter的測試方案與調(diào)研取得的真實(shí)數(shù)據(jù)差異性較小,更符合真實(shí)情況。
本文提出的2種改進(jìn)方案均可針對基于國產(chǎn)CPU/OS的信息系統(tǒng)進(jìn)行性能測試,而且能更接近用戶體驗(yàn)時(shí)間,其中基于JMeter的測試方案結(jié)果相對更好。該測試結(jié)論可對于基于國產(chǎn)CPU平臺(tái)整機(jī)的信息系統(tǒng)性能評價(jià)提供有力的技術(shù)支撐和指導(dǎo)。由于目前LoadRunner不能直接測試某些基于國產(chǎn)CPU/OS信息系統(tǒng)中的WebService,需要手工封包再通過HTTP協(xié)議進(jìn)行測試,因此下一步將研究實(shí)現(xiàn)JMeter下的WebService協(xié)議測試插件。
[1]張忠磊,孫玉娟.國產(chǎn)軟硬件在實(shí)現(xiàn)電子政務(wù)集成應(yīng)用上的框架研究[J].微計(jì)算機(jī)信息,2006,22(12-3):198-199.
[2]胡玉蓉,易發(fā)勝,曾家智.基于時(shí)延的微通信元主機(jī)原型性能測試[J].計(jì)算機(jī)工程,2009,35(20):121-122.
[3]孟躍偉,胡愛群,宋宇波,等.無線局域網(wǎng)安全性能測試的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2013,39(7):193-199.
[4]劉 嚴(yán),胡 敏.性能測試中腳本捕獲的方法研究與應(yīng)用[J].計(jì)算機(jī)工程,2006,32(22):94-95,123.
[5]段 念.軟件性能測試過程詳解與案例剖析[M].北京:清華大學(xué)出版社,2006.
[6]簡 玲.B/S系統(tǒng)性能測試的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2009,35(10):51-53.
[7]李 ?。?Web應(yīng)用系統(tǒng)的性能測試技術(shù)研究[D].西安:西安電子科技大學(xué),2010.
[8]Avritzer A,Kondek J.Software Performance Testing Based on Workload Characterization[EB/OL].[2014-07-15].http://portal.a(chǎn)cm.org/citation.cfm?id=584373.
[9]Jain R K.The Art of Computer Systems Performance Analysis:Techniques for Experimental Design,Measure-ment,Simulation,and Modeling[M].New York,USA:John Wiley & Sons,1991.
[10]李天日,林 寧,高 林,等.基于國產(chǎn)基礎(chǔ)軟件應(yīng)用系統(tǒng)的性能測試與優(yōu)化研究[J].微型機(jī)與應(yīng)用,2011,(11):67-69.
[11]You Jing,Zhang Lan,Wang Hongyuan.JMeter-based Aging Simulation of Computing System[C]//Proceedings of 2010International Conference on Computer,Mechatronics,Control and Electronic Engineering.Washington D.C.,USA:IEEE Press,2010:282-285.
[12]馮建梅.自動(dòng)化測試工具集成系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2010.
[13]雷 暉,郝愛語.基于Selenium與JMeter的自動(dòng)化測試構(gòu)建[J].信息與電腦:理論版,2011,(7):18-19.