《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > LoadRunner在無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)中的應(yīng)用
LoadRunner在無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)中的應(yīng)用
來(lái)源:微型機(jī)與應(yīng)用2010年第14期
吉向東
(襄樊學(xué)院 物理與電子工程學(xué)院,,湖北 襄樊441053)
摘要: 討論了LoadRunner在無(wú)線傳感器網(wǎng)絡(luò)應(yīng)用系統(tǒng)開(kāi)發(fā)中的應(yīng)用,。無(wú)線傳感器節(jié)點(diǎn)和簇節(jié)點(diǎn)作為數(shù)據(jù)采集和預(yù)處理節(jié)點(diǎn),,需要向后臺(tái)系統(tǒng)發(fā)送大量的數(shù)據(jù),。首次將LoadRunner引入無(wú)線傳感器網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)過(guò)程,對(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)目工期,。
Abstract:
Key words :

摘  要: 討論了LoadRunner無(wú)線傳感器網(wǎng)絡(luò)應(yīng)用系統(tǒng)開(kāi)發(fā)中的應(yīng)用。無(wú)線傳感器節(jié)點(diǎn)和簇節(jié)點(diǎn)作為數(shù)據(jù)采集和預(yù)處理節(jié)點(diǎn),,需要向后臺(tái)系統(tǒng)發(fā)送大量的數(shù)據(jù),。首次將LoadRunner引入無(wú)線傳感器網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)過(guò)程,對(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ú)線傳感器網(wǎng)絡(luò),;性能測(cè)試

1 無(wú)線傳感器網(wǎng)絡(luò)
    無(wú)線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks)是由部署在觀測(cè)環(huán)境中的大量微型廉價(jià)低功耗的傳感器節(jié)點(diǎn)以無(wú)線多跳通信方式構(gòu)成的網(wǎng)絡(luò)系統(tǒng)[1],。根據(jù)信息獲取和處理技術(shù),可以將無(wú)線傳感器網(wǎng)絡(luò)劃分為傳統(tǒng)無(wú)線傳感器網(wǎng)絡(luò)和多媒體無(wú)線傳感器網(wǎng)絡(luò)[2],。
    無(wú)線傳感器網(wǎng)絡(luò)將邏輯上的信息世界與真實(shí)的物理世界融合在一起,,深刻地改變了人與自然的交互方式[3]。可廣泛地應(yīng)用于軍事,、工農(nóng)業(yè)控制,、生物醫(yī)療、環(huán)境監(jiān)測(cè)等諸多領(lǐng)域[4-7],。美國(guó)《商業(yè)周刊》認(rèn)為,,WSN是全球未來(lái)四大高技術(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é)已開(kāi)始對(duì)該領(lǐng)域的探索,。但是這些研究成果尚處于起步階段,,距離實(shí)際應(yīng)用還相差甚遠(yuǎn)[2]。目前關(guān)于WSN嵌入式軟件系統(tǒng)方面的研究成果主要是嵌入式操作系統(tǒng),,加利福尼亞大學(xué)伯克利分校研究開(kāi)發(fā)了一個(gè)傳感器節(jié)點(diǎn)操作系統(tǒng)TinyOS,,加利福尼亞大學(xué)洛杉磯分校研究了傳感器節(jié)點(diǎn)嵌入式操作系統(tǒng)SOS。而對(duì)WSN應(yīng)用軟件的研究開(kāi)發(fā)工作則遠(yuǎn)遠(yuǎn)落后于其他方面的研究,還有大量的工作需要完成, 諸多新問(wèn)題尚待發(fā)現(xiàn),,全新的應(yīng)用尚待開(kāi)發(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ú)線傳感器網(wǎng)絡(luò)應(yīng)用系統(tǒng)的開(kāi)發(fā),提出了LoadRunner在無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)中的測(cè)試和仿真流程,,有效解決了無(wú)線傳感器網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)中存在的開(kāi)發(fā)成本高,、開(kāi)發(fā)周期長(zhǎng)、沒(méi)有性能測(cè)試或者性能測(cè)試不充分等問(wèn)題,,取得了良好的效果,。
2 將LoadRunner引入無(wú)線傳感器網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)
2.1 LoadRunner

    LoadRunner是一種預(yù)測(cè)系統(tǒng)行為和性能的工業(yè)標(biāo)準(zhǔn)級(jí)負(fù)載測(cè)試工具。通過(guò)模擬上千萬(wàn)用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測(cè)來(lái)確認(rèn)和查找問(wè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)生成千上萬(wàn)個(gè)用戶訪問(wèn),,極大地減少負(fù)載測(cè)試所需的硬件和人力資源,。Controller可以設(shè)定負(fù)載方案、業(yè)務(wù)流程組合和虛擬用戶數(shù)量,。通過(guò)Controller的Rendezvous功能既能建立起持續(xù)且循環(huán)的負(fù)載,,又能管理和驅(qū)動(dòng)負(fù)載測(cè)試方案。同時(shí),,還可以利用它的日程計(jì)劃服務(wù)來(lái)定義用戶在什么時(shí)候訪問(wèn)系統(tǒng)以產(chǎn)生負(fù)載,,從而將測(cè)試過(guò)程自動(dòng)化。Analysis負(fù)責(zé)收集匯總所有的測(cè)試數(shù)據(jù),,并提供高級(jí)的分析和報(bào)告工具,,以便迅速查找到性能問(wèn)題并追溯原由。使用LoadRunner的Web交易細(xì)節(jié)監(jiān)測(cè)器,,可以查看所有的圖象,、框架和文本下載所需的時(shí)間。另外,,Web交易細(xì)節(jié)監(jiān)測(cè)器能夠分解用于客戶端,、網(wǎng)絡(luò)和服務(wù)器上端到端的反應(yīng)時(shí)間,便于確認(rèn)問(wèn)題,,定位查找真正出錯(cuò)的組件,。例如可以將網(wǎng)絡(luò)延時(shí)進(jìn)行分解,以判斷DNS解析時(shí)間,、連接服務(wù)器或SSL認(rèn)證所花費(fèi)的時(shí)間,。通過(guò)使用LoadRunner的分析工具,可以很快地查找到出錯(cuò)的位置和原因并作出相應(yīng)的調(diào)整,。
    LoadRunner內(nèi)含集成的實(shí)時(shí)監(jiān)測(cè)器,,在負(fù)載測(cè)試過(guò)程中,可以隨時(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ù)庫(kù)的實(shí)時(shí)性能,,從而更快地發(fā)現(xiàn)系統(tǒng)瓶頸和其他問(wèn)題所在。LoadRunner還通過(guò)可以無(wú)限精確重復(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)的組成,,畫(huà)出系統(tǒng)的組成圖。組成圖主要包括系統(tǒng)中所有的組件(如傳感器節(jié)點(diǎn)和簇節(jié)點(diǎn))的數(shù)目,,組件部署的方式以及相互之間的通信方式,,傳感器節(jié)點(diǎn)、簇節(jié)點(diǎn),、數(shù)據(jù)庫(kù)服務(wù)器,、系統(tǒng)服務(wù)器的配置。
2.2.2 開(kāi)發(fā)測(cè)試和仿真腳本
    可以使用LoadRunner中虛擬用戶的活動(dòng)來(lái)模擬傳感器節(jié)點(diǎn)和簇節(jié)點(diǎn)與系統(tǒng)的通信,,而虛擬用戶的活動(dòng)就包含在測(cè)試腳本中,,因此測(cè)試腳本對(duì)系統(tǒng)測(cè)試和仿真而言非常重要。
    開(kāi)發(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還可以分成無(wú)數(shù)多個(gè)部分。
    對(duì)于傳感器節(jié)點(diǎn)和簇節(jié)點(diǎn)需要登陸的系統(tǒng),,可以把登陸部分放到vuser_init中,,登陸后的通信過(guò)程放到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)通信過(guò)程中,,提交了一些數(shù)據(jù)(例如要增加數(shù)據(jù)庫(kù)記錄)。這些操作都被記錄到了腳本中,。當(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)行過(guò)程中,,可以監(jiān)視各個(gè)服務(wù)器的運(yùn)行情況(Database Server、Web Server等),。監(jiān)視場(chǎng)景可通過(guò)添加性能計(jì)數(shù)器來(lái)實(shí)現(xiàn),。
2.2.6 分析測(cè)試和仿真結(jié)果
    在這一步中,需要分析大量的數(shù)據(jù)和圖表,,生成各種不同的報(bào)告,,最后得出結(jié)論。
2.3 運(yùn)用LoadRunner對(duì)無(wú)線傳感器應(yīng)用系統(tǒng)進(jìn)行測(cè)試和仿真
    無(wú)線傳感器節(jié)點(diǎn)與系統(tǒng)之間基于GPRS通過(guò)TCP協(xié)議進(jìn)行通信,,系統(tǒng)開(kāi)發(fā)過(guò)程中,,為了縮短項(xiàng)目周期,硬件研發(fā)與軟件研發(fā)同步進(jìn)行,。在項(xiàng)目初期即確定了傳感器節(jié)點(diǎn)和后臺(tái)系統(tǒng)之間的接口,、交換數(shù)據(jù)的格式。硬件研發(fā)中選取了幾種方案,,但是沒(méi)有定型,,計(jì)劃在項(xiàng)目進(jìn)行中根據(jù)軟硬件之間的銜接情況做出最后的決定,,然而系統(tǒng)對(duì)性能的要求比較苛刻,如果根據(jù)項(xiàng)目預(yù)定的規(guī)模分別按照幾種方案制出所有的傳感器節(jié)點(diǎn),,其研發(fā)成本會(huì)相當(dāng)高,,經(jīng)討論決定引入LoadRunner來(lái)進(jìn)行傳感器節(jié)點(diǎn)的仿真,以壓縮研發(fā)成本,,同時(shí),,又可以測(cè)試后臺(tái)系統(tǒng)的性能是否能夠滿足用戶需求。
    由于篇幅所限,,這里僅附上Virtual User Generator的部分用戶腳本:
    (1)在vuser_init中打開(kāi)相應(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)的通信過(guò)程,,對(duì)發(fā)送的數(shù)據(jù)databuf進(jìn)行了參數(shù)化,,部分代碼如下:
    ……    //建立集合點(diǎn)
    lr_rendezvous("send");    //事務(wù)開(kāi)始
    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)景的過(guò)程中,,對(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è)過(guò)程中均為0),,結(jié)果表明,,系統(tǒng)能夠很好地滿足設(shè)計(jì)要求。

    無(wú)線傳感器網(wǎng)絡(luò)作為21世紀(jì)的一項(xiàng)重要高新技術(shù),,已經(jīng)得到廣大工程技術(shù)人員和科研人員的廣泛關(guān)注,。本文在無(wú)線傳感器網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)中首次將LoadRunner引入開(kāi)發(fā)過(guò)程,對(duì)傳感器節(jié)點(diǎn)和簇節(jié)點(diǎn)與后臺(tái)系統(tǒng)的通信進(jìn)行了模擬和仿真,,有效地提高了無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)開(kāi)發(fā)中硬件和軟件研發(fā)的并行度,,縮短了開(kāi)發(fā)周期,大大降低了開(kāi)發(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ú)線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,,2005.
[4] 李建中,,李金寶,石勝飛.傳感器網(wǎng)絡(luò)及其數(shù)據(jù)管理的概念,、問(wèn)題與進(jìn)展[J].軟件學(xué)報(bào),,2003,14(10):1717-1727.
[5] 任豐原,,黃海寧,,林闖.無(wú)線傳感器網(wǎng)絡(luò)[J].軟件學(xué)報(bào),2003,,14(7):1282-1291.
[6] 李建中,,高宏.無(wú)線傳感器網(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。