白盒測試的覆蓋標準

   1.白盒測試開展的必要條件:算法

      程序的規格說明及程序清單數據結構

      規格說明:規格說明是一個對軟件所應知足的要求,以可驗證的方式做出徹底、精確陳述的文件。函數

 

      • 功能規格說明----對軟件所應具有的功能做出規定;
      • 性能規格說明----對軟件所應具有的性能,如計算精度、響應速度和佔用存儲空間的大小等做出規定;
      • 接口規格說明----對軟件與其環境之間、軟件各組成部分之間的接口關係做出規定;
      • 設計規格說明----對軟件的設計加以說明。典型的內容包括使用的算法、控制邏輯、數據結構、模塊間接口關係,以及輸入-輸出格式等。

        程序清單:作的一個完整的工程以後,全部編寫的程序代碼,包括主函數,調用函數,子函數等。 性能

   2.白盒測試的覆蓋標準測試

    最完全的白盒測試是覆蓋程序中的每一條路徑,但因爲程序中有循環,因此路徑數目極大,沒法執行全部的路徑,因此只能但願能儘量的覆蓋到更多的路徑。spa

   

    好比上述程序流程圖中有5條路徑,包含了20次循環,若是要對其路徑進行窮舉覆蓋,那麼就有5^20(95 367 431 640 625)條路徑,假如每條路徑執行的時間爲1毫秒,那麼一天24小時不停的執行,則須要大約3024年。可見,徹底覆蓋全部的路徑是不可能的。爲了衡量測試的覆蓋程度,須要一些標準,經常使用的標準從低到高分別是:設計

    語句覆蓋:code

      語句覆蓋是一種較弱的測試標準,含義就是,選擇足夠的測試用例,使得程序中的每一條語句至少能被執行一次。blog

      是最弱的邏輯覆蓋,它必須和其餘方法交互使用。接口

      

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
        return X

    def test_demo_with_conditional_coverage_1(self):
        '''
        使用語句覆蓋測試 方法demo
        A=1,B=0,X=1
        斷定A == 1 and B == 0爲真,執行
        斷定A > 2 or X == 1爲真,執行
        '''
        X = self.demo(A=2, B=0, X=1)
        expected = 1
        self.assertEqual(expected, X)



if __name__ == '__main__':
    unittest.main()

 

 

    斷定覆蓋:

      斷定覆蓋也稱分支覆蓋,含義是,執行足夠的測試用例,使得程序中的每個分支至少經過一次;

      只比語句覆蓋強一點,不能徹底查出在判斷的條件中存在的錯誤,須要更強的邏輯覆蓋準則去檢驗內部條件。

    條件覆蓋:

      含義是執行足夠的測試用例,使得程序中每一個判斷的每一個條件的每一個可能值至少執行一次

相關文章
相關標籤/搜索