軟件測試筆記(十二)白盒測試和黑盒測試的區別

前言

前面咱們聊過《軟件測試筆記(十一)自動化測試和手動測試的選擇》,有些朋友和我聊到在測試裏面還有相似的一些概念,好比白盒測試和黑盒測試。今天就你們分享下我對這兩種測試的理解。編程

黑盒測試

它是根據軟件需求和規範建立測試場景/案例,按照需求文檔裏面定義的行爲及規範進行輸入而且檢查輸出的測試。segmentfault

測試人員在不查看內部代碼結構的狀況下,評估被測軟件的功能。它能夠應用於軟件測試的各個層次,如單元、集成、系統和驗收測試。ide

由於不查看源碼,因此測試人員只對應用程序的功能部分執行測試,以確保軟件的行爲符合預期,因此是基於行爲的測試。測試

黑盒測試的經常使用的一些技術

  • 等價劃分:等價劃分也稱爲等價類劃分法。在等價劃分法中,軟件的輸入被劃分爲指望表現出類似行爲的組,所以它們極可能以相同的方式被輸入。所以,從每一個組中選擇一個輸入來設計測試用例。
  • 邊界值分析:邊界值分析(BVA)是在測試有效和無效分區的邊界值的基礎上進行的。每一個等價分區邊緣的行爲比分區內的行爲更加容易出現缺陷,所以邊界是測試可能產生缺陷的區域。
  • 決策表:決策表又稱因果表。這種測試技術適用於輸入之間具備邏輯關係的功能。在決策表技術中,咱們處理輸入的組合。爲了識別決策表的測試用例,咱們能夠查看它的條件和輸出。
  • 狀態轉換:使用狀態轉換測試,咱們從須要測試的不一樣系統轉換的應用程序中選擇測試用例。當應用程序爲相同的輸入提供不一樣的輸出時,咱們能夠應用這個方法,這取決於在之前的狀態中發生了什麼。

白盒測試

白盒測試是基於應用程序內部的代碼結構在白盒測試中,系統的內部視角以及編程技巧被用來設計測試用例這種測試一般在單元級別進行。spa

白盒測試的經常使用的一些技術

  • 語句覆蓋率:它是一種經常使用的測試覆蓋方式,它衡量被測代碼中每一個語句是夠被執行到了。固然前提條件是可執行代碼,相似的註釋,頭文件,空行,等是沒法被覆蓋的。一般它考慮的是代碼覆蓋的行數,而不考慮其內部的邏輯處理,因此測試效果不太明顯。

    `
    int divide(int a, int b)
    {
    return a / b;
    }
    `
    假設咱們的測試用例是:
    TeseCase: a = 10, b = 5
    那麼它的語句覆蓋率是100%,可是除零的問題卻沒有表現出來。因此咱們引入了其餘的測試覆蓋率。設計

  • 分支覆蓋率:又稱斷定覆蓋率,它是指源碼中每一個判斷的取真分支和取假分支至少經歷一次,即判斷的真假均曾被知足。例以下圖就是一個關於分支覆蓋的一個設計。

    1018115-20161008171000176-82131142.png

  • 路徑覆蓋率:它包含全部可能的控制路徑,在路徑覆蓋技術中取零、一次和多個(理想,最大)項的全部循環路徑,基於程序設計的邏輯複雜性度量來準備測試用例。因此能夠認爲是分支覆蓋和語句覆蓋的集合。

總結

黑盒測試 白盒測試
不查看內部代碼結構 瞭解程序內部的代碼結構
按照根據軟件需求和規範設計 按照程序內部邏輯設計
涉及到單元、集成、系統和驗收測試 涉及到單元、集成測試
測試人員不須要程序經驗 須要有必定的程序經驗
能夠是手動或者是自動化測試 能夠是手動或者是自動化測試

歸納的來講,黑盒測試和白盒測試的側重點是不同的。黑盒更關注的是軟件實現的功能是否按照需求文檔來,而白盒測試更加關注程序內部的邏輯是否是正確。若是你們有其餘的見解或者想法,也請留言區一塊兒討論。code

相關文章
相關標籤/搜索