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()
斷定覆蓋:
斷定覆蓋也稱分支覆蓋,含義是,執行足夠的測試用例,使得程序中的每個分支至少經過一次;
只比語句覆蓋強一點,不能徹底查出在判斷的條件中存在的錯誤,須要更強的邏輯覆蓋準則去檢驗內部條件。
條件覆蓋:
含義是執行足夠的測試用例,使得程序中每一個判斷的每一個條件的每一個可能值至少執行一次