因果圖來自黑盒測試技術,該技術強調了給定結果與影響結果的所有因素之間的關係。它用於編寫動態測試用例。
當代碼根據用戶輸入動態運行時,將使用動態測試用例。例如,在使用電子郵件帳戶時,在輸入有效的電子郵件時,系統會接受它,但是當您輸入無效的電子郵件時,它會拋出錯誤消息。在這種技術中,輸入條件被賦予原因,並且這些輸入條件的結果具有效果。
因果圖技術基於一系列需求,用於確定可覆蓋軟體最大測試區域的最小可能測試用例。
因果圖測試的主要優點是,它減少了測試執行的時間和成本。
該技術旨在減少測試用例的數量,但仍覆蓋所有必要的測試用例,覆蓋範圍最大,以達到所需的應用程式品質。
因果圖技術通過使用AND
,OR
和NOT
等邏輯運算符將需求規範轉換為輸入和輸出條件之間的邏輯關係。
因果圖中使用的符號
與 - E1
是一種效應,C1
和C2
是原因。如果C1
和C2
都為真,那麼效果E1
將為真。
或 - 如果C1
和C2
中的任何原因為真,那麼效果E1
將為真。
非 - 如果原因C1
為假,則效果E1
為真。
互斥 - 只有一個原因是真的。
讓我們嘗試用一些例子來理解這種技術:
情況:
第1列中的字元應為A
或B
,第2列中的字元應為數字。如果兩列都包含適當的值,則進行更新。如果第1列的輸入不正確,即既不是A
也不是B
,則將顯示消息X
。如果第2列中的輸入不正確,即輸入不是數字,則將顯示消息Y
。
- 如果第一列中的字元是“A”或“B”,則必須更新檔,而在第二列中,字元應為數字。
- 如果第一列中的值不正確(字元既不是
A
也不是B
),則會顯示消息X
。 - 如果第二列中的值不正確(字元不是數字),則將顯示消息
Y
。
現在,將針對上述情況製作因果圖:
原因:
C1
- 第1列中的字元是A。C2
- 第1列中的字元是B。C3
- 第2列中的字元是數字。
效果:
E1
- 更新(C1或C2)和C3E2
- 顯示資訊X(不是C1而不是C2)E3
- 顯示資訊Y(非C3)
AND
,OR
,NOT
是邏輯門。
效果E1-更新 - 效果E1存在的邏輯是“(C1或C2)和C3”。對於C1或C2,C1和C2中的任何一個都應該為真。對於邏輯AND C3(第2列中的字元應為數字),C3必須為真。換句話說,對於存在效果E1(更新),任何一個來自C1和C2,但C3必須為真。可以在圖中看到原因C1和C2通過OR邏輯連接,效果E1與AND邏輯連接。
效果E2-顯示資訊X - 效果E2存在的邏輯是“非C1而不是C2”,這意味著C1(第1列中的字元應為A)和C2(第1列中的字元應為B)應為假。換句話說,對於效果E2的存在,第1列中的字元不應該是A或B。可以在圖中看到,C1或C2通過NOT邏輯與效果E2連接。
效果E3 - 顯示按摩Y-效果E3存在的邏輯是“非C3”,表示原因C3(第2列中的字元是數字)應為假。換句話說,對於效果E3的存在,第2列中的字元不應該是數字。可以在圖中看到,C3通過NOT邏輯與效果E3連接。
因此,它是給定情況的因果圖。測試人員需要將原因和結果轉換為邏輯語句,然後設計因果圖。如果函數根據輸入(原因)給出輸出(效果),則認為它是無缺陷的,如果不這樣做,則將其發送給開發團隊進行更正。
步驟總結:
- 畫出效果和原因的圓圈。
- 從效果開始,然後選擇導致此效果的原因。
- 最後繪製相互排斥的原因(通過一種效應和一種原因直接連接的獨佔原因)。
- 使用邏輯門繪製動態測試用例。