以前說了黑盒測試,今天聊聊白盒測試測試
白盒測試用例設計的一個很重要的評估標準就是對代碼的覆蓋度。一說到覆蓋,相信你們都感受很是熟悉,可是常見的覆蓋都有哪些?各自有什麼優缺點?在白盒測試的用例設計中咱們應該如何自如地運用呢?設計
簡單說說,白盒測試的覆蓋方法:語句覆蓋、斷定覆蓋、條件覆蓋、組合覆蓋和路徑覆蓋。
語句覆蓋,就是針對代碼語句。設計出來的測試用例要保證程序中的每個語句至少被執行一次。一般語句覆蓋被認爲是「最弱的覆蓋」,由於它僅僅考慮對代碼中的執行語句進行覆蓋而沒有考慮各類條件和分支,所以在實際運用中語句覆蓋很難發現代碼中的問題。 get
斷定覆蓋,就是說設計的測試用例要保證讓被測試程序中的每個分支都至少執行一次。斷定覆蓋比語句覆蓋強一些,能發現一些語句覆蓋沒法發現的問題。可是每每一些斷定條件都是由多個邏輯條件組合而成的,進行分支判斷時至關於對整個組合的最終結果進行判斷,這樣就會忽略每一個條件的取值狀況,致使遺漏部分測試路徑。自動化
條件覆蓋,就是要求所設計的測試用例能使每一個斷定中的每個條件都得到可能的取值,即每一個條件至少有一次真值、有一次假值。一般而言條件覆蓋比斷定覆蓋強,由於條件覆蓋使得斷定中的每個條件都取到了不一樣的結果,這一點斷定覆蓋則沒法保證。但條件覆蓋也有缺陷,由於它只能保證每一個條件都取到了不一樣結果,但沒有考慮到斷定結果,所以有時候條件覆蓋並不能保證斷定覆蓋。test
組合覆蓋,就是說設計的測試用例應該使得每一個斷定中的各個條件的各類可能組合都至少出現一次。顯然,知足條件組合覆蓋的測試用例必定是知足斷定覆蓋、條件覆蓋和斷定條件覆蓋的。自動化測試
路徑覆蓋,意思是說咱們設計的測試用例能夠覆蓋程序中全部可能的執行路徑。這種覆蓋方法能夠對程序進行完全的測試用例覆蓋,比前面講的五種方法覆蓋度都要高。程序
總結方法
以上簡單描述了幾種不用的邏輯覆蓋方法的原則和優劣。在實際的操做中,要正確使用白盒測試的代碼覆蓋方法,就要從代碼分析和代碼調研入手,根據調研的結果,能夠選擇上述方法中的某一種,或者好幾種方法的結合,設計出高效的測試用例,能儘量的全面地覆蓋到代碼中的每個邏輯路徑。這樣白盒測試在結合自動化測試,能更好的進行測試。總結
TestBird - 手遊和App自動化測試平臺co