職 曉 裴阿平 張江華
(西安電子工程研究所 西安 710100)
隨著電子技術(shù)的不斷發(fā)展,現(xiàn)代雷達(dá)系統(tǒng)軟件化程度越來越高,雷達(dá)系統(tǒng)軟件的研制占整個(gè)系統(tǒng)開發(fā)周期的比重越來越大。作為軟件質(zhì)量的重要保證手段,軟件測(cè)試逐漸成為雷達(dá)系統(tǒng)軟件研制的重要環(huán)節(jié)。其中設(shè)計(jì)有效的測(cè)試用例是直接關(guān)系測(cè)試質(zhì)量的關(guān)鍵因素。理論上窮舉法即設(shè)計(jì)包含所有輸入?yún)?shù)的所有取值組合的用例集,其可靠性最高;然而,由于窮舉法帶來的計(jì)算爆炸,無法在工程實(shí)際中得到有效應(yīng)用。因此從上述完備的測(cè)試用例集中挑選盡量少的用例,保證足夠的組合覆蓋率成為近年來軟件測(cè)試研究中的一個(gè)重要課題[1]。
分類樹方法是由Grochtmann 和Grimm 在1993年設(shè)計(jì)提出,經(jīng)過不斷的實(shí)踐證明是一種有效的軟件功能測(cè)試用例設(shè)計(jì)方法[2~4]。文獻(xiàn)[2]中作者利用分類樹方法和分類樹工具CTE XL 完成了WEB服務(wù)測(cè)試用例的自動(dòng)生成。文獻(xiàn)[3]中作者基于分類樹方法和形式規(guī)格說明完成了一個(gè)網(wǎng)上購(gòu)物系統(tǒng)的測(cè)試用例生成。由以上文獻(xiàn)可以看出,應(yīng)用分類樹方法和分類樹工具CTE XL 設(shè)計(jì)用例大大提高了測(cè)試效率,同時(shí)提升了測(cè)試的自動(dòng)化程度。然而從中仍可以看出,在測(cè)試用例的執(zhí)行過程中,生成的用例集仍有很大冗余。所以為了提高這種方法的工程實(shí)用性,有必要進(jìn)一步對(duì)分類樹方法生成的用例集做進(jìn)一步的優(yōu)化。
針對(duì)上述問題,本文提出一種將分類樹和正交試驗(yàn)設(shè)計(jì)方法相結(jié)合的測(cè)試用例設(shè)計(jì)方法,利用分類樹方法和分類樹工具CTE XL 自動(dòng)生成測(cè)試用例,然后利用正交試驗(yàn)設(shè)計(jì)方法對(duì)生成的用例做進(jìn)一步的精簡(jiǎn)。這種方法既避免了以往功能測(cè)試的隨機(jī)性和盲目性,同時(shí)減少了冗余用例對(duì)測(cè)試資源的浪費(fèi)。經(jīng)驗(yàn)證,在雷達(dá)軟件測(cè)試中有著較好的工程應(yīng)用價(jià)值。
分類樹方法的主要思想是根據(jù)被測(cè)單元的需求規(guī)格說明,對(duì)單元模塊的輸入數(shù)據(jù)進(jìn)行抽象,將整個(gè)單元的輸入域分割成若干個(gè)獨(dú)立的子類,每個(gè)子類再根據(jù)一定的準(zhǔn)則再次劃分,直到將整個(gè)輸入域分割成一些不可再分的子類的組合。分類樹作為描述此方法的工具,其主要由節(jié)點(diǎn)和分支組成。其中節(jié)點(diǎn)又可分為內(nèi)節(jié)點(diǎn)和葉節(jié)點(diǎn),分支為各級(jí)節(jié)點(diǎn)間從屬關(guān)系的體現(xiàn),具體定義如下:
定義1:如圖1所示,一棵分類樹是一個(gè)四元集合CT= {B,L,U,R},其中B 表示根節(jié)點(diǎn),是整個(gè)分類樹最頂層節(jié)點(diǎn),也是整個(gè)單元測(cè)試的輸入域。接著對(duì)B 進(jìn)行逐層分解。L= {L11,L12,...L1n1,L21,L22,...L2n2,...Lm1,Lm2,...Lmn|m,n,n1,n2∈N+} 表示葉節(jié)點(diǎn),是分類樹的最底層節(jié)點(diǎn),是測(cè)試中輸入域的不可再分的子類屬性值,即被測(cè)單元的輸入值。U= {U1,U2,...Um|m ∈N+} 表示除根節(jié)點(diǎn)和葉節(jié)點(diǎn)外的內(nèi)節(jié)點(diǎn),是整個(gè)分類樹建立過程中的獨(dú)立類屬性。R= {r1,r2} 表示上述的父類與子類的從屬關(guān)系,其中r1= {<B,Ui>i ∈N+,i ≤m},r2= {<B,Lij>i,j ∈N+,i ≤m,j ≤n}。
圖1 分類樹結(jié)構(gòu)圖
分類樹方法在測(cè)試中應(yīng)用有許多優(yōu)點(diǎn)。首先,因?yàn)榉诸悩涫且环N類似于流程圖的結(jié)構(gòu),所以用分類樹來設(shè)計(jì)測(cè)試用例可以使原本主要依靠測(cè)試人員經(jīng)驗(yàn)設(shè)計(jì)過程變成一種結(jié)構(gòu)化和系統(tǒng)化的設(shè)計(jì)過程。其次,分類樹方法還可以很好地分析程序錯(cuò)誤的特征,定位缺陷位置[5]。
雖然,利用分類樹工具CTE XL 的約束關(guān)系可以一定程度地精簡(jiǎn)測(cè)試用例,但分類樹方法在實(shí)際工程應(yīng)用中仍有很大缺陷。隨著輸入域和分類子集的遞增,分類樹方法將會(huì)生成十分龐大的測(cè)試用例集,隨之產(chǎn)生大量冗余的測(cè)試用例。在測(cè)試時(shí)間和資源有限的情況下,全部覆蓋其生成的用例集是不現(xiàn)實(shí)的。所以在保證一定測(cè)試覆蓋率的前提下,需要進(jìn)一步地精簡(jiǎn)該測(cè)試用例集。
針對(duì)上述缺陷,正交試驗(yàn)設(shè)計(jì)法可以將分類樹工具生成的初始測(cè)試用例集進(jìn)一步精簡(jiǎn),去除冗余測(cè)試用例,同時(shí)保證測(cè)試用例集中的用例成對(duì)組合且均勻分布,從而在保證一定測(cè)試覆蓋率的前提下,提高測(cè)試的效率,節(jié)約測(cè)試的成本。
正交試驗(yàn)設(shè)計(jì)法是一種基于統(tǒng)計(jì)數(shù)學(xué)的科學(xué)試驗(yàn)方法的總結(jié),其廣泛應(yīng)用于各試驗(yàn)科學(xué)領(lǐng)域。具體來說,它是根據(jù)Galois 理論,由統(tǒng)計(jì)學(xué)模型推導(dǎo)出的正交表去安排科學(xué)試驗(yàn)的一種實(shí)踐方法。正交試驗(yàn)設(shè)計(jì)法可以從大量的試驗(yàn)數(shù)據(jù)中篩選出少量具有代表性的試驗(yàn)數(shù)據(jù)進(jìn)行試驗(yàn),大幅減少了試驗(yàn)次數(shù),從而優(yōu)化了試驗(yàn)效率。從本質(zhì)上來講,正交試驗(yàn)設(shè)計(jì)法是遺傳算法的一種特例,即一種初始種群固定的、只使用定向變異算子、只進(jìn)化一代的遺傳算法。相較一般的遺傳算法,它的優(yōu)化解必然不及一般遺傳算法產(chǎn)生的優(yōu)化解,但一般遺傳算法的步驟更復(fù)雜,產(chǎn)生的試驗(yàn)次數(shù)也更多[6]。所以正交試驗(yàn)設(shè)計(jì)法從工程的角度來看具有更好的應(yīng)用價(jià)值。
正交表作為這種方法的基本工具,已有很多學(xué)者進(jìn)行了深入的研究?,F(xiàn)有大量現(xiàn)成的正交表可以供試驗(yàn)中直接使用,當(dāng)然特殊情況也可以通過數(shù)學(xué)模型推導(dǎo)出匹配的正交表。通常以LRuns(LevelsFac-tors)的形式來表示正交表。具體根據(jù)各個(gè)因素(Factors)的水平(Levels)的數(shù)目相同與否,又可以分為等水平正交表和混合水平正交表。其中,次數(shù)(Runs)代表優(yōu)化后試驗(yàn)的次數(shù),其值等于正交表的行數(shù),對(duì)應(yīng)測(cè)試用例集中的用例個(gè)數(shù)。因素(Factors)是對(duì)整個(gè)試驗(yàn)結(jié)果會(huì)產(chǎn)生主要影響的要素,因素?cái)?shù)等于正交表的列數(shù),對(duì)應(yīng)被測(cè)單元的接口參數(shù)個(gè)數(shù)。水平(Levels)是各因素具體的可能取值或狀態(tài),對(duì)應(yīng)被測(cè)單元的接口參數(shù)可能取值數(shù)。
應(yīng)用正交試驗(yàn)設(shè)計(jì)法對(duì)分類樹方法生成的用例集優(yōu)化步驟如下:
2.3.1 確定因素,即被測(cè)單元的輸入?yún)?shù)。這里具體對(duì)應(yīng)圖1 分類樹中的U= {U1,U2,...Um|m ∈N+};
2.3.2 確定水平,即被測(cè)單元的輸入?yún)?shù)對(duì)應(yīng)的可能取值。這里對(duì)應(yīng)圖1 分類樹中的L= {L11,L12,...L1n1,L21,L22,...L2n2,...Lm1,Lm2,...Lmn|m,n,n1,n2∈N+};
2.3.3 選擇正交表,即查找正交表。根據(jù)因素?cái)?shù)和水平數(shù)選擇匹配的正交表。如果各因素的水平數(shù)相等,則直接選擇等水平正交表。如果各水平數(shù)不完全相等,則需要選擇適合的混合水平正交表;
2.3.4 將水平映射到所選擇的正交表。如果找到的正交表的因素?cái)?shù)大于實(shí)際用例設(shè)計(jì)中的因素?cái)?shù),則可以選擇忽略表中部分的因素,其并不影響由生成的測(cè)試集的可靠性[7]。如果選擇的正交表中某個(gè)因素有剩余的水平數(shù),則可以將這個(gè)因素余下的水平值依次循環(huán)迭代映射,以增加發(fā)現(xiàn)軟件缺陷的概率。
以某雷達(dá)軟件的搜索截獲模塊中的單幀目標(biāo)凝聚測(cè)角單元的測(cè)試為例。
某雷達(dá)軟件需求規(guī)格說明對(duì)搜索截獲模塊中的單幀目標(biāo)凝聚測(cè)角單元功能描述如下:其主要功能是在一幀的時(shí)間內(nèi)根據(jù)搜索得到的目標(biāo)報(bào)告中的所有目標(biāo)點(diǎn)的信息,按照一定的規(guī)則進(jìn)行凝聚處理。然后根據(jù)凝聚后的目標(biāo)信息計(jì)算方位角和俯仰角的角誤差,最后形成單幀目標(biāo)信息報(bào)告。根據(jù)上述規(guī)格說明描述,該單元的詳細(xì)設(shè)計(jì)如圖2所示,單幀凝聚測(cè)角單元的輸入?yún)?shù)包括目標(biāo)信息數(shù)組、方位角補(bǔ)償、俯仰角補(bǔ)償、方位角、俯仰角、目標(biāo)個(gè)數(shù)等。最終得到的輸出參數(shù)為凝聚后的目標(biāo)距離、多普勒通道號(hào)、目標(biāo)回波幅度以及相應(yīng)的角誤差等目標(biāo)信息鏈表。
圖2 單幀目標(biāo)凝聚測(cè)角單元
單幀目標(biāo)凝聚測(cè)角單元測(cè)試用例設(shè)計(jì)具體流程如圖3所示。
圖3 被測(cè)單元用例設(shè)計(jì)流程圖
具體步驟如下:
3.2.1 確定分類樹中輸入分類集合U。由上面的分析可知,單幀凝聚測(cè)角單元的輸入?yún)?shù)較多,全部作為單元測(cè)試的輸入會(huì)增加用例的個(gè)數(shù),降低工程應(yīng)用的可能。因此需要對(duì)其進(jìn)行適當(dāng)?shù)牟眉簟>唧w來說,目標(biāo)信息數(shù)組中的多普勒通道號(hào)Dpl、目標(biāo)距離Dist 以及目標(biāo)回波幅度Amp 三個(gè)參數(shù)對(duì)整個(gè)單元的功能輸出起關(guān)鍵影響,這里可以定義它們?yōu)橹饕獏?shù)。除上面三個(gè)可控參數(shù)外,其余參數(shù)因?qū)卧δ茌敵鲇绊戄^小,這里定義它們?yōu)榇我獏?shù)。次要參數(shù)一般不出現(xiàn)在測(cè)試用例設(shè)計(jì)流程中,通常取常數(shù)。例如目標(biāo)個(gè)數(shù)aimtnum 這個(gè)參數(shù)取常數(shù)3,即代表目標(biāo)報(bào)告中有3 個(gè)目標(biāo),其余次要參數(shù)做同樣處理。綜上所述,此處分類集合U 可表示為U={Dpl,Dist,Amp}。
3.2.2 由(1)可得,目標(biāo)報(bào)告中有3 個(gè)目標(biāo)的信息。應(yīng)用等價(jià)類劃分法和邊界值分析方法,對(duì)輸入域中的主要參數(shù)選取具有代表性的取值,即劃分U的各個(gè)輸入子集?,F(xiàn)定義3 個(gè)目標(biāo)的多普勒通道號(hào)為Dpl=(dpl1,dpl2,dpl3),目標(biāo)的距離Dist=(dist1,dist2,dist3),目標(biāo)回波幅度Amp=(amp1,amp2,amp3),具體劃分后的結(jié)果如表1所示。
表1 主要參數(shù)劃分結(jié)果
3.2.3 利用CTE XL 生成測(cè)試用例,并設(shè)置約束關(guān)系對(duì)測(cè)試集進(jìn)行初步精簡(jiǎn)。根據(jù)表2 和相應(yīng)的約束關(guān)系,可以得到初始測(cè)試用例集C,如圖4所示,共81 個(gè)測(cè)試用例。
圖4 分類樹工具CTE XL 生成用例集
3.2.4 將U 和表1 的劃分結(jié)果與正交表的因素與水平一一對(duì)應(yīng),然后由因素和水平數(shù)選擇匹配的正交表。此處因素共3 個(gè),分別為多普勒通道號(hào)Dpl、目標(biāo)距離單元號(hào)Dist 以及目標(biāo)回波幅度Amp。各因素水平對(duì)應(yīng)表1,分別為一個(gè)9 水平和2 個(gè)3 水平。因?yàn)槿齻€(gè)因素的水平不全相等,所以應(yīng)選擇合適的混合水平正交表。同時(shí),所選的正交表的因素?cái)?shù)和對(duì)應(yīng)水平不應(yīng)小于上述因素?cái)?shù)和水平數(shù)。所以,最終找到試驗(yàn)次數(shù)(Runs)最少的正交表L(3^9 9^1),裁剪后如表2所示。
表2 裁剪后的L(3^9 9^1)
3.2.5 根據(jù)上述的映射規(guī)則將對(duì)應(yīng)水平映射到所選的正交表,即可得到精簡(jiǎn)后的最終測(cè)試用例集T,如表3所示。當(dāng)然在人員和測(cè)試資源允許的情況下,還可以根據(jù)需要為T 從C 中挑選增加一些用例,這里不再詳述。
由表3 可以看出,初始測(cè)試用例集C 經(jīng)過正交試驗(yàn)設(shè)計(jì)法篩選后,得到27 個(gè)測(cè)試用例。與C 中的81 個(gè)用例相比,不但基本覆蓋了各主要參數(shù)的輸入組合,而且總用例數(shù)精簡(jiǎn)了66%,大大減少了冗余用例,提高了測(cè)試效率,節(jié)約了測(cè)試成本。
表3 最終測(cè)試用例集T
近年來軟件測(cè)試領(lǐng)域中測(cè)試用例的精簡(jiǎn)優(yōu)化問題得到了越來越多的關(guān)注[1]。本文主要針對(duì)以往分類樹方法設(shè)計(jì)測(cè)試用例出現(xiàn)的冗余問題,提出了一種將分類樹方法與正交試驗(yàn)設(shè)計(jì)法相結(jié)合的用例設(shè)計(jì)方法。較之原來僅使用分類樹方法設(shè)計(jì)用例,該方法大幅減少了冗余測(cè)試用例,提升了測(cè)試效率,提高了分類樹方法的工程應(yīng)用價(jià)值。當(dāng)然,圍繞這種方法仍有一些工作要做,下一步準(zhǔn)備將分類樹工具與正交試驗(yàn)設(shè)計(jì)法在軟件層面集成起來,進(jìn)一步加強(qiáng)雷達(dá)軟件測(cè)試的自動(dòng)化程度,以縮短雷達(dá)軟件的開發(fā)周期。
[1]Natalia Juristo,Ana M.Moreno.In search of what we experimentally know about unit testing[J].IEEE Software,2006,11:72-80.
[2]李喬,秦鋒,鄭嘯.用分類樹方法實(shí)現(xiàn)Web 服務(wù)測(cè)試用例的自動(dòng)生成[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(11):197-200.
[3]朱連章,馬桂真.基于形式規(guī)格說明和分類樹方法生成軟件測(cè)試用例[J].微計(jì)算機(jī)應(yīng)用,2007,28(4):411-414.
[4]徐偉,王林章,李宣東.基于分類樹的隨機(jī)測(cè)試用例生成[J].計(jì)算機(jī)科學(xué),2009,36(1):263-266.
[5]嚴(yán)俊,張健.組合測(cè)試:原理與方法[J].軟件學(xué)報(bào),2009,20(6):1393-1405.
[6]吳浩揚(yáng),常炳國(guó).遺傳算法的一種特例—正交試驗(yàn)設(shè)計(jì)法[J].軟件學(xué)報(bào),2001,12(1):148-153.
[7]孫俊若.正交法在雷達(dá)軟件測(cè)試中應(yīng)用[J].信息與電子工程,2009,7(6):501-505.