摘 要: 討論了LoadRunner在無線傳感器網(wǎng)絡(luò)應(yīng)用系統(tǒng)開發(fā)中的應(yīng)用。無線傳感器節(jié)點(diǎn)和簇節(jié)點(diǎn)作為數(shù)據(jù)采集和預(yù)處理節(jié)點(diǎn),需要向后臺(tái)系統(tǒng)發(fā)送大量的數(shù)據(jù)。首次將LoadRunner引入無線傳感器網(wǎng)絡(luò)應(yīng)用開發(fā)過程,對(duì)傳感器節(jié)點(diǎn)與后臺(tái)系統(tǒng)的通信進(jìn)行仿真,并提出了運(yùn)用LoadRunner進(jìn)行測(cè)試和仿真的工作流程。有效地對(duì)后臺(tái)系統(tǒng)的性能進(jìn)行了測(cè)試,同時(shí)節(jié)約了硬件系統(tǒng)的研發(fā)成本,縮短了項(xiàng)目工期。
關(guān)鍵詞: LoadRunner;無線傳感器網(wǎng)絡(luò);性能測(cè)試
1 無線傳感器網(wǎng)絡(luò)
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks)是由部署在觀測(cè)環(huán)境中的大量微型廉價(jià)低功耗的傳感器節(jié)點(diǎn)以無線多跳通信方式構(gòu)成的網(wǎng)絡(luò)系統(tǒng)[1]。根據(jù)信息獲取和處理技術(shù),可以將無線傳感器網(wǎng)絡(luò)劃分為傳統(tǒng)無線傳感器網(wǎng)絡(luò)和多媒體無線傳感器網(wǎng)絡(luò)[2]。
無線傳感器網(wǎng)絡(luò)將邏輯上的信息世界與真實(shí)的物理世界融合在一起,深刻地改變了人與自然的交互方式[3]??蓮V泛地應(yīng)用于軍事、工農(nóng)業(yè)控制、生物醫(yī)療、環(huán)境監(jiān)測(cè)等諸多領(lǐng)域[4-7]。美國(guó)《商業(yè)周刊》認(rèn)為,WSN是全球未來四大高技術(shù)產(chǎn)業(yè)之一,是21世紀(jì)世界最具有影響力的21項(xiàng)技術(shù)之一。MIT新技術(shù)評(píng)論認(rèn)為,WSN是改變世界的十大新技術(shù)之一[6]。
目前國(guó)內(nèi)外研究人員對(duì)傳統(tǒng)WSN的研究主要集中于網(wǎng)絡(luò)通信技術(shù)、基礎(chǔ)設(shè)施、中間件、傳感器節(jié)點(diǎn)、數(shù)據(jù)管理、嵌入式軟件系統(tǒng)等方面[6]。對(duì)于多媒體WSN,北京郵電大學(xué)智能通信軟件與多媒體北京市重點(diǎn)實(shí)驗(yàn)室、中國(guó)科學(xué)院計(jì)算技術(shù)研究所、哈爾濱工業(yè)大學(xué)已開始對(duì)該領(lǐng)域的探索。但是這些研究成果尚處于起步階段,距離實(shí)際應(yīng)用還相差甚遠(yuǎn)[2]。目前關(guān)于WSN嵌入式軟件系統(tǒng)方面的研究成果主要是嵌入式操作系統(tǒng),加利福尼亞大學(xué)伯克利分校研究開發(fā)了一個(gè)傳感器節(jié)點(diǎn)操作系統(tǒng)TinyOS,加利福尼亞大學(xué)洛杉磯分校研究了傳感器節(jié)點(diǎn)嵌入式操作系統(tǒng)SOS。而對(duì)WSN應(yīng)用軟件的研究開發(fā)工作則遠(yuǎn)遠(yuǎn)落后于其他方面的研究,還有大量的工作需要完成, 諸多新問題尚待發(fā)現(xiàn),全新的應(yīng)用尚待開發(fā),任重而道遠(yuǎn)[6]。
LoadRunner目前已廣泛應(yīng)用于傳統(tǒng)軟件項(xiàng)目的性能測(cè)試[8-11],也有研究人員將其運(yùn)用于網(wǎng)絡(luò)可信性評(píng)測(cè)的仿真研究當(dāng)中[12]。本文首次將其引入無線傳感器網(wǎng)絡(luò)應(yīng)用系統(tǒng)的開發(fā),提出了LoadRunner在無線傳感器網(wǎng)絡(luò)開發(fā)中的測(cè)試和仿真流程,有效解決了無線傳感器網(wǎng)絡(luò)應(yīng)用開發(fā)中存在的開發(fā)成本高、開發(fā)周期長(zhǎng)、沒有性能測(cè)試或者性能測(cè)試不充分等問題,取得了良好的效果。
2 將LoadRunner引入無線傳感器網(wǎng)絡(luò)應(yīng)用開發(fā)
2.1 LoadRunner
LoadRunner是一種預(yù)測(cè)系統(tǒng)行為和性能的工業(yè)標(biāo)準(zhǔn)級(jí)負(fù)載測(cè)試工具。通過模擬上千萬用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測(cè)來確認(rèn)和查找問題,它能夠?qū)φ麄€(gè)企業(yè)的系統(tǒng)架構(gòu)進(jìn)行測(cè)試,最大限度地縮短測(cè)試時(shí)間,優(yōu)化性能并加速應(yīng)用系統(tǒng)的發(fā)布周期。
LoadRunner包含Virtual User Generator、Controller和Analysis[11]三個(gè)部件。Virtual User Generator可以在Windows、UNIX或Linux機(jī)器上同時(shí)產(chǎn)生成千上萬個(gè)用戶訪問,極大地減少負(fù)載測(cè)試所需的硬件和人力資源。Controller可以設(shè)定負(fù)載方案、業(yè)務(wù)流程組合和虛擬用戶數(shù)量。通過Controller的Rendezvous功能既能建立起持續(xù)且循環(huán)的負(fù)載,又能管理和驅(qū)動(dòng)負(fù)載測(cè)試方案。同時(shí),還可以利用它的日程計(jì)劃服務(wù)來定義用戶在什么時(shí)候訪問系統(tǒng)以產(chǎn)生負(fù)載,從而將測(cè)試過程自動(dòng)化。Analysis負(fù)責(zé)收集匯總所有的測(cè)試數(shù)據(jù),并提供高級(jí)的分析和報(bào)告工具,以便迅速查找到性能問題并追溯原由。使用LoadRunner的Web交易細(xì)節(jié)監(jiān)測(cè)器,可以查看所有的圖象、框架和文本下載所需的時(shí)間。另外,Web交易細(xì)節(jié)監(jiān)測(cè)器能夠分解用于客戶端、網(wǎng)絡(luò)和服務(wù)器上端到端的反應(yīng)時(shí)間,便于確認(rèn)問題,定位查找真正出錯(cuò)的組件。例如可以將網(wǎng)絡(luò)延時(shí)進(jìn)行分解,以判斷DNS解析時(shí)間、連接服務(wù)器或SSL認(rèn)證所花費(fèi)的時(shí)間。通過使用LoadRunner的分析工具,可以很快地查找到出錯(cuò)的位置和原因并作出相應(yīng)的調(diào)整。
LoadRunner內(nèi)含集成的實(shí)時(shí)監(jiān)測(cè)器,在負(fù)載測(cè)試過程中,可以隨時(shí)觀察到應(yīng)用系統(tǒng)的運(yùn)行性能。性能監(jiān)測(cè)器可以實(shí)時(shí)顯示交易性能數(shù)據(jù),也可以顯示其他系統(tǒng)組件如application server、web server、網(wǎng)絡(luò)設(shè)備和數(shù)據(jù)庫的實(shí)時(shí)性能,從而更快地發(fā)現(xiàn)系統(tǒng)瓶頸和其他問題所在。LoadRunner還通過可以無限精確重復(fù)進(jìn)行的回歸測(cè)試保證系統(tǒng)發(fā)布的高性能。
2.2 運(yùn)用LoadRunner進(jìn)行測(cè)試和仿真的工作流程
運(yùn)用LoadRunner進(jìn)行測(cè)試和仿真的工作流程如圖1所示。
2.2.1 制定負(fù)載測(cè)試和仿真計(jì)劃
在任何類型的測(cè)試和仿真中,計(jì)劃都是必要的步驟。充分而詳盡的計(jì)劃是成功測(cè)試和仿真的關(guān)鍵。確定系統(tǒng)的組成,畫出系統(tǒng)的組成圖。組成圖主要包括系統(tǒng)中所有的組件(如傳感器節(jié)點(diǎn)和簇節(jié)點(diǎn))的數(shù)目,組件部署的方式以及相互之間的通信方式,傳感器節(jié)點(diǎn)、簇節(jié)點(diǎn)、數(shù)據(jù)庫服務(wù)器、系統(tǒng)服務(wù)器的配置。
2.2.2 開發(fā)測(cè)試和仿真腳本
可以使用LoadRunner中虛擬用戶的活動(dòng)來模擬傳感器節(jié)點(diǎn)和簇節(jié)點(diǎn)與系統(tǒng)的通信,而虛擬用戶的活動(dòng)就包含在測(cè)試腳本中,因此測(cè)試腳本對(duì)系統(tǒng)測(cè)試和仿真而言非常重要。
開發(fā)測(cè)試腳本要使用Virtual User Generator組件。按照測(cè)試和仿真計(jì)劃定義每一個(gè)虛擬用戶的活動(dòng)、結(jié)合點(diǎn)和事務(wù)。
Virtual User Generator中的腳本分為vuser_init、vuser_end和Action三部分。其中vuser_init和vuser_end都只能存在一個(gè),不能再分割,而Action還可以分成無數(shù)多個(gè)部分。
對(duì)于傳感器節(jié)點(diǎn)和簇節(jié)點(diǎn)需要登陸的系統(tǒng),可以把登陸部分放到vuser_init中,登陸后的通信過程放到Action中,注銷登陸部分放到vuser_end中。如果登陸操作需要放置集合點(diǎn),那么登陸操作也要放到Action中,因?yàn)閷?duì)于LoadRunner,vuser_init中不能添加集合點(diǎn)。在其他情況下,只要把操作部分放到Action中即可。在重復(fù)回放測(cè)試腳本時(shí),vuser_init和vuser_end中的內(nèi)容只會(huì)執(zhí)行一次,重復(fù)執(zhí)行的只是Action中的部分。
如果傳感器節(jié)點(diǎn)和簇節(jié)點(diǎn)在與系統(tǒng)通信過程中,提交了一些數(shù)據(jù)(例如要增加數(shù)據(jù)庫記錄)。這些操作都被記錄到了腳本中。當(dāng)多個(gè)虛擬用戶運(yùn)行腳本時(shí),都會(huì)提交相同的記錄,這不僅不符合實(shí)際運(yùn)行情況,而且有可能引起沖突。為了更加真實(shí)地模擬實(shí)際環(huán)境,需要各種各樣的輸入。LoadRunner提供了參數(shù)化輸入方式。用參數(shù)表示用戶的腳本可以大大縮短腳本的長(zhǎng)度,同時(shí)還可以使用不同的數(shù)值對(duì)腳本進(jìn)行測(cè)試。
參數(shù)化主要包含兩項(xiàng)任務(wù):(1)在腳本中用參數(shù)取代常量值;(2)設(shè)置參數(shù)的屬性以及數(shù)據(jù)源。LoadRunner中支持的參數(shù)類型有DateTime、Group Name、Load Generator Name、Iteration Number、Random Number、Unique Number、Vuser ID、File、User Defined Function等。
2.2.3 創(chuàng)建運(yùn)行場(chǎng)景
運(yùn)行場(chǎng)景描述在測(cè)試和仿真活動(dòng)中發(fā)生的各種事件。一個(gè)運(yùn)行場(chǎng)景包括一個(gè)運(yùn)行虛擬用戶活動(dòng)的Load Generator機(jī)器列表,一個(gè)測(cè)試腳本的列表以及大量的虛擬用戶和虛擬用戶組。
2.2.4 運(yùn)行測(cè)試
只需按照預(yù)定的場(chǎng)景,執(zhí)行測(cè)試和仿真即可。
2.2.5 監(jiān)視場(chǎng)景
在運(yùn)行過程中,可以監(jiān)視各個(gè)服務(wù)器的運(yùn)行情況(Database Server、Web Server等)。監(jiān)視場(chǎng)景可通過添加性能計(jì)數(shù)器來實(shí)現(xiàn)。
2.2.6 分析測(cè)試和仿真結(jié)果
在這一步中,需要分析大量的數(shù)據(jù)和圖表,生成各種不同的報(bào)告,最后得出結(jié)論。
2.3 運(yùn)用LoadRunner對(duì)無線傳感器應(yīng)用系統(tǒng)進(jìn)行測(cè)試和仿真
無線傳感器節(jié)點(diǎn)與系統(tǒng)之間基于GPRS通過TCP協(xié)議進(jìn)行通信,系統(tǒng)開發(fā)過程中,為了縮短項(xiàng)目周期,硬件研發(fā)與軟件研發(fā)同步進(jìn)行。在項(xiàng)目初期即確定了傳感器節(jié)點(diǎn)和后臺(tái)系統(tǒng)之間的接口、交換數(shù)據(jù)的格式。硬件研發(fā)中選取了幾種方案,但是沒有定型,計(jì)劃在項(xiàng)目進(jìn)行中根據(jù)軟硬件之間的銜接情況做出最后的決定,然而系統(tǒng)對(duì)性能的要求比較苛刻,如果根據(jù)項(xiàng)目預(yù)定的規(guī)模分別按照幾種方案制出所有的傳感器節(jié)點(diǎn),其研發(fā)成本會(huì)相當(dāng)高,經(jīng)討論決定引入LoadRunner來進(jìn)行傳感器節(jié)點(diǎn)的仿真,以壓縮研發(fā)成本,同時(shí),又可以測(cè)試后臺(tái)系統(tǒng)的性能是否能夠滿足用戶需求。
由于篇幅所限,這里僅附上Virtual User Generator的部分用戶腳本:
(1)在vuser_init中打開相應(yīng)的TCP連接
vuser_init()
{
int rc;
lrs_startup(257); //建立連接
rc=lrs_create_socket("userid","TCP","RemoteHost=
192.168.1.101:16688",LrsLastArg);
if(rc==0)
//連接成功建立
lr_output_message("Socket was successfully created ");
else
//連接建立失敗,報(bào)告錯(cuò)誤碼
lr_output_message("An error occurred while creating
the socket, Error Code: %d", rc);
return 0;
}
(2)在Action中對(duì)傳感器簇節(jié)點(diǎn)與系統(tǒng)的通信進(jìn)行仿真,為了真實(shí)模擬簇節(jié)點(diǎn)與系統(tǒng)的通信過程,對(duì)發(fā)送的數(shù)據(jù)databuf進(jìn)行了參數(shù)化,部分代碼如下:
…… //建立集合點(diǎn)
lr_rendezvous("send"); //事務(wù)開始
lr_start_transaction("send");
//模擬簇節(jié)點(diǎn)向系統(tǒng)發(fā)送數(shù)據(jù)
lrs_send("userid", "databuf", LrsLastArg);
……
lr_end_transaction("send");
……
vuser_end中關(guān)閉TCP連接,腳本略。
(3)在確定運(yùn)行場(chǎng)景時(shí),根據(jù)系統(tǒng)需求,對(duì)集合點(diǎn)send處的用戶確定為100,可以模擬100個(gè)簇節(jié)點(diǎn)同時(shí)向系統(tǒng)發(fā)送數(shù)據(jù)。在運(yùn)行場(chǎng)景的過程中,對(duì)服務(wù)器CPU、內(nèi)存和硬盤相關(guān)的計(jì)數(shù)器進(jìn)行了觀測(cè),分別如圖2、圖3、圖4所示,同時(shí)觀測(cè)了服務(wù)器的.net、sql server相關(guān)計(jì)數(shù)器(均處于正常范圍),網(wǎng)絡(luò)接口的發(fā)包出錯(cuò)情況和收包出錯(cuò)情況(檢測(cè)過程中均為0),結(jié)果表明,系統(tǒng)能夠很好地滿足設(shè)計(jì)要求。
無線傳感器網(wǎng)絡(luò)作為21世紀(jì)的一項(xiàng)重要高新技術(shù),已經(jīng)得到廣大工程技術(shù)人員和科研人員的廣泛關(guān)注。本文在無線傳感器網(wǎng)絡(luò)應(yīng)用開發(fā)中首次將LoadRunner引入開發(fā)過程,對(duì)傳感器節(jié)點(diǎn)和簇節(jié)點(diǎn)與后臺(tái)系統(tǒng)的通信進(jìn)行了模擬和仿真,有效地提高了無線傳感器網(wǎng)絡(luò)系統(tǒng)開發(fā)中硬件和軟件研發(fā)的并行度,縮短了開發(fā)周期,大大降低了開發(fā)成本,取得了良好的效果。
參考文獻(xiàn)
[1] AKYILDIZ I F,SU W,SANKARASUBRAMANIAM Y,et al. Wireless sensor networks:a survey[J].Computer Networks,2002,38(4):393-422.
[2] 馬華東,陶丹.多媒體傳感器網(wǎng)絡(luò)及其研究進(jìn)展[J].軟件學(xué)報(bào),2006,17(9):2013-2028.
[3] 孫利民,李建中,陳渝,等.無線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2005.
[4] 李建中,李金寶,石勝飛.傳感器網(wǎng)絡(luò)及其數(shù)據(jù)管理的概念、問題與進(jìn)展[J].軟件學(xué)報(bào),2003,14(10):1717-1727.
[5] 任豐原,黃海寧,林闖.無線傳感器網(wǎng)絡(luò)[J].軟件學(xué)報(bào),2003,14(7):1282-1291.
[6] 李建中,高宏.無線傳感器網(wǎng)絡(luò)的研究進(jìn)展[J].計(jì)算機(jī)研究與發(fā)展,2008,45(1):1-15.
[7] 李志剛,周興社.傳感器網(wǎng)絡(luò)[J].計(jì)算機(jī)應(yīng)用研究,2004(12):9-12.
[8] 李怡,周國(guó)祥.基于LoadRunner的一種性能測(cè)試流程方案研究與設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用研究,2009,26(11):4143-4145.
[9] 赫建營(yíng),晏海華,劉超,等.一種有效的Web性能測(cè)試方法及其應(yīng)用[J].計(jì)算機(jī)應(yīng)用研究,2007,24(1):275-277.
[10] 浦云明,范明紅,許明娜.Web應(yīng)用系統(tǒng)負(fù)載測(cè)試[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(11):120-123.
[11] 文俊浩,桑春艷,何盼.電子政務(wù)系統(tǒng)性能測(cè)試應(yīng)用研究[J].計(jì)算機(jī)科學(xué),2009,36(4):179-180.
[12] 龐永剛,王慧強(qiáng),鄭瑞娟.用于網(wǎng)絡(luò)可信性評(píng)測(cè)的事件注入技術(shù)仿真研究[J].系統(tǒng)仿真學(xué)報(bào),2008,20(10):2713-2717.