什么是黑盒测试和白盒测试?

7

我正在尝试理解其中一个与另一个的比较。

白盒测试是否是您可以看到代码的地方,黑盒测试是否是您不查看代码的地方?


1
请参阅先前存在的 http://stackoverflow.com/questions/402161/black-box-vs-white-box-testing 相关内容。 - dmckee --- ex-moderator kitten
8个回答

10

问) 白盒测试是指可以看到代码,黑盒测试是指不看代码吗?

黑盒测试

  • 这是一种在不考虑系统如何生成输出的情况下,向系统提供输入并检查其输出的过程。也被称为行为测试、数据驱动测试或I/O驱动测试、功能测试。

  • 仅基于对需求的分析进行测试(规范、用户文档等)。

优点:

1) 比白盒测试更有效地测试大型代码单元。

2) 测试人员和程序员相互独立。

3) 根据用户的视角进行测试。

4) 可以在规范完成后立即设计测试用例。

缺点:

1) 它可能会忽略许多程序路径未经测试。

2) 实际上只能测试少量可能的输入,要测试每个可能的输入流几乎需要永远。

白盒测试

  • 这是一种向系统提供输入并检查系统如何处理输入以生成输出的过程。

  • 测试人员必须了解代码。

优点:

1) 这种测试有助于揭示结构层次上的缺陷。测试可以深入到顶部和功能层以下,以揭示缺陷。

缺点:

1) 不能确保满足用户需求。

2) 不能确定决策、条件和路径是否正确。


非常好的回答。但是好像最后一句话被截断了? - Sámal Rasmussen
白盒测试的缺点在于它与实现高度耦合,并且需要在实现发生偶然更改但不改变行为时进行更改。因此,白盒测试的维护成本较高。 - Sámal Rasmussen

5

基本上是的。

在黑盒测试中,您测试对象的预期输入是否产生了预期输出,而无法更改底层代码。

在白盒测试中,您可以看到代码并测试其所有可能的路径。


他们应该称之为清晰盒子测试,而不是白盒子测试。 - neuromancer
另外请注意,如果您有一个代码分支,无法使用有效的黑盒测试用例进行测试,那么要么您正在尝试测试某些次要且不相关的内容,要么您已经找到了一些死代码。 - Sámal Rasmussen
我有一个问题:“您可以测试所有可能的路径。”那么我应该怎么做?是通过程序的用户界面测试所有可能的路径,还是在代码中编写测试场景来进行测试? - Jarkid

5

维基百科:

白盒测试使用系统的内部视角,基于内部结构设计测试用例。它需要编程技能来识别软件中的所有路径。

相对地,

黑盒测试从测试对象的外部视角出发推导测试用例。


2

是的,你基本上已经理解了。黑盒测试是在没有对内部任何东西有知识(或访问权限)的情况下测试外部功能。白盒测试是能够查看(并可能修改)所测试内容的内部状态。它们都有不同的用途。单元测试通常(但不总是)是白盒测试。


1
单元测试通常在非常细粒度的级别上测试特定函数。它们是最低级别的测试,通常由应用程序的开发人员创建,并形成由数百或数千个测试组成的回归测试套件,可以在任何更改时运行以检测回归。 - Francis Upton IV

1

白盒测试

了解软件的内部工作原理后,进行测试以确保所有软件的内部操作都按照规格执行。

黑盒测试

在为每个软件组件设计指定功能后,进行测试以确保每个功能都能正常运行。


1

白盒测试就像是使用(玻璃)透明盒子来输入并验证输出,即在此过程中您给出输入观察输入的处理(功能流、变量值、计算)并验证输出是否符合预期。

黑盒测试就像是使用(木制)非透明盒子来输入并验证输出,即在此过程中您给出输入不观察输入的处理(功能流、变量值、计算)并验证输出是否符合预期。


1
在白盒测试中,我们使用对系统内部结构的了解,即测试人员需要了解编程语言和编码。
而在黑盒测试中,我们忽略系统的内部,并关注输入和输出之间的关系。

0

白盒测试 :- 需要编程和实现知识。

黑盒测试 :- 不需要编程和实现知识。


您可以编写黑盒单元测试。对于这些测试,您绝对需要能够编写代码。 - Sámal Rasmussen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接