本發(fā)明涉及一種基于多線程的傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試方法及系統(tǒng),具體設(shè)計(jì)一種針對(duì)不同協(xié)議的多任務(wù)測(cè)試方法,屬于無線傳感器網(wǎng)絡(luò)測(cè)試領(lǐng)域。
背景技術(shù):
作為國(guó)家傳感網(wǎng)標(biāo)準(zhǔn)工作組中的pg5標(biāo)識(shí)項(xiàng)目組,積極地投身于傳感網(wǎng)標(biāo)識(shí)領(lǐng)域的標(biāo)準(zhǔn)制定,不斷地推動(dòng)了傳感網(wǎng)的發(fā)展。傳感器網(wǎng)絡(luò)作為物聯(lián)網(wǎng)技術(shù)的重要組成部分,在大規(guī)模的應(yīng)用和發(fā)展過程當(dāng)中,利用傳感節(jié)點(diǎn)標(biāo)識(shí)符對(duì)傳感節(jié)點(diǎn)身份的唯一標(biāo)識(shí),使得各種異構(gòu)網(wǎng)通過廣域網(wǎng)互通互聯(lián)。在傳感節(jié)點(diǎn)標(biāo)識(shí)符應(yīng)用中,通過對(duì)傳感節(jié)點(diǎn)唯一標(biāo)識(shí)符進(jìn)行解析獲得傳感節(jié)點(diǎn)的基本屬性信息,應(yīng)用屬性信息,傳感器的配置信息和傳感器的實(shí)時(shí)感知信息,從而實(shí)現(xiàn)在網(wǎng)絡(luò)中對(duì)標(biāo)識(shí)信息的共享,通過對(duì)傳感節(jié)點(diǎn)標(biāo)識(shí)符的解析測(cè)試,能夠保證信息的正確性,因此,傳感網(wǎng)傳感節(jié)點(diǎn)標(biāo)識(shí)符測(cè)試成為國(guó)內(nèi)外研究的熱點(diǎn),在《傳感器網(wǎng)絡(luò)傳感節(jié)點(diǎn)標(biāo)識(shí)符解析一致性測(cè)試方法》專利中,只是對(duì)節(jié)點(diǎn)標(biāo)識(shí)符的解析過程進(jìn)行了一致性測(cè)試,對(duì)多節(jié)點(diǎn)多任務(wù)的測(cè)試沒有有效的解決辦法。
多線程結(jié)構(gòu)是一個(gè)進(jìn)程中的多個(gè)線程同時(shí)執(zhí)行測(cè)試任務(wù)的結(jié)構(gòu),主要是通過線程間的切換來完成多任務(wù)測(cè)試任務(wù)。多線程結(jié)構(gòu)中,測(cè)試程序在一個(gè)進(jìn)程中執(zhí)行,這個(gè)進(jìn)程擁有一個(gè)簡(jiǎn)單內(nèi)存地址,每個(gè)進(jìn)程都有一個(gè)線程,即主線程,它只有一個(gè)控制流程來控制所有步驟的執(zhí)行,進(jìn)程可以創(chuàng)建或刪除其他不同的線程來完成多任務(wù)測(cè)試任務(wù)。多線程結(jié)構(gòu)的一個(gè)重要特點(diǎn)就是所有線程都存在于一個(gè)進(jìn)程中,它們能更好的共享測(cè)試資源和在線程間通信,而且在多線間切換相對(duì)于在多進(jìn)程間切換其開銷要小的多,因此多線程結(jié)構(gòu)是一種較為合適的多任務(wù)測(cè)試結(jié)構(gòu)。測(cè)試系統(tǒng)能夠根據(jù)測(cè)試資源模型和測(cè)試任務(wù)集模型,動(dòng)態(tài)的管理、規(guī)劃、調(diào)度測(cè)試任務(wù)和測(cè)試資源,同時(shí)完成多個(gè)測(cè)試任務(wù)或者任務(wù)組合的測(cè)試,充分發(fā)揮系統(tǒng)的測(cè)試能力,提高測(cè)試吞吐量和測(cè)試效率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種基于多線程的傳感網(wǎng)傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試方法及系統(tǒng),該系統(tǒng)用于驗(yàn)證傳感節(jié)點(diǎn)標(biāo)識(shí)符解析的正確性以及過程的完整性;該方法用于實(shí)現(xiàn)不同協(xié)議下的傳感網(wǎng)中多傳感節(jié)點(diǎn)的測(cè)試任務(wù)。測(cè)試用戶通過測(cè)試系統(tǒng)提供的web人機(jī)交互界面提出標(biāo)識(shí)符解析測(cè)試請(qǐng)求,測(cè)試系統(tǒng)根據(jù)用戶的測(cè)試請(qǐng)求生成對(duì)應(yīng)的測(cè)試計(jì)劃,配置測(cè)試環(huán)境,分配測(cè)試資源,調(diào)度測(cè)試執(zhí)行模塊完成測(cè)試并生成測(cè)試報(bào)告。
傳感網(wǎng)傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試系統(tǒng)主要分為3個(gè)部分:應(yīng)用服務(wù)層、通信系統(tǒng)、被測(cè)系統(tǒng)。被測(cè)系統(tǒng)包括測(cè)試路由器和被測(cè)節(jié)點(diǎn),測(cè)試路由器在測(cè)試網(wǎng)絡(luò)中擔(dān)任協(xié)調(diào)器的功能,能夠調(diào)用測(cè)試代理功能對(duì)被測(cè)實(shí)現(xiàn)進(jìn)行激勵(lì),轉(zhuǎn)發(fā)測(cè)試代理命令和上傳響應(yīng)報(bào)文至上位機(jī)。測(cè)試路由器的配置包括角色配置、panid配置、64位ieee地址配置、信道號(hào)配置。角色配置是指測(cè)試路由器通過宏定義給予設(shè)備類型標(biāo)識(shí),控制設(shè)備的啟動(dòng),發(fā)送角色配置命令從而實(shí)現(xiàn)相應(yīng)的角色配置;panid配置是將panid寫進(jìn)非易失存儲(chǔ)器,復(fù)位后協(xié)調(diào)器重新啟動(dòng)并從存儲(chǔ)器中讀出panid,配置完成后將配置狀態(tài)返回上位機(jī);64位ieee地址配置可通過flash燒入,也可以通過將其寫進(jìn)非易失存儲(chǔ)器,完成后將配置狀態(tài)返回上位機(jī)。
應(yīng)用服務(wù)層包括應(yīng)用服務(wù)組件和測(cè)試功能支撐服務(wù)組件。應(yīng)用服務(wù)組件為標(biāo)識(shí)符測(cè)試提供服務(wù),包括人機(jī)交互界面,提供測(cè)試案例的編輯窗口,測(cè)試案例根據(jù)傳感節(jié)點(diǎn)標(biāo)識(shí)符編制規(guī)則標(biāo)準(zhǔn)和傳感器網(wǎng)絡(luò)傳感節(jié)點(diǎn)標(biāo)識(shí)符解析規(guī)范編寫。所有測(cè)試案例以及案例關(guān)聯(lián)信息通過案例存儲(chǔ)模塊存儲(chǔ)于后臺(tái)數(shù)據(jù)庫中以便調(diào)用執(zhí)行測(cè)試。考慮到自動(dòng)化測(cè)試系統(tǒng)的靈活性和降低模塊間的耦合性,將測(cè)試邏輯和測(cè)試數(shù)據(jù)分離,以及xml具有簡(jiǎn)單、開放、跨平臺(tái)等特性,采用xml這種標(biāo)記語言來描述和保存測(cè)試套,并以xml驅(qū)動(dòng)整個(gè)測(cè)試系統(tǒng)自動(dòng)完成定義的測(cè)試操作和測(cè)試結(jié)果比對(duì),輸出測(cè)試結(jié)果和測(cè)試詳細(xì)的日志文件;具體的自定義的傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試?yán)膞ml標(biāo)簽為<ictest>表示標(biāo)識(shí)符解析測(cè)試,<tgroup>表示測(cè)試組,<tcase>表示測(cè)試?yán)?lt;tstep>表示測(cè)試步;標(biāo)識(shí)符輸入接口提供系統(tǒng)從傳感網(wǎng)中獲取傳感節(jié)點(diǎn)身份標(biāo)識(shí)符的顯示功能;測(cè)試監(jiān)控模塊用于測(cè)試步的實(shí)時(shí)監(jiān)測(cè),及時(shí)獲取測(cè)試結(jié)果的狀態(tài)信息;地址映射管理模塊為存儲(chǔ)測(cè)試路由器地址與傳感節(jié)點(diǎn)身份標(biāo)識(shí)符的映射關(guān)系并進(jìn)行相應(yīng)的管理。測(cè)試功能支撐服務(wù)組 件主要實(shí)現(xiàn)測(cè)試線程的管理與調(diào)度,完成測(cè)試任務(wù)的執(zhí)行。測(cè)試系統(tǒng)創(chuàng)建發(fā)送線程負(fù)責(zé)向客戶端發(fā)送數(shù)據(jù),創(chuàng)建接收線程負(fù)責(zé)接收客戶端上傳的數(shù)據(jù),創(chuàng)建解析線程負(fù)責(zé)解析客戶端上傳的數(shù)據(jù),創(chuàng)建存儲(chǔ)線程負(fù)責(zé)存儲(chǔ)客戶端上傳的數(shù)據(jù)和解析結(jié)果。
測(cè)試用戶通過人機(jī)交互界面提供的服務(wù)接口根據(jù)測(cè)試需求提出對(duì)應(yīng)的測(cè)試請(qǐng)求,創(chuàng)建測(cè)試項(xiàng)目,編輯ics和ixit,ics管理模塊根據(jù)ics信息在抽象測(cè)試集中選取相關(guān)案例生成可執(zhí)行測(cè)試集,ixit表單是對(duì)測(cè)試中心信息、用戶信息、測(cè)試報(bào)告接收人、抽象測(cè)試集概要信息和附加信息等進(jìn)行確認(rèn)。
進(jìn)一步,根據(jù)可執(zhí)行測(cè)試集的測(cè)試案例的測(cè)試步信息,調(diào)用測(cè)試功能支撐服務(wù)組件中的測(cè)試命令管理模塊中的相關(guān)命令,實(shí)現(xiàn)測(cè)試過程中的測(cè)試配置、時(shí)序控制、測(cè)試協(xié)同,拓?fù)淇刂频裙δ?,若測(cè)試設(shè)備返回狀態(tài)信息,測(cè)試服務(wù)器分析返回的狀態(tài)并判斷設(shè)備是否在線,如果在線,會(huì)顯示設(shè)備的ip地址和相應(yīng)的端口號(hào)。
進(jìn)一步,測(cè)試命令通過通信系統(tǒng)下傳到被測(cè)系統(tǒng)中的基于6lowpan網(wǎng)關(guān)或基于zigbee網(wǎng)關(guān)?;?lowpan的傳感網(wǎng)中,網(wǎng)關(guān)建立的是傳感節(jié)點(diǎn)身份標(biāo)識(shí)符與ip地址的映射關(guān)系;基于zigbee的傳感網(wǎng)中,網(wǎng)關(guān)建立的是傳感節(jié)點(diǎn)身份標(biāo)識(shí)符與網(wǎng)內(nèi)通信地址的映射關(guān)系。網(wǎng)關(guān)根據(jù)已建立的地址映射關(guān)系,將測(cè)試服務(wù)器發(fā)送的標(biāo)識(shí)符解析測(cè)試命令通過其上的無線射頻模塊轉(zhuǎn)發(fā)給被測(cè)傳感節(jié)點(diǎn)。
進(jìn)一步,傳感節(jié)點(diǎn)接收到測(cè)試命令上傳唯一身份標(biāo)識(shí)符,利用相關(guān)字符串匹配算法對(duì)身份標(biāo)識(shí)符進(jìn)行符合性判斷。該字符串匹配算法的時(shí)間復(fù)雜度為o(m*n),每次匹配時(shí),將模式串(p)最后t個(gè)字符設(shè)為后綴,當(dāng)t=1+length_p/2,消耗時(shí)間最少,效率最高。若節(jié)點(diǎn)身份標(biāo)識(shí)符正確,則將每個(gè)傳感節(jié)點(diǎn)的oid解析測(cè)試?yán)鞲芯W(wǎng)標(biāo)識(shí)解析測(cè)試?yán)?、傳感層?biāo)識(shí)解析測(cè)試?yán)M成一個(gè)測(cè)試組,調(diào)用線程池中等待的線程;在解析測(cè)試時(shí),由于每一個(gè)測(cè)試?yán)紴橐粋€(gè)獨(dú)立的解析測(cè)試子系統(tǒng),定義解析測(cè)試函數(shù)為at,naptr資源記錄為n,測(cè)試服務(wù)器通過解析測(cè)試得到相應(yīng)的服務(wù)地址為sa。
namespacen={n1,n2,...,nn}
namespacesa={sa1,sa2,...,san}
由迭代測(cè)試可知:sai=at(ni);
則第n個(gè)測(cè)試案例的解析測(cè)試函數(shù)為:
在解析測(cè)試過程中,若解析服務(wù)器群返回的naptr資源記錄符合標(biāo)準(zhǔn)規(guī)范,則進(jìn)行下一測(cè)試,解析驗(yàn)證過程為v,有
在標(biāo)識(shí)符解析服務(wù)器返回naptr資源記錄至服務(wù)器后,測(cè)試服務(wù)器在驗(yàn)證naptr資源記錄的正確性后解析得到相應(yīng)的服務(wù)地址,且該地址作為下一個(gè)測(cè)試案例的輸入。
進(jìn)一步,多任務(wù)管理器為每個(gè)被測(cè)節(jié)點(diǎn)分配一個(gè)測(cè)試線程,利用基于多線程執(zhí)行時(shí)間的多級(jí)反饋隊(duì)列調(diào)度算法進(jìn)行線程的調(diào)度,從而完成多個(gè)傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試任務(wù),同時(shí)將測(cè)試的實(shí)時(shí)數(shù)據(jù)信息并行地存入與之對(duì)應(yīng)的數(shù)據(jù)庫中進(jìn)行保存,算法步驟如下:
1)給定測(cè)試任務(wù)集g={g1,g2,g3,...,gm}和設(shè)備資源集r={r1,r2,r3,...,rm};任務(wù)gj(j=1,2,3,...,m)的測(cè)試方案集為
2)設(shè)置每個(gè)測(cè)試線程的狀態(tài)標(biāo)識(shí)(0或1),分析進(jìn)入就緒隊(duì)列中的線程執(zhí)行時(shí)間,系統(tǒng)分配計(jì)時(shí)器,按照默認(rèn)的時(shí)間片大小,計(jì)算出n個(gè)測(cè)試線程的預(yù)估執(zhí)行的時(shí)間值。
3)每個(gè)隊(duì)列的時(shí)間片大小ti采用中位數(shù)的方法計(jì)算得到,具體為:系統(tǒng)默認(rèn)的時(shí)間片大小設(shè)置為t0(t0為系統(tǒng)根據(jù)測(cè)試線程預(yù)估的執(zhí)行時(shí)間),m為線程 按升序排列后位于中間的數(shù)值,n為當(dāng)前執(zhí)行隊(duì)列中的線程的數(shù)量;時(shí)間片計(jì)算公式為:
也可以表示為區(qū)間的形式,公式為
4)系統(tǒng)中的測(cè)試線程經(jīng)過第一級(jí)隊(duì)列的執(zhí)行以后,有近一半的線程結(jié)束;經(jīng)過第二級(jí)隊(duì)列的執(zhí)行以后,剩下的近一半線程結(jié)束,依此類推,最多經(jīng)過六級(jí)隊(duì)列的執(zhí)行以后,測(cè)試線程就會(huì)執(zhí)行完畢。
5)線程間的切換次數(shù)隨著每級(jí)隊(duì)列線程數(shù)目的減少而減少,從而減小了系統(tǒng)調(diào)度的額外的開銷,線程間的切換次數(shù)可用公式計(jì)算得出:
其中nt是線程間切換的次數(shù),n是隊(duì)列的個(gè)數(shù),mi是每個(gè)隊(duì)列中的線程的個(gè)數(shù)。
進(jìn)一步,標(biāo)識(shí)符解析測(cè)試產(chǎn)生的數(shù)據(jù)信息需要實(shí)時(shí)連接后臺(tái)數(shù)據(jù)庫,設(shè)計(jì)的數(shù)據(jù)庫連接池分為建立、管理和釋放連接三個(gè)狀態(tài),內(nèi)設(shè)有空閑的和已分配的隊(duì)列,分別用于存放未分配和已分配的連接。當(dāng)測(cè)試系統(tǒng)需要進(jìn)行數(shù)據(jù)庫操作時(shí),可以從空閑隊(duì)列中取出一個(gè)連接,分配給測(cè)試應(yīng)用程序,并注冊(cè)到已分配隊(duì)列。在連接池中始終動(dòng)態(tài)地維持一定量的空閑連接數(shù),可以應(yīng)對(duì)實(shí)時(shí)的測(cè)試請(qǐng)求任務(wù)。
進(jìn)一步,測(cè)試數(shù)據(jù)經(jīng)圖表化處理生成完整的測(cè)試報(bào)告,通過人機(jī)交互界面呈現(xiàn)給用戶。
附圖說明
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述,其中:
圖1是本發(fā)明提供的基于多線程的傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試的整體架構(gòu)示意圖。
圖2是系統(tǒng)中測(cè)試路由器測(cè)試示意圖。
圖3是傳感網(wǎng)傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試系統(tǒng)運(yùn)行時(shí)序圖。
圖4是xml測(cè)試腳本解析流程圖。
圖5是傳感網(wǎng)傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試系統(tǒng)線程池管理示意圖。
圖6是傳感網(wǎng)傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試系統(tǒng)多任務(wù)調(diào)度中心工作時(shí)序圖。
具體實(shí)施方式
以下將結(jié)合附圖,對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)的描述。
如圖1所示,基于多線程的傳感網(wǎng)傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試系統(tǒng)主要分為三部分:應(yīng)用層平臺(tái)、通信系統(tǒng)、被測(cè)系統(tǒng)。其中被測(cè)系統(tǒng)選用以6lowpan為代表的ip傳感網(wǎng)以及以zigbee為代表的非ip傳感網(wǎng)。測(cè)試設(shè)備包括測(cè)試網(wǎng)關(guān)與被測(cè)傳感節(jié)點(diǎn),系統(tǒng)中測(cè)試網(wǎng)關(guān)擔(dān)任協(xié)調(diào)器、網(wǎng)關(guān)設(shè)備等角色。在測(cè)試進(jìn)行時(shí),測(cè)試網(wǎng)關(guān)對(duì)被測(cè)傳感節(jié)點(diǎn)進(jìn)行激勵(lì),轉(zhuǎn)發(fā)測(cè)試服務(wù)器的測(cè)試命令和上傳被測(cè)傳感節(jié)點(diǎn)的響應(yīng)報(bào)文至測(cè)試服務(wù)器。
通信系統(tǒng)是測(cè)試服務(wù)器和被測(cè)系統(tǒng)進(jìn)行通信的接口,包括tcp/ip通信接口、串口通信接口、802.15.4無線通信接口和擴(kuò)展通信接口。通信系統(tǒng)分為數(shù)據(jù)發(fā)送模塊和數(shù)據(jù)接收模塊,測(cè)試服務(wù)器可以通過數(shù)據(jù)發(fā)送模塊向測(cè)試設(shè)備下發(fā)測(cè)試命令;數(shù)據(jù)接收模塊可以讀取測(cè)試設(shè)備上傳的響應(yīng)信息,并對(duì)響應(yīng)進(jìn)行處理。
應(yīng)用層平臺(tái)主要包括測(cè)試用戶服務(wù)層和測(cè)試功能支撐服務(wù)層。測(cè)試用戶服務(wù)層提供人機(jī)交互的接口,標(biāo)識(shí)符解析測(cè)試案例編輯接口和測(cè)試監(jiān)控接口;測(cè)試功能支撐服務(wù)層提供測(cè)試用例管理模塊,測(cè)試執(zhí)行模塊和測(cè)試結(jié)果分析模塊等。
如圖2所示,測(cè)試路由器在標(biāo)識(shí)符解析測(cè)試系統(tǒng)中起著至關(guān)重要的作用。測(cè)試路由器負(fù)責(zé)激勵(lì)輔助測(cè)試網(wǎng)絡(luò),并使網(wǎng)絡(luò)中的所有設(shè)備加入被測(cè)網(wǎng)關(guān),同時(shí)測(cè)試路由器還通過抓取輔助測(cè)試網(wǎng)絡(luò)發(fā)送給被測(cè)網(wǎng)關(guān)的數(shù)據(jù)報(bào)文,然后轉(zhuǎn)發(fā)給測(cè)試服務(wù)器進(jìn)行分析處理。測(cè)試服務(wù)器通過將測(cè)試路由器捕獲的報(bào)文與自己收到的被測(cè)網(wǎng)關(guān)的報(bào)文進(jìn)行比較,從而驗(yàn)證網(wǎng)關(guān)功能的正確性。具體流程如下:
步驟1:測(cè)試服務(wù)器向被測(cè)網(wǎng)關(guān)發(fā)送傳感節(jié)點(diǎn)標(biāo)識(shí)符解析請(qǐng)求命令;
步驟2:被測(cè)網(wǎng)關(guān)接收到該命令后,將其通過前端數(shù)據(jù)收發(fā)模塊以無線的方式轉(zhuǎn)發(fā)給輔助測(cè)試網(wǎng)絡(luò);
步驟3:相應(yīng)的傳感節(jié)點(diǎn)接收到該命令后將自身攜帶的身份標(biāo)識(shí)符通過無線 方式發(fā)送給被測(cè)網(wǎng)關(guān);與此同時(shí),測(cè)試路由器也將相應(yīng)傳感節(jié)點(diǎn)發(fā)送的數(shù)據(jù)報(bào)文進(jìn)行獲?。?/p>
步驟4:被測(cè)網(wǎng)關(guān)建立接收到的身份標(biāo)識(shí)符與其相應(yīng)的網(wǎng)內(nèi)源地址的映射關(guān)系,然后將其轉(zhuǎn)發(fā)給測(cè)試服務(wù)器;測(cè)試路由器將獲取的傳感節(jié)點(diǎn)發(fā)送的數(shù)據(jù)傳送給測(cè)試服務(wù)器;
步驟5:測(cè)試服務(wù)器將測(cè)試路由器發(fā)送的數(shù)據(jù)報(bào)文與被測(cè)網(wǎng)關(guān)發(fā)送的數(shù)據(jù)報(bào)文進(jìn)行比較,如果二者一致,則被測(cè)網(wǎng)關(guān)的標(biāo)識(shí)符解析功能成功實(shí)現(xiàn);如果不一致,則說明被測(cè)網(wǎng)關(guān)在對(duì)傳感節(jié)點(diǎn)身份標(biāo)識(shí)符解析過程中存在錯(cuò)誤,需要對(duì)其功能進(jìn)一步完善。
如圖3所示為測(cè)試系統(tǒng)運(yùn)行時(shí)序圖,測(cè)試人員通過注冊(cè)信息獲取權(quán)限后,進(jìn)入測(cè)試系統(tǒng)平臺(tái),輸入xml測(cè)試腳本文件,設(shè)置各項(xiàng)測(cè)試參數(shù),對(duì)相關(guān)測(cè)試設(shè)備進(jìn)行設(shè)置。測(cè)試配置完成之后,調(diào)用數(shù)據(jù)通信模塊,發(fā)送測(cè)試執(zhí)行命令,等待接收測(cè)試數(shù)據(jù)。然后數(shù)據(jù)解析模塊將獲得的測(cè)試數(shù)據(jù)按照預(yù)先設(shè)置好的解析規(guī)則進(jìn)行數(shù)據(jù)解析以及將測(cè)試過程數(shù)據(jù)交給測(cè)試視圖進(jìn)行測(cè)試過程顯示。數(shù)據(jù)解析模塊將測(cè)試原始數(shù)據(jù)解析出來的有用信息以及測(cè)試結(jié)果交給存儲(chǔ)模塊進(jìn)行數(shù)據(jù)存儲(chǔ)。數(shù)據(jù)解析將解析的有用信息交給數(shù)據(jù)統(tǒng)計(jì)模塊進(jìn)行數(shù)據(jù)統(tǒng)計(jì),生成測(cè)試結(jié)果,由存儲(chǔ)模塊進(jìn)行測(cè)試存儲(chǔ)測(cè)試結(jié)果。測(cè)試視圖將測(cè)試執(zhí)行過程實(shí)時(shí)、動(dòng)態(tài)的顯示出來,以便測(cè)試人員能夠?qū)崟r(shí)的觀察和控制測(cè)試過程,最后將測(cè)試結(jié)果顯示出來以及生成測(cè)試報(bào)告。
如圖4所示,基于多線程的傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試系統(tǒng)測(cè)試用例采用xml腳本語言編寫,具體的解析流程為:
步驟1:打開自定義的xml測(cè)試腳本文件,讀入字符數(shù)組,并對(duì)字符數(shù)組進(jìn)行分析;
步驟2:遍歷<ictest>標(biāo)簽,讀出測(cè)試用例的信息;
步驟3:遍歷<tcase>標(biāo)簽,讀取測(cè)試?yán)畔ⅲ瑒?chuàng)建類對(duì)象,將信息存入測(cè)試?yán)悓?duì)象中,然后將該類對(duì)象鏈入測(cè)試?yán)湵碇校?/p>
步驟4:遍歷<tstep>標(biāo)簽,讀取測(cè)試步信息,創(chuàng)建類對(duì)象,將信息存入測(cè)試步類對(duì)象中,然后將該類對(duì)象鏈入測(cè)試步鏈表中;
步驟5:遞歸執(zhí)行第三、四步,直到解析出所有測(cè)試?yán)畔ⅰ?/p>
如圖5所示,基于多線程的傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試系統(tǒng)采用線程池模式,在測(cè)試系統(tǒng)啟動(dòng)或處于空閑時(shí)創(chuàng)建一定量的線程保存在線程池中,系統(tǒng)關(guān)閉時(shí)銷毀線程及其設(shè)備資源。當(dāng)有標(biāo)識(shí)解析測(cè)試任務(wù)來時(shí)不需要?jiǎng)?chuàng)建就從線程池中取一線程執(zhí)行任務(wù),執(zhí)行完任務(wù)后又放回至空閑線程池中。如果長(zhǎng)時(shí)間沒有任務(wù)執(zhí)行也可銷毀一定量的線程,使線程池中保持一定的線程數(shù)。若當(dāng)有任務(wù)來時(shí)線程池中沒有空閑線程,且此時(shí)線程數(shù)沒有達(dá)到最大線程數(shù)時(shí),創(chuàng)建新線程。如果達(dá)到最大線程數(shù)而沒有空閑線程時(shí),任務(wù)等待,直到池中有空閑線程。這樣,就可以立即為請(qǐng)求服務(wù),使應(yīng)用程序響應(yīng)更快。而且,通過適當(dāng)?shù)卣{(diào)整線程池中的線程數(shù)目,也就是當(dāng)請(qǐng)求的數(shù)目超過某個(gè)閾值時(shí),就強(qiáng)制其它任何新到的請(qǐng)求一直等待,直到獲得一個(gè)線程來處理為止,從而可以防止資源不足。
如圖6所示為測(cè)試系統(tǒng)多任務(wù)調(diào)度中心工作時(shí)序圖,調(diào)度過程如下:
步驟1:當(dāng)測(cè)試任務(wù)被用戶提交后,多任務(wù)調(diào)度中心通過創(chuàng)建任務(wù)線程池用來對(duì)所有的測(cè)試任務(wù)進(jìn)行管理;
步驟2:系統(tǒng)創(chuàng)建并啟動(dòng)測(cè)試任務(wù)監(jiān)控線程和測(cè)試任務(wù)調(diào)度線程;
步驟3:監(jiān)控線程對(duì)傳感節(jié)點(diǎn)標(biāo)識(shí)符解析測(cè)試腳本進(jìn)行掃描,創(chuàng)建用于待測(cè)試的分組隊(duì)列;
步驟4:遍歷隊(duì)列中的每個(gè)測(cè)試任務(wù)分組,并對(duì)所需的測(cè)試環(huán)境和測(cè)試設(shè)備進(jìn)行配置;
步驟5:測(cè)試設(shè)備配置完畢,調(diào)度線程執(zhí)行調(diào)度功能,依據(jù)測(cè)試的分組信息創(chuàng)建并啟動(dòng)測(cè)試線程;
步驟6:系統(tǒng)采用分時(shí)的原則,執(zhí)行各個(gè)任務(wù)的測(cè)試線程分時(shí)占用cpu的資源。