郝愛語
摘要:因果圖分析法是編寫測試用例的重要方法之一,屬于黑盒測試的范疇。因果圖分析法原理簡單,步驟明確,應用廣泛。但目前諸多參考教材對于該方法的介紹基本都采用了相對復雜而且相類似的實例,對學習者來說有一定的困難。結合多年軟件測試用例設計的經(jīng)驗,在實踐的前提下,就因果圖分析法設計測試用例給出了詳盡的介紹,特別是針對因果圖轉換成判定表這一步驟,提出了明確簡潔的轉換辦法并結合淺顯易懂的實例加以實現(xiàn),從而進一步簡化了因果圖分析法的應用,也為廣大學習者提供了一定的參考價值。
關鍵詞:黑盒測試;測試用例;因果圖;判定表
中圖分類號:X928.3文獻標識碼:A文章編號:1672-3198(2009)23-0217-02
1引言
隨著軟件質量受重視程度的日益增加,軟件測試在國內軟件項目開發(fā)中也越來越受重視,并得以迅速發(fā)展,而測試用例是軟件測試全部過程的核心,是測試執(zhí)行環(huán)節(jié)的基本依據(jù)。因果圖分析法是設計測試用例的重要方法之一,它屬于黑盒測試的范疇。因果圖分析法原理簡單,步驟明確,但由于目前諸多參考教材對于該方法的介紹基本都采用了相對復雜實例,特別當把因果圖轉換成判定表這一步驟,目前還沒有提出過明確性的方法,所有的實例都是直接給出答案,而沒有解釋方法,這樣就給學習者在理解上造成一定的困難,本文在教學實踐前提下,就因果圖如何轉換為判定表提出了一種簡易可行的方法,并結合實例加以實現(xiàn)。
2方法介紹
2.1因果圖定義
因果圖(cause effect graphics)是一種形式化語言,是一種組合邏輯網(wǎng)絡圖。它是把輸入條件視為“因”,把輸出或程序狀態(tài)的改變視為“果”,將黑盒看成是從因到果的網(wǎng)絡圖,采用邏輯圖的形式來表達功能說明書中輸入條件的各種組合與輸出的關系。因果圖法的基本原理是通過因果圖,把用自然語言描述的功能說明轉換為判定表,然后為判定表的每一列設計一個測試用例。
2.2產(chǎn)生背景
等價類劃分法和邊界值分析方法都是著重考慮輸入條件,但沒有考慮輸入條件的各種組合、輸入條件之間的相互制約關系。這樣雖然各種輸入條件可能出錯的情況已經(jīng)測試到了,但多個輸入條件組合起來可能出錯的情況卻被忽視了。如果在測試時必須考慮輸入條件的各種組合,則可能的組合數(shù)目將是天文數(shù)字,因此必須考慮采用一種適合于描述多種條件的組合、相應產(chǎn)生多個動作的形式來進行測試用例的設計,這就需要利用因果圖。因果圖法是一種幫助人們系統(tǒng)地選擇一組高效率測試用例的方法。
2.3因果圖基本符號和條件約束
(1)4種符號分別表示了規(guī)格說明中4種因果關系,如圖所示:
①恒等:若a=1,則b=1;若a=0,則b=0;
②非:若a=1,則b=0,若a=0,則b=1;
③或(∨):若a=1或b=1或c=1,則d=1;若a=b=c=0,則d=0;
④與(∧):若a=b=c=1,則d=1;若a=0或b=0或c=0,則d=0。
圖1
(2)因果圖中使用了簡單的邏輯符號,以直線聯(lián)接左右結點。左結點表示輸入狀態(tài)(或稱原因),右結點表示輸出狀態(tài)(或稱結果)。
(3)Ci表示原因,通常置于圖的左部;ei表示結果,通常在圖的右部。Ci和ei均可取值0或1,0表示某狀態(tài)不出現(xiàn),1表示某狀態(tài)出現(xiàn)。
(4)約束:是指輸入狀態(tài)相互之間還可能存在某些依賴關系。例如,某些輸入條件本身不可能同時出現(xiàn)。輸出狀態(tài)之間也往往存在約束。在因果圖中,用特定的符號標明這些約束。
輸入條件的約束有以下4類:
①E約束(異):a和b中至多有一個可能為1,即a和b不能同時為1。
②I約束(或):a、b和c中至少有一個必須是1,即a、b和c不能同時為0。
③O約束(唯一):a和b必須有一個,且僅有1個為1。
④R約束(要求):a是1時,b必須是1,即不可能a是1時b是0。
輸出條件約束類型:只有M約束(強制):若結果a是1,則結果b強制為0。
2.4利用因果圖生成測試用例的基本步驟(如圖2)
圖2
(1)分析軟件規(guī)格說明描述中,哪些是原因(即輸入條件或輸入條件的等級類),哪些是結果(即輸出條件),并給每個原因和結果賦予一個標識符。
(2)分析軟件規(guī)格說明描述中的語義,找出原因與結果之間,原因與原因之間對應的關系,根據(jù)這些關系,畫出因果圖。
(3)由于語法或環(huán)境限制,有些原因與原因之間,原因與結果之間的組合情況不可能出現(xiàn),為表明這些特殊情況,在因果圖上用一些記號表明約束或限制條件(可略)。
(4)把因果圖轉換為判定表。(重點改進之處)
按照由上至下,從左往右的順序依次轉換各關系,具體方法如下:
①恒等:原因為真(1)|結果為真(1),原因為假(0)|結果為假(0);
②非:原因為真(1)|結果為假(0)|原因為假(0),結果為真(1);
③或(∨):原因分別取真一次,結果為真;
④與(∧):原因同時取真一次,結果為真。
(5)把判定表的每一列拿出來作為依據(jù),設計測試用例(測試用例在判定表中)。
3因果圖實例推導
某軟件規(guī)格說明書包含“訂貨單處理程序”的處理邏輯描述為:如果訂貨金額不足500元且未過期,則向顧客發(fā)出批準單和提貨單,已過期的什么通知也不發(fā);如果訂貨金額超過500但不足1000,則發(fā)出批準單和提貨單,對已經(jīng)過期的發(fā)過期通知單;如果訂貨金額超過1000,不論是否過期,都要發(fā)出批準單和提貨單。
第一步:對說明進行分析,得到原因和結果:
原因:1——訂貨金額不足500;
2——訂貨金額超過500但不足1000;
3——訂貨金額超過1000;
4——已過期;
5——未過期。
結果:21——發(fā)批準單和提貨單;
22——發(fā)過期通知單;
23——什么通知也不發(fā)。
第二步:畫出因果圖。
畫因果圖時,原因在左,結果在右,由上而下排列,并根據(jù)功能說明書中規(guī)定的原因和結果之間的關系,用上述基本符號連接起來。在因果圖中還可以引入一些中間節(jié)點。
圖3
將原因和結果用因果圖的邏輯符號連接起來,其中編號為11的中間結點是導出結果的進一步原因。
第三步:轉換成判定表。
判定表(DecisionTable)是分析和表達多邏輯條件下執(zhí)行不同操作的情況下的工具。判定表通常由四部分組成:
(1)條件樁(ConditionStub):列出了問題的所有條件。
(2)動作樁(ActionStub):列出了問題規(guī)定可能采取的操作。
(3)條件項(ConditionEntry):列出針對它左列條件的取值。
(4)動作項(ActionEntry):列出了在條件項的各種取值情況下應該采取的動作。
表1判定表(由上至下,從左往右排序號;設訂貨金額為W)
4結語
通過以上介紹,可以得到一個快捷而簡單的利用因果圖設計測試用例的辦法,尤其在將因果圖轉換成判定表時,已經(jīng)變得有章可循,實際上這個辦法是通用的,對于所有的實例都是可以實現(xiàn)的,學習者可以嘗試。
參考文獻
[1]@徐芳.軟件測試技術[M].北京:機械工業(yè)出版社,2007.
[2]@朱少民.全程軟件測試[M].北京:電子工業(yè)出版社,2007.