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


判定覆蓋(分支覆蓋)

一、定義:

程序中每個判定至少有一次為真值,有一次為假值,使得程序中每個分支至少執行一次

二、特點:

1、滿足判定覆蓋的測試用例一定滿足語句覆蓋
2、對整個判定的最終取值(真或假)進行度量,但判定內部每一個子表達式的取值未被考慮

三、 程序流程圖:

四、源碼:

demo.py

#encoding:utf-8 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('結束') 

五、測試用例設計

用例編號 測試用例 覆蓋路徑 預期結果
1 A=3,B=0,X=1 a-c-d X = 1/3
2 A=2,B=1,X=3 a-b-e X = 4

執行用例1 ,判定(A > 1 and B == 0)為真 ,執行X = X / A ,X =1/3;
判定(A == 2 or X > 1)為假,不執行X = X + 1 ; 程序結束

執行用例2 ,判定(A > 1 and B == 0)為假,不執行X = X / A ;
判定(A == 2 or X > 1)為真,執行X = X + 1 ,X = 4 ; 程序結束

從上述用例可以得出:
1、判定覆蓋測試用例一定滿足語句覆蓋
2、判定覆蓋只需考慮每個判定真假,每個分支執行一次即可

六、語句覆蓋和判定覆蓋關系圖

七、使用Python Unittest 實現上述用例

# 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_decision_coverage_1(self): ''' 使用判定覆蓋測試 方法demo A=3,B=0,X=1 ''' X = self.demo(A=3, B=0, X=1) expected = 1/3 self.assertEqual(expected, X) def test_demo_with_decision_coverage_2(self): ''' 使用判定覆蓋測試 方法demo A=2,B=1,X=3 ''' X = self.demo(A=2, B=1, X=3) expected = 4 self.assertEqual(expected, X) if __name__ == '__main__': unittest.main()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM