馬艷
(中國人民解放軍92941部隊(duì),遼寧葫蘆島125001)
軟件測試作為軟件生命周期的一個重要環(huán)節(jié),對軟件質(zhì)量起著至關(guān)重要的作用。影響軟件測試質(zhì)量和效率的因素很多,如測試環(huán)境的搭建、測試人員的素質(zhì)、測試工具和測試方法等,其中測試用例的設(shè)計(jì)和執(zhí)行是核心步驟[1]。常用的黑盒測試用例設(shè)計(jì)方法中,等價(jià)類劃分法和邊界值分析法都是著重考慮輸入條件,但沒有考慮輸入條件的各種組合、輸入條件之間的相互制約關(guān)系,這樣雖然各種輸入條件可能出錯的情況已經(jīng)測試到了,但多個輸入條件組合可能出錯的情況卻被忽視了。如果在測試時全面考慮輸入條件的各種組合,則可能的組合數(shù)目將是天文數(shù)字。而因果圖法能夠根據(jù)輸入條件之間的相互依賴和制約關(guān)系,準(zhǔn)確、全面地覆蓋各種條件組合,高效生成無遺漏、不重復(fù)的測試數(shù)據(jù)條件,因此受到越來越多的關(guān)注[2-5]。
因果圖法是一種利用圖解法分析輸入(原因)和輸出(結(jié)果)的各種情況,畫出因果圖,轉(zhuǎn)換為判定表,從而設(shè)計(jì)測試用例的方法,適合于檢查程序輸入條件的各種組合情況[6]。
因果圖法的4種圖形符號分別表示了軟件需求規(guī)格說明書中的恒等、非、或、與4種因果關(guān)系(見圖1所示)。
圖1因果圖的4種基本符號
狀態(tài)相互之間可能存在某些依賴關(guān)系,稱為約束。輸入條件的約束有E(異)、I(或)、O(唯一)和R(要求)4類。輸出條件的約束只有M約束(強(qiáng)制),見圖2所示。
圖2因果圖的約束符號
利用因果圖法設(shè)計(jì)測試用例的方法如下[2]:
(1)分析軟件規(guī)格說明描述中哪些是原因(輸入條件),哪些是結(jié)果(輸出條件),設(shè)計(jì)必要的中間節(jié)點(diǎn),給每個原因、結(jié)果和中間節(jié)點(diǎn)賦予各自的標(biāo)識符。
(2)分析軟件規(guī)格說明描述中的語義,找出原因與原因之間、與結(jié)果之間、與中間節(jié)點(diǎn)之間的對應(yīng)關(guān)系,根據(jù)這些關(guān)系畫出因果圖。由于語法或環(huán)境限制,有些原因與原因之間、與結(jié)果之間、與中間節(jié)點(diǎn)之間的組合情況不可能出現(xiàn),為表明這些特殊情況,用相應(yīng)的記號表明約束或限制條件。
(3)把因果圖轉(zhuǎn)換為判定表。
(4)把判定表的每一列拿出來作為依據(jù),設(shè)計(jì)測試用例。
使用因果圖法充分考慮到了輸入情況的各種組合以及各個輸入之間的相互制約關(guān)系,能夠幫助軟件測試人員按照上述步驟高效率地設(shè)計(jì)測試用例。另外,因果圖法將自然語言的規(guī)格說明轉(zhuǎn)化成形式語言的規(guī)格說明,可以發(fā)現(xiàn)規(guī)格說明描述中存在的不完整性和二義性,有助于軟件需求規(guī)格說明書的完善。
以某型裝備自動化測試設(shè)備(ATE)軟件測試為例,其測試軟件含9個測試項(xiàng)目,其中3個為靜態(tài)測試項(xiàng)目(測試1、2、3,不需加電執(zhí)行),6個為動態(tài)測試項(xiàng)目(測試 4、5、6、7、8、9,需加電執(zhí)行和上傳程序)。每個測試項(xiàng)目中又含有若干測試子程序,每個測試子程序通過點(diǎn)擊測試軟件虛擬面板上的測試按鍵組合來實(shí)現(xiàn)。以測試軟件主界面上的按鍵組合為例,使用因果圖方法設(shè)計(jì)測試用例。測試軟件的輸入和輸出描述如表1所示。
表1測試軟件的輸入和輸出描述
測試用例設(shè)計(jì)因果圖如圖3所示。其中,a1、a2、a3之間為“或”的關(guān)系,與a4之間分別為“非”和“與”(不需加電執(zhí)行),執(zhí)行則結(jié)果分別為r1、r2和r3;a5~a10之間為“或”,與a4和a11之間分別為“與”(需加電執(zhí)行和上傳程序),執(zhí)行則結(jié)果分別為r4~r9;靜態(tài)測試項(xiàng)目和動態(tài)測試項(xiàng)目、a11(上傳程序)、a12(結(jié)束測試)之間為“非”,同時執(zhí)行則結(jié)果為r11(空循環(huán))。
圖3測試用例設(shè)計(jì)因果圖
把因果圖轉(zhuǎn)換為判定表如表2和表3所示。
表2靜態(tài)測試項(xiàng)目判定表
表3動態(tài)測試項(xiàng)目判定表
根據(jù)判定表設(shè)計(jì)測試用例,生成測試用例36個,對被測對象覆蓋全面且有效,如表4所示。
表4測試用例設(shè)計(jì)
設(shè)計(jì)出高覆蓋率和低數(shù)量的測試用例可以有效地減少軟件測試時間,提高軟件測試效率。本文從充分考慮輸入條件的各種組合、輸入條件之間的相互制約關(guān)系方面出發(fā),提出了基于因果圖的測試用例設(shè)計(jì)方法,與傳統(tǒng)的測試用例生成算法相比,因果圖法可以準(zhǔn)確、全面地覆蓋各種條件組合,生成高效的測試用例集,進(jìn)一步縮短軟件測試執(zhí)行過程的時間,在自動化測試設(shè)備的軟件測試中起到了很好的作用。
[1]王吉茂,尹平,張慧穎.軟件測試用例生成與約簡算法研究[J].飛行器測控學(xué)報(bào),2013,32(2):152.
[2]蕭萍.基于因果圖的測試用例設(shè)計(jì)及應(yīng)用[J].軟件導(dǎo)刊,2016,15(4):44-46.
[3]李莉.基于狀態(tài)轉(zhuǎn)換圖的測試用例設(shè)計(jì)方法[J].軟件產(chǎn)業(yè)與工程,2012,15(3):45.
[4]梁彥.功能測試用例設(shè)計(jì)的研究[J].信息通信,2013,125(3):5.
[5]林琳.基于黑盒測試的航天嵌入式軟件用例設(shè)計(jì)方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2012,33(6):2272.
[6]徐芳.軟件測試技術(shù)(第2版)[M].北京:機(jī)械工業(yè)出版社,2012