白盒測試系列(五)條件組合覆蓋

2022-01-22 00:28:45 字數 2963 閱讀 2204

判定中條件的各種組合都至少被執行一次

1、滿足條件組合覆蓋的用例一定滿足語句覆蓋

2、滿足條件組合覆蓋的用例一定滿足條件覆蓋

3、滿足條件組合覆蓋的用例一定滿足判定覆蓋

4、滿足條件組合覆蓋的用例一定滿足條件判定覆蓋

5、條件組合覆蓋沒有考慮各判定結果(真或假)組合情況,不滿足路徑覆蓋

6、條件組合數量大,設計測試用例的時間花費較多

a = int(input('請輸入a的值'))

b = int(input('請輸入b的值'))

x = int(input('請輸入x的值'))

if a > 1 and b == 0:

x = x / a

if a == 2 or x > 1:

x = x + 1

print('結束')

用例編號

測試用例

覆蓋條件

覆蓋路徑

預期結果

1a=2,b=0,x=4

(a>1) and (b== 0), (a==2) or (x>1)

a-c-e

x = 3

2a=2,b=1,x=1

(a>1) and (b!=0), (a==2) or (x<=1)

a-b-e

x = 2

3a=1,b=0,x=2

(a<=1) and (b==0), (a!=2) or (x>1)

a-b-e

x = 3

4a=1,b=1,x=1

(a<=1) and (b!=0), (a!=2) or (x<=1)

a-b-d

x = 1

執行用例1 ,判定(a > 1 and b == 0)為真 ,執行 x = x / a, x=2;

判定(a == 2 or x > 1)為真,執行x = x + 1 ;

輸出 x = 3 ;

程式結束

執行用例2 ,判定(a > 1 and b == 0)為假 ,不執行 x = x / a ;

判定(a == 2 or x > 1)為真,執行x = x + 1 ,x=2 ;

輸出 x = 2 ;

程式結束

執行用例3 ,判定(a > 1 and b == 0)為假 ,不執行 x = x / a ;

判定(a == 2 or x > 1)為真,執行x = x + 1 ,x=2 ;

輸出 x = 3 ;

程式結束

執行用例4 ,判定(a > 1 and b == 0)為假,不執行x = x / a ;

判定(a == 2 or x > 1)為假,不執行x = x + 1 ;

輸出 x = 1 ;

程式結束

從上述用例可以得出:

1、滿足條件判定覆蓋的測試用例滿足語句覆蓋

2、滿足條件判定覆蓋的測試用例滿足條件覆蓋,判定覆蓋 ,條件判定覆蓋

3、上述用例未考慮每個判定的真假組合情況(路徑覆蓋),程式所有路徑沒有覆蓋

# encoding:utf-8

import unittest

class testdemo(unittest.testcase):

def demo(self, a, b, x):

if a > 1 and b == 0:

x = x / a

if a == 2 or x > 1:

x = x + 1

return x

def test_demo_with_conditional_combination_coverage_1(self):

'''使用條件組合覆蓋測試 方法demo

a=2,b=0,x=4

'''x = self.demo(a=2, b=0, x=4)

expected = 3

self.assertequal(expected, x)

def test_demo_with_conditional_combination_coverage_2(self):

'''使用條件組合覆蓋測試 方法demo

a=2,b=1,x=1

'''x = self.demo(a=2, b=1, x=1)

expected = 2

self.assertequal(expected, x)

def test_demo_with_conditional_combination_coverage_3(self):

'''使用條件組合覆蓋測試 方法demo

a=1,b=0,x=2

'''x = self.demo(a=1, b=0, x=2)

expected = 3

self.assertequal(expected, x)

def test_demo_with_conditional_and_decision_coverage_4(self):

'''使用條件組合覆蓋測試 方法demo

a=1,b=1,x=1

'''x = self.demo(a=1, b=1, x=1)

expected = 1

self.assertequal(expected, x)

if __name__ == '__main__':

unittest.main()

白盒測試方法 白盒測試系列(一) 語句覆蓋

最近發現身邊測試的同學都不太了解 理解白盒測試,網上的資料又是千篇一律,不易理解。想做乙個更容易讓測試同學學習的白盒測試基礎教程。在設計和執行用例的過程中,把程式視為透明的盒子,不但關注程式輸入的內容和輸出結果,還需要關注程式內部結構或運作程式中每乙個語句至少能被執行一次1 程式中每乙個語句至少執行...

白盒測試系列(二)判定覆蓋(分支覆蓋)

程式中每個判定至少有一次為真值,有一次為假值,使得程式中每個分支至少執行一次 1 滿足判定覆蓋的測試用例一定滿足語句覆蓋 2 對整個判定的最終取值 真或假 進行度量,但判定內部每乙個子表示式的取值未被考慮 a int input 請輸入a的值 b int input 請輸入b的值 x int inp...

白盒測試技術 語句覆蓋 判定覆蓋 條件覆蓋

結合乙個例子說 畫出相應的程式流程圖,更方便分析 首先我們要明確一點 測試用例要盡可能少。1 語句覆蓋 被測程式中每個語句至少執行一次 路徑 s a b c d e a 2,b 0,預計輸出結果x 2 2 判定覆蓋 不僅每個語句必須至少執行一次,而且每個判定的每種可能的結果都應該至少執行一次 至少兩...