基于Wp測(cè)試用例約簡(jiǎn)集的無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)測(cè)試方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于軟件系統(tǒng)測(cè)試領(lǐng)域,尤其涉及無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)的通信協(xié)議設(shè)計(jì)驗(yàn) 證和系統(tǒng)測(cè)試。
【背景技術(shù)】
[0002] 無(wú)線傳感器網(wǎng)絡(luò)是由部署在監(jiān)測(cè)區(qū)域內(nèi)大量的廉價(jià)微型傳感器節(jié)點(diǎn)組成,通過(guò)無(wú) 線通信方式形成的一個(gè)多跳的自組織的網(wǎng)絡(luò)系統(tǒng),其目的是協(xié)作地感知、采集和處理網(wǎng)絡(luò) 覆蓋區(qū)域中被感知對(duì)象的信息,并發(fā)送給觀察者。無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)在開發(fā)部署過(guò)程中, 相關(guān)人員由于自身局限性并沒(méi)有完全理解協(xié)議規(guī)則或者軟件及硬件環(huán)境的不兼容等因素, 都會(huì)使系統(tǒng)出現(xiàn)問(wèn)題,所以需要對(duì)無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)進(jìn)行全面可靠的測(cè)試以及時(shí)發(fā)現(xiàn)系 統(tǒng)缺陷。目前階段,對(duì)系統(tǒng)進(jìn)行測(cè)試的測(cè)試用例大都為人工編寫,易對(duì)某些重要的測(cè)試環(huán)節(jié) 遺漏,同時(shí)較多的測(cè)試用例使得實(shí)際測(cè)試工作量繁重,所以一種可靠規(guī)模較小的測(cè)試方案, 在實(shí)際測(cè)試中具有重要意義。
[0003] 基于有限狀態(tài)機(jī)模型的一致性測(cè)試是一種黑盒測(cè)試,其目的是檢查運(yùn)行通信協(xié)議 的系統(tǒng)與協(xié)議標(biāo)準(zhǔn)的符合程度。目前基于有限狀態(tài)機(jī)的測(cè)試序列生成算法已經(jīng)比較成熟。 在眾多的測(cè)試算法中,Wp方法是一種經(jīng)典有效的測(cè)試用例生成方法,具有較高的故障檢測(cè) 能力,利用該方法進(jìn)行無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)測(cè)試能夠得到完備的測(cè)試用例集。但該方法生 成的測(cè)試用例集規(guī)模較大,數(shù)量較多,在實(shí)際測(cè)試中會(huì)導(dǎo)致大量的人力資源消耗。本發(fā)明利 用集合覆蓋貪心算法,通過(guò)構(gòu)造需求集實(shí)現(xiàn)了對(duì)Wp方法測(cè)試用例集的約簡(jiǎn),能夠在保證Wp 原始測(cè)試用例集錯(cuò)誤檢測(cè)能力不受影響的前提下,對(duì)原始測(cè)試用例集進(jìn)行有效的約簡(jiǎn),提 高無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)的實(shí)際測(cè)試效率。
[0004] 在協(xié)議的一致性測(cè)試中,常使用有限狀態(tài)機(jī)模型描述協(xié)議規(guī)范,有限狀態(tài)機(jī)模型 一般分為兩種,Moore機(jī)和Mealy機(jī)。如果一個(gè)有限狀態(tài)機(jī)模型不將狀態(tài)轉(zhuǎn)換與任何操作 關(guān)聯(lián)在一起,則稱作Moore機(jī)。如果有限狀態(tài)機(jī)模型將每一個(gè)狀態(tài)轉(zhuǎn)換都與操作關(guān)聯(lián)在一 起,則稱作Mealy機(jī),在本發(fā)明中只考慮Mealy機(jī)。
[0005] -個(gè)有限狀態(tài)機(jī)模型M是一個(gè)六元組(Q,X,Y,qQ,S,〇),其中:
[0006] Q是有限個(gè)狀態(tài)的集合。
[0007]X是一個(gè)有限的輸入符號(hào)集合,稱為輸入字符集,所述輸入字符集中的每一個(gè)輸入 符號(hào)對(duì)應(yīng)實(shí)際的輸入操作符號(hào),起到控制狀態(tài)轉(zhuǎn)換的作用。
[0008]Y是一個(gè)有限的輸出符號(hào)的集合,稱為輸出字符集,是所述輸入操作符號(hào)對(duì)狀態(tài)進(jìn) 行轉(zhuǎn)換控制時(shí)的輸出信號(hào)。
[0009] q(|G Q,是有限狀態(tài)機(jī)模型的初始狀態(tài)。
[0010] S:QXX-Q',S是狀態(tài)轉(zhuǎn)換函數(shù),表示所述的輸入符號(hào)集X使當(dāng)前狀態(tài)集合Q 轉(zhuǎn)換為下一個(gè)狀態(tài)集合Q'。S(qi,Sl)=qp表示輸入字符串Sl使當(dāng)前狀態(tài)qi轉(zhuǎn)換為下一 個(gè)狀態(tài)q」,其中qiEQ,qjGQ,si為輸入符號(hào)集X中的1個(gè)輸入字符構(gòu)成的輸入字符串,1 為非負(fù)整數(shù)。
[0011] 〇:QXX-Y,0是輸出函數(shù),表示所述的輸入符號(hào)集X使當(dāng)前狀態(tài)集合Q發(fā)生轉(zhuǎn)換 時(shí)產(chǎn)生輸出符號(hào)集合Y。0(qi,s2) =0(9^3) ?0(8(qi,a2),a3a4...a1) =Y,表示長(zhǎng)度為 1的輸入字符串s2使當(dāng)前狀態(tài)qi發(fā)生轉(zhuǎn)換時(shí)產(chǎn)生的一個(gè)輸出字符集Y,其中qiGQ,s2 = (已盧而.? ? ,已盧而.? ?均屬于輸入字符集X。
[0012] 在本發(fā)明中使用結(jié)構(gòu)(qi,qp x/y)表示一個(gè)狀態(tài)到下一個(gè)狀態(tài)的轉(zhuǎn)換,其中 qiG Q,q jG Q,x G X,y G Y,8 (q^x) = qj,0(qi,x) = y,其含義為當(dāng)有限狀態(tài)機(jī)模型處 于qi狀態(tài)時(shí),對(duì)其輸入字符X,有限狀態(tài)機(jī)模型將轉(zhuǎn)入狀態(tài)h,同時(shí)輸出符號(hào)y。有限狀態(tài) 機(jī)模型在輸入空序列的情況下,將產(chǎn)生空輸出,同時(shí)仍處于原來(lái)的狀態(tài),使用符號(hào)e表示 空輸入序列,null表示空輸出,該轉(zhuǎn)換表示為(qpqp e/null)。
[0013] Wp方法,又稱部分W方法,是由Fujiwara等人提出的,是一種經(jīng)典的系統(tǒng)測(cè)試方 法,具有較高的故障檢測(cè)能力。利用Wp方法生成測(cè)試用例集,有限狀態(tài)機(jī)模型M應(yīng)滿足一 些前提,其中包括:
[0014] (1)M是確定的。
[0015] 對(duì)于任意確定的輸入字符x G X,在M的任意狀態(tài)qi輸入所述字符x時(shí),q i最多只 存在一個(gè)后繼狀態(tài),則稱M是確定的。
[0016] (2)M是完全定義的。
[0017] 對(duì)于模型M,從它的每一個(gè)狀態(tài)出發(fā),對(duì)每一個(gè)輸入符號(hào)x G X都存在一個(gè)轉(zhuǎn)換,則 M是完全定義的。
[0018] (3)M是最小的。
[0019] 若M中的存在兩個(gè)狀態(tài)1、%,對(duì)于任意1個(gè)輸入字符構(gòu)成的輸入字符串s都產(chǎn)生 相同的輸出,則稱狀態(tài)1、qj等價(jià)。若M中不存在這樣的狀態(tài)對(duì),則稱M是最小的。
[0020] (4)M能夠準(zhǔn)確的重置到初始狀態(tài),在重置操作中產(chǎn)生輸出null。
[0021] 假設(shè)設(shè)計(jì)規(guī)范中有限狀態(tài)機(jī)模型M含n(n > 0)個(gè)狀態(tài),而實(shí)際運(yùn)行的待測(cè)系統(tǒng)的 最多包含m(m > 0)個(gè)狀態(tài)。下面是Wp算法的總體流程:
[0022] BeginofWp
[0023] 步驟(1),計(jì)算M的轉(zhuǎn)換覆蓋集P、狀態(tài)覆蓋集S、特征集W、等價(jià)特征集I。
[0024]步驟(2),測(cè)試子集 I\= S ? I [m-n] ? W。
[0025] 步驟(3),設(shè)步是M的所有等價(jià)特征集組成的集合,步={W。,%,W2, . . .,WJ,WQ 為q〇等價(jià)特征集,W :為qi等價(jià)特征集,以此類推。
[0026] 步驟(4),設(shè)R={ivr2,. ..,rk}是所有屬于轉(zhuǎn)換覆蓋集P但不屬于狀態(tài)覆蓋集 S的輸入字符串的集合,即R = P_S。另外,如果rf R,則S (qQ,ri)=qi。
[0027] 步驟(5),測(cè)試子集T2 = Uf=1{ri}?(Uu印m-n]u?W 1),其中riGR,S(q(l,ri)=qi, 8(qi,u)二口"巧是狀態(tài)狀態(tài)等價(jià)集,WiG邊。
[0028] 步驟⑶,合并1\和T 2得到測(cè)試集T。
[0029] End ofWp
[0030] 其中,轉(zhuǎn)換覆蓋集P定義如下:
[0031] 設(shè)qi、q」為M中的任意兩個(gè)狀態(tài),i辛j,P由形如s、x的輸入字符串組成,其中 8 (qQ,s) = q」,8 (qQ,x) = qr空字符e也屬于P。
[0032] 狀態(tài)覆蓋集S是一個(gè)有窮非空集合,其中的每一個(gè)元素都是若干輸入字符組成的 輸入字符串。對(duì)于任意qie Q,存在r G s,滿足s (qtl,r) = qi,其中r為輸入字符串。很 容易看出,狀態(tài)覆蓋集是轉(zhuǎn)換覆蓋集P的子集,且不唯一。
[0033] 特征集W是一個(gè)輸入字符串的有限集合,這些輸入串能夠區(qū)分出M中任意兩個(gè)狀 態(tài)的行為。假設(shè)qi和qj是Q中的兩個(gè)狀態(tài),那么特征集W中存在一個(gè)輸入串s,使得0(qi, s)辛0( qj,s),其中s是若干輸入字符組成的輸入字符串。
[0034] 等價(jià)特征集與M中的每一個(gè)狀態(tài)相對(duì)應(yīng)。假設(shè)91是Q中的任一狀態(tài),狀態(tài)q i等價(jià) 集表示成1,并具備以下特性:
[0035] (a) WiSW,1彡i<n,其中n為M的狀態(tài)數(shù)目。
[0036] (b)對(duì)于任何 j,w,1 < j < n,j 辛 i,w G I,有 〇(qi,w)辛 0(qj,w)。
[0037] (c)不存在%的子集滿足(b)。
[0038] I [m-n]表示如下的集合運(yùn)算表達(dá)式:
[0039] (a)當(dāng) m < n 時(shí),I [m_n] = X。
[0040] (b)當(dāng) m = n 時(shí),I [m_n] = I [0] = e。
[0041] (c)當(dāng) m > n 時(shí),I [m-n] = { e } U X1 U X 2…U X11?-1 u X『n。
[0042] 其中,X為有限狀態(tài)機(jī)模型輸入符號(hào)集合。Xi=X,X2=X*X,以此類推,符號(hào)" 代表連接運(yùn)算,本發(fā)明所有涉及到該符號(hào)處,均表示連接運(yùn)算。
[0043] 由上述描述可知,用Wp方法生成的測(cè)試集T是兩個(gè)測(cè)試子集1\和T 2的并集,這兩 個(gè)子集的功能是不同的。測(cè)試子集用于檢測(cè)實(shí)現(xiàn)I是否包含了 M中的所有狀態(tài)并檢測(cè) 部分轉(zhuǎn)換的實(shí)現(xiàn)是否正確;1~2用于測(cè)試M中定義的其余轉(zhuǎn)換是否在待測(cè)的實(shí)際系統(tǒng)中得到 了正確的實(shí)現(xiàn),即判斷所檢測(cè)轉(zhuǎn)換的輸出和即將跳轉(zhuǎn)的下一個(gè)狀態(tài)是否與M中的定義相一 致。
[0044] 集合覆蓋貪心算法(GREEDY_SET_COVER)是一種經(jīng)典的求解最小子集問(wèn)題的算 法,該算法重復(fù)在集合;F中選擇一條測(cè)試用例S,覆蓋集合G中最多且未被覆蓋的需求,直到 G中所有的需求都被覆蓋為止。本發(fā)明利用GREEDY_SET_COVER算法對(duì)測(cè)試集進(jìn)行約簡(jiǎn),得 到Wp的測(cè)試用例約簡(jiǎn)集。將GREEDY_SET_COVER算法設(shè)置為三元函數(shù),函數(shù)完整原型如下:
[0045]
【主權(quán)項(xiàng)】
1.基于Wp測(cè)試用例約簡(jiǎn)集的無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)測(cè)試方法,其特征在于,是一種無(wú)線 傳感器網(wǎng)絡(luò)系統(tǒng)通信協(xié)議設(shè)計(jì)驗(yàn)證和系統(tǒng)測(cè)試的方法,依次含有以下步驟: 步驟(1),按以下步驟首先利用Wp方法處理計(jì)算機(jī)仿真系統(tǒng)有限狀態(tài)機(jī)模型Mi生成測(cè) 試用例集合,然后構(gòu)造覆蓋需求集合,利用集合覆蓋貪心算法對(duì)得到測(cè)試用例集進(jìn)行約簡(jiǎn), 得到Wp方法測(cè)試用例約簡(jiǎn)集, 步驟(1. 1),將所述的計(jì)算機(jī)仿真系統(tǒng)有限狀態(tài)機(jī)模型札用(Q,X,Y,q^S,〇)這個(gè)六 元組表示,其中六元組中每個(gè)元素含義如下: Q是有限個(gè)狀態(tài)的集合, X是一個(gè)有限的輸入符號(hào)集合,稱為輸入字符集,所述符號(hào)集中的每一個(gè)的輸入符號(hào)對(duì) 應(yīng)實(shí)際的輸入操作符號(hào),起到控制狀態(tài)轉(zhuǎn)換的作用, Y是一個(gè)有限的輸出符號(hào)的集合,稱為輸出字符集,是所述操作輸入符號(hào)對(duì)狀態(tài)進(jìn)行轉(zhuǎn) 換控制時(shí)的輸出信號(hào), qc^Q,是有限狀態(tài)機(jī)模型的初始狀態(tài), S:QXX-Q',S是狀態(tài)轉(zhuǎn)換函數(shù),表示所述的輸入符號(hào)集X使當(dāng)前狀態(tài)集合Q轉(zhuǎn)換 為下一個(gè)狀態(tài)集合Q',S(qi,Sl) = %,表示輸入字符串Sl使當(dāng)前狀態(tài)qjf換為下一個(gè)狀 態(tài)q」,其中Q,qjGQ,Sl為輸入符號(hào)集X中的若干個(gè)輸入字符構(gòu)成的輸入字符串, 0:QXX-Y,0是輸