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