2012-03-27 5559 views
17

「單元測試」是否屬於白盒或黑盒測試?或者它完全是一種獨立的測試類型,而不是其他兩種?「單元測試」是否屬於白盒或黑盒測試?

+0

坦白說,維基百科關於白盒測試的文章對它進行了很好的解釋。 – 2012-03-27 15:49:13

+3

我注意到,經常重構代碼的白盒單元測試會創建很多工作來維護測試本身。 – airboss 2014-09-05 21:11:29

回答

18

我認爲這個article by Kent Beck更多地提到了TDD,單元測試總結得相當好。基本上,這取決於你如何實際編寫測試*。 Here is another article on the subject這可能有助於澄清事情。

*如果您在應用程序內進行測試,那麼它是白盒。如果你正在測試它,就像外人只會打電話給你面向公衆的API,那麼它就是黑匣子。

+3

在這兩種情況下,他們都是白盒測試。看來很多人都混淆了這兩種測試的定義。單元測試只是測試你的「代碼」的每個單元類。這是一個白盒測試。黑盒測試測試你的「應用程序」的整體功能。如果你願意,你可以用任何方式編寫並自動化。但是單元測試......好吧,它總是在測試白盒測試:) – 2015-07-22 08:08:47

+3

如果你在代碼和*的幫助下編寫單元測試/在代碼基礎上*單元測試是白盒測試。如果你在*代碼之前編寫單元測試*或者根據規範編寫單元測試 - 單元測試是回框測試。 – hellboy 2015-11-10 12:14:25

9

白盒測試的常用標準是執行路徑和數據結構敏化。這些有時稱爲「分支測試」,「路徑測試」,「數據流測試」。請參閱白盒測試的維基百科。

也就是說,單元測試是指在系統結構中進行測試的級別,而白盒和黑盒測試是指在任何級別測試方法是否基於內部設計還是僅限於設備的外部規格。

因此,如果您的單元測試會敏化所測試單元中的所有執行路徑和數據結構,那麼這是一個白盒測試。但是,如果你的單元不能敏化單元的大部分路徑和數據結構,那麼它就不能聲稱是白盒測試。

請注意,在某些組織中,單元測試稱爲白盒測試,無論單元測試是基於單元的設計而不是僅基於其API。在這一點上最好不要與你的老闆爭論。