軟體測試 - 因果圖
開發好的軟體會經過不同的測試階段來驗證它是否滿足所有需求和條件。在黑盒方法中,會驗證從輸入資料集生成的輸出。因果圖是屬於黑盒測試的一種技術。它是一種使用圖表來描述多個輸入組合狀態的方法。
什麼是因果圖?
因果圖是一種有助於生成高產出測試用例的方法。這種方法是為了克服等價劃分和邊界值分析的漏洞而提出的,在這些方法中,測試所有輸入條件的組合是不可行的。
因此,每當我們需要驗證一些由輸入條件組合組成的關鍵場景時,就使用因果圖。得到的圖被轉換為決策表,該表又可用於設計測試用例。因果圖方法的主要好處是它有助於發現是否存在不完整或不明確的需求。
從因果圖建立測試用例
從因果圖建立測試用例的步驟如下:
步驟 1 - 從需求中檢測原因和結果,然後為它們分配不同的編號。原因是獨特的輸入條件,由於這些條件,系統會發生某種變化。結果是系統中由輸入條件引起的輸出條件或狀態變化。
步驟 2 - 建立一個布林圖,連線所有原因和結果。這被稱為因果圖,它描述了為哪些原因產生了不同的結果。
步驟 3 - 指出因果圖上的約束,描述實際上不可能的所有原因和/或結果組合。所有可能的約束如下:
互斥約束
這些約束存在於兩個原因 C1 和 C2 之間,使得 C1 或 C2 之一的值可以為 1,兩者不能同時為 1。
包含約束
這些約束存在於原因 C1、C2 和 C3 之間,使得它們中至少一個始終等於 1,因此它們不能同時為 1。
唯一約束
這些約束存在於原因 C1 和 C2 之間,使得 C1 和 C2 中只有一個為 1。
需要約束
這些約束存在於原因 C1 和 C2 之間,如果 C1 等於 1,則 C2 也應等於 1。C1 的值為 1 而 C2 的值為 0 是不可能的。
掩碼約束
這些約束存在於結果 E1 和 E2 之間,如果 E1 等於 1,則 E2 應為 0。
透過連結因果圖中的狀態條件,將因果圖轉換為有限項決策表。在決策表中,每一列都轉換為一個測試用例。
因果圖中使用的符號
因果圖中使用的符號如下:
恆等函式
它表示如果條件 C1 和事件 E1 透過恆等函式相關聯,則表示如果 C1 為真或等於 1,則 E1 也等於 1,否則 E1 等於 0。
非函式
它表示如果條件 C1 和事件 E1 透過非函式相關聯,則表示如果 C1 為真或等於 1,則 E1 等於 0,否則 E1 等於 1。
或函式
用符號 V 表示。它可以用來將 'n' 個條件關聯到一個結果。它表示如果條件 C1 或 C2 或 C3 為真或等於 1,則事件 E1 等於 1,否則 E1 等於 0。
與函式
用符號 / 表示。它可以用來將 'n' 個條件關聯到一個結果。它表示如果條件 C1 和 C2 都為真或等於 1,則事件 E1 等於 1,否則 E1 等於 0。
示例
讓我們舉一個問題陳述的例子,該陳述說第一列應具有值 X 或 Y。第二列應僅包含數字。如果這兩個條件都滿足,則應修改檔案。如果第一列不包含值 X 或 Y,則生成訊息 M1。如果第二列輸入的不是數字,則生成訊息 M2。
要使用控制流圖解決此問題,我們首先要總結不同的條件和事件。
- 條件 1 用 C1 表示,指第一列包含值 X。
- 條件2,記作C2,表示第1列的值為Y。
- 條件3,記作C3,表示第2列的值為一個數字。
- 效應1,記作E1,表示修改一個檔案。效應E1應該在條件→(C1∨C2)∧C3 成立時發生。
- 效應2,記作E2,表示訊息M1。
- 效應3,記作E3,表示訊息M2。
上述問題陳述的因果圖如下:
結論
本教程對軟體因果圖進行了全面講解。我們首先介紹了什麼是因果圖、如何從因果圖建立測試用例、因果圖中使用的符號以及因果圖示例。這使您掌握了軟體因果圖的深入知識。建議您多加練習所學內容,並探索與軟體測試相關的其他知識,以加深理解並拓寬視野。