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