馬艷
(中國人民解放軍92941部隊,遼寧葫蘆島125001)
軟件測試作為軟件生命周期的一個重要環節,對軟件質量起著至關重要的作用。影響軟件測試質量和效率的因素很多,如測試環境的搭建、測試人員的素質、測試工具和測試方法等,其中測試用例的設計和執行是核心步驟[1]。常用的黑盒測試用例設計方法中,等價類劃分法和邊界值分析法都是著重考慮輸入條件,但沒有考慮輸入條件的各種組合、輸入條件之間的相互制約關系,這樣雖然各種輸入條件可能出錯的情況已經測試到了,但多個輸入條件組合可能出錯的情況卻被忽視了。如果在測試時全面考慮輸入條件的各種組合,則可能的組合數目將是天文數字。而因果圖法能夠根據輸入條件之間的相互依賴和制約關系,準確、全面地覆蓋各種條件組合,高效生成無遺漏、不重復的測試數據條件,因此受到越來越多的關注[2-5]。
因果圖法是一種利用圖解法分析輸入(原因)和輸出(結果)的各種情況,畫出因果圖,轉換為判定表,從而設計測試用例的方法,適合于檢查程序輸入條件的各種組合情況[6]。
因果圖法的4種圖形符號分別表示了軟件需求規格說明書中的恒等、非、或、與4種因果關系(見圖1所示)。

圖1因果圖的4種基本符號
狀態相互之間可能存在某些依賴關系,稱為約束。輸入條件的約束有E(異)、I(或)、O(唯一)和R(要求)4類。輸出條件的約束只有M約束(強制),見圖2所示。

圖2因果圖的約束符號
利用因果圖法設計測試用例的方法如下[2]:
(1)分析軟件規格說明描述中哪些是原因(輸入條件),哪些是結果(輸出條件),設計必要的中間節點,給每個原因、結果和中間節點賦予各自的標識符。
(2)分析軟件規格說明描述中的語義,找出原因與原因之間、與結果之間、與中間節點之間的對應關系,根據這些關系畫出因果圖。由于語法或環境限制,有些原因與原因之間、與結果之間、與中間節點之間的組合情況不可能出現,為表明這些特殊情況,用相應的記號表明約束或限制條件。
(3)把因果圖轉換為判定表。
(4)把判定表的每一列拿出來作為依據,設計測試用例。
使用因果圖法充分考慮到了輸入情況的各種組合以及各個輸入之間的相互制約關系,能夠幫助軟件測試人員按照上述步驟高效率地設計測試用例。另外,因果圖法將自然語言的規格說明轉化成形式語言的規格說明,可以發現規格說明描述中存在的不完整性和二義性,有助于軟件需求規格說明書的完善。
以某型裝備自動化測試設備(ATE)軟件測試為例,其測試軟件含9個測試項目,其中3個為靜態測試項目(測試1、2、3,不需加電執行),6個為動態測試項目(測試 4、5、6、7、8、9,需加電執行和上傳程序)。每個測試項目中又含有若干測試子程序,每個測試子程序通過點擊測試軟件虛擬面板上的測試按鍵組合來實現。以測試軟件主界面上的按鍵組合為例,使用因果圖方法設計測試用例。測試軟件的輸入和輸出描述如表1所示。

表1測試軟件的輸入和輸出描述
測試用例設計因果圖如圖3所示。其中,a1、a2、a3之間為“或”的關系,與a4之間分別為“非”和“與”(不需加電執行),執行則結果分別為r1、r2和r3;a5~a10之間為“或”,與a4和a11之間分別為“與”(需加電執行和上傳程序),執行則結果分別為r4~r9;靜態測試項目和動態測試項目、a11(上傳程序)、a12(結束測試)之間為“非”,同時執行則結果為r11(空循環)。

圖3測試用例設計因果圖
把因果圖轉換為判定表如表2和表3所示。

表2靜態測試項目判定表

表3動態測試項目判定表
根據判定表設計測試用例,生成測試用例36個,對被測對象覆蓋全面且有效,如表4所示。

表4測試用例設計
設計出高覆蓋率和低數量的測試用例可以有效地減少軟件測試時間,提高軟件測試效率。本文從充分考慮輸入條件的各種組合、輸入條件之間的相互制約關系方面出發,提出了基于因果圖的測試用例設計方法,與傳統的測試用例生成算法相比,因果圖法可以準確、全面地覆蓋各種條件組合,生成高效的測試用例集,進一步縮短軟件測試執行過程的時間,在自動化測試設備的軟件測試中起到了很好的作用。
[1]王吉茂,尹平,張慧穎.軟件測試用例生成與約簡算法研究[J].飛行器測控學報,2013,32(2):152.
[2]蕭萍.基于因果圖的測試用例設計及應用[J].軟件導刊,2016,15(4):44-46.
[3]李莉.基于狀態轉換圖的測試用例設計方法[J].軟件產業與工程,2012,15(3):45.
[4]梁彥.功能測試用例設計的研究[J].信息通信,2013,125(3):5.
[5]林琳.基于黑盒測試的航天嵌入式軟件用例設計方法[J].計算機工程與設計,2012,33(6):2272.
[6]徐芳.軟件測試技術(第2版)[M].北京:機械工業出版社,2012