何斌,卞付國,孫俊若,汪圣利
(1.中國電子科技集團(tuán)公司第十四研究所,江蘇南京 210039;2.上海機(jī)電工程研究所,上海 201109)
隨著航空電子技術(shù)的發(fā)展,雷達(dá)軟件也集成了諸如實時資源調(diào)度、目標(biāo)數(shù)據(jù)庫識別和目標(biāo)優(yōu)先級管理等重要軟件功能。這些軟件需求的一個共同特點(diǎn)是:輸入?yún)?shù)多且耦合關(guān)系復(fù)雜,輸出結(jié)果多元且離散。如果將這類軟件需求簡單地分解成多個子功能進(jìn)行測試設(shè)計,也可以得到符合某種測試覆蓋要求的測試用例集,但這實際上人為地割裂了參數(shù)之間的有機(jī)聯(lián)系,發(fā)現(xiàn)缺陷的能力較低。對于復(fù)雜軟件需求,采用何種測試方法能夠在保證測試效率的前提下提高缺陷發(fā)現(xiàn)率,是雷達(dá)軟件測試中一個值得深入研究的課題[1]。
在軟件動態(tài)測試過程中,組合測試和基于約束關(guān)系的變種組合覆蓋測試設(shè)計方法被越來越多地應(yīng)用于軟件測試設(shè)計中[2]。它們能夠較好地解決輸入?yún)?shù)之間存在復(fù)雜耦合關(guān)系的問題,但對于運(yùn)行結(jié)果存在多個平行、離散輸出的軟件需求,鮮有從輸出端回推輸入?yún)?shù)影響的組合測試設(shè)計方法。
本文在分析改進(jìn)的組合覆蓋測試設(shè)計方法的基礎(chǔ)上,提出了一種基于I/O關(guān)系的組合測試方法,并給出了雷達(dá)跟蹤波形管理軟件需求的具體測試設(shè)計實例。
組合測試是一種利用組合設(shè)計方法產(chǎn)生能覆蓋規(guī)定強(qiáng)度要求的測試設(shè)計方法。經(jīng)典的組合測試是基于變量 (輸入?yún)?shù))權(quán)值平均且相互之間是隔離的開展的,解決的問題主要是當(dāng)變量和水平 (參數(shù)取值)數(shù)目較多時帶來的測試成本高和測試效率低的問題[3];實際的軟件系統(tǒng)中存在輸入?yún)?shù)權(quán)重不等和參數(shù)之間的耦合程度不同的問題,因此非經(jīng)典組合測試設(shè)計方法近年來逐漸地得到了軟件測試人員的重視[4-9]。王子元等針對一類特殊的軟件系統(tǒng)提出了相鄰因素組合測試的概念;曾勁濤等依據(jù)參數(shù)約束關(guān)系,提出了一種改進(jìn)的IPO算法,新算法較經(jīng)典的AETG方法高效;汪存燕等提出了利用約束關(guān)系對空間樹進(jìn)行裁剪的組合覆蓋算法;張衛(wèi)祥等將故障樹分析法應(yīng)用于因素關(guān)系分析過程,針對關(guān)系緊密的因素組合設(shè)計測試用例;李龍澍等提出了一種基于參數(shù)重要性程度不同的權(quán)值參數(shù)組合覆蓋算法,使得測試具有一定的針對性。
上述研究拓展了組合測試的應(yīng)用范圍,特別是文獻(xiàn) [9]基于輸入空間的約束關(guān)系選擇合適的強(qiáng)度組合,改進(jìn)了變強(qiáng)度組合測試方法,不僅在一定程度上約簡了測試用例集規(guī)模,還具有很好的測試針對性。對于復(fù)雜軟件功能,如果同時考慮輸出空間對輸入空間的影響,將輸出與輸入的因果關(guān)系作為先驗信息應(yīng)用于因素關(guān)系分析,減少參與組合的變量個數(shù),則可進(jìn)一步地優(yōu)化組合覆蓋算法[10]。
基于I/O關(guān)系的組合覆蓋測試方法如圖1所示。
圖1 基于I/O關(guān)系的組合覆蓋測試算法圖
依據(jù)軟件需求規(guī)格說明,參考用戶輸入和詳細(xì)設(shè)計等文檔分析測試需求,提取輸入輸出參數(shù)列表。分析過程中,尤其需要挖掘約束條件、異常處理、優(yōu)先級別和時間特性等需求要素。
復(fù)雜軟件需求的輸出往往具有多元性和離散性,即輸出可能是在有限值域范圍內(nèi)的多個平行分布,也可能是多因素多條件綜合判決后形成的數(shù)組序列。輸出對輸入的關(guān)系一般存在有關(guān)和無關(guān)兩種。遍歷每個獨(dú)立輸出,找出與之相關(guān)的輸入?yún)?shù)進(jìn)行分組,每個組是該軟件需求的一個輸入空間子集。這是對覆蓋數(shù)組的第一次約簡。
因素(輸入?yún)?shù))之間的相互關(guān)系一般分為3類,如表1所示。
表1 因素關(guān)系表
因素關(guān)系分析是影響基于I/O關(guān)系組合測試成敗的關(guān)鍵步驟。雷達(dá)軟件測試在工程實踐中,將因素關(guān)系分析作為測試需求分析階段的一個重要組成部分。以軟件開發(fā)文檔集為基礎(chǔ),采用多種技術(shù),例如:風(fēng)河軟件的WindView、GNU性能分析工具Gprof[11]、任務(wù)調(diào)度時序分析和數(shù)據(jù)流圖分析等,多角度、多維度獲取影響因素交互關(guān)系的背景信息,提高因素關(guān)系分析的正確性和成功率。一個可行的因素關(guān)系分析過程如圖2所示。
完成因素關(guān)系分析后,遍歷每個輸入?yún)?shù),基于約束和覆蓋信息,剔除互斥的組內(nèi)參數(shù)取值組合。這是對覆蓋數(shù)組的第二次約簡。
圖2 因素關(guān)系分析過程圖
研究表明70%~80%的軟件缺陷可以由強(qiáng)度為2的組合測試捕獲,90%以上的軟件缺陷可以由強(qiáng)度為3的組合測試捕獲[2];而雷達(dá)研制工程經(jīng)驗數(shù)據(jù)表明,絕大部分的雷達(dá)軟件缺陷都是由單因素和雙因素組合引起的。因此,基于I/O關(guān)系的組合測試的強(qiáng)度為2。
基于約束關(guān)系的組合測試用例生成一般采用改進(jìn)的AETG算法、改進(jìn)的IPO算法和基于onetest-at-a-time策略的算法[5,9]等等,而文獻(xiàn) [12-13]提出的正交矩陣構(gòu)造法也有一定的實踐價值。正交矩陣法是一種實現(xiàn)兩兩參數(shù)覆蓋的組合測試算法,利用正交表可以方便地完成覆蓋數(shù)組到測試用例的生成[14],但對覆蓋數(shù)組有嚴(yán)格的要求,這大大地限制了正交矩陣法的應(yīng)用,例如:當(dāng)某個變量存在與其他變量不同的取值時,則正交矩陣法將不可用。通過表2中所示的兩種途徑可以擴(kuò)展正交矩陣法的應(yīng)用范圍。
表2 正交矩陣應(yīng)用擴(kuò)展途徑表
可以根據(jù)覆蓋數(shù)組的結(jié)構(gòu)合理地選擇上述組合覆蓋算法生成測試用例集。
將所有組的覆蓋結(jié)果進(jìn)行直接合并,即可得到最終的測試用例集。
可以看出,與普通組合法后期約簡用例的做法不同,基于I/O關(guān)系的組合覆蓋測試的設(shè)計過程實際上就是通過分析軟件具體實現(xiàn)邏輯,找到輸入與輸出以及輸入?yún)?shù)之間的關(guān)系,并利用此關(guān)系在設(shè)計過程中不斷地約簡輸入?yún)?shù)組合的過程。
本節(jié)以某機(jī)載雷達(dá)跟蹤波形管理測試需求為例,介紹將基于I/O關(guān)系的組合覆蓋測試方法應(yīng)用于雷達(dá)軟件復(fù)雜功能的測試設(shè)計的過程。
機(jī)載雷達(dá)需根據(jù)目標(biāo)特性、干擾分布等內(nèi)外部影響,選擇合適的波形,使得目標(biāo)落在時頻域二維清晰區(qū)最大且雷達(dá)費(fèi)效比最優(yōu)。首先,對該功能的輸入空間進(jìn)行分析,得到目標(biāo)距離、目標(biāo)速度、目標(biāo)信噪比、跟蹤序列、干擾標(biāo)識、雜波模型和目標(biāo)特征7個輸入?yún)?shù),等價類劃分后得到參數(shù)取值如表3所示;輸出為常規(guī)波形組、高功率波形組和掩護(hù)波形組。
表3 輸入?yún)?shù)取值
分析這7個輸入?yún)?shù)和3個輸出結(jié)果之間的包含和關(guān)聯(lián)關(guān)系,可以得到跟蹤波形選擇功能的I/O關(guān)系,如圖3所示。
圖3 I/O關(guān)系圖
根據(jù)圖3的分析結(jié)果,得到3個組,分別為:第一組, Y1={I1, I2, I3, I4,I5, I6}, 第二組, Y2={I3,I4, I7}; 第三組, Y3={I5,I6, I7}。
分析組內(nèi)參數(shù)之間的相互作用關(guān)系,可得到組1中的i23對組內(nèi)其他參數(shù)的取值有覆蓋作用 (單獨(dú)生成1個用例);利用此關(guān)系,得到約簡后的覆蓋數(shù)組。其中,第一組為2強(qiáng)度6變量的混合覆蓋數(shù)組,表示為Y1(6;2,2442);第二組為2強(qiáng)度3變量的混合覆蓋數(shù)組,表示為Y2(3;2,224);第三組為2強(qiáng)度3變量的混合覆蓋數(shù)組,表示為 Y3(3;2, 242)。
第一個混合覆蓋數(shù)組采用改進(jìn)的AETG算法,可得到總數(shù)是16的測試用例子集,如表4所示。
同理,第二組和第三組可分別得到總數(shù)是4和6的測試用例子集。
最后將這3個組的測試用例子集相加,即可得到該測試需求的測試用例數(shù)為27個。
基于I/O關(guān)系的組合覆蓋測試方法得到的用例集與利用其他測試方法得到的用例集的比較如表5所示。
表5 不同用例集比較
綜上所述,基于I/O關(guān)系的組合測試方法是在測試需求分析階段全面搜集輸入和輸出參數(shù)信息,在測試設(shè)計過程中依據(jù)輸出結(jié)果對輸入的影響和輸入?yún)?shù)之間的制約關(guān)系不斷地約簡覆蓋數(shù)組,再利用改進(jìn)的貪心算法或正交矩陣構(gòu)造法等完成從混合覆蓋數(shù)組到測試用例集的生成過程。這種方法實際上是一種灰盒測試技術(shù),是將軟件內(nèi)部邏輯作為先驗信息應(yīng)用于軟件測試設(shè)計過程中,其優(yōu)點(diǎn)是測試覆蓋全面、測試用例集精簡且缺陷發(fā)現(xiàn)能力強(qiáng),缺點(diǎn)是與軟件設(shè)計高度耦合,既考驗軟件測試人員的系統(tǒng)分析能力,同時當(dāng)軟件內(nèi)部實現(xiàn)更改頻繁時,測試用例集維護(hù)工作量也較大。后期在測試實踐中考慮將變強(qiáng)度組合測試應(yīng)用于優(yōu)先級高的軟件需求,可以進(jìn)一步地提高測試針對性,提高測試缺陷發(fā)現(xiàn)率。