59

你会说哪种类型的测试应该是重点(对于测试人员/质量保证人员),为什么?

来自维基百科的一组快速定义:

黑盒测试

  • 以测试对象的外部视角推导出测试用例。这些测试可以是功能性的或非功能性的,尽管通常是功能性的。测试设计人员选择有效和无效输入并确定正确的输出。不知道测试对象的内部结构。

白盒测试

  • 使用系统的内部视角来设计基于内部结构的测试用例。它需要编程技能来识别通过软件的所有路径。测试人员选择测试用例输入以通过代码练习路径并确定适当的输出。在电气硬件测试中,电路中的每个节点都可能被探测和测量;一个例子是在线测试(ICT)。

只是为了澄清一点,我意识到两者都很重要,但是通常它们在开发和质量检查之间是分开的。

内部知识对测试人员/QA 是否重要?我听说过使用这些知识进行测试可以让他们更好地测试问题的论点,但我也听说过这种知识会分散功能需求并促进“测试代码”而不是预期解决方案的论点。

4

17 回答 17

53
  • 黑盒测试应该是测试人员/QA 的重点。
  • 白盒测试应该是开发人员的重点(即单元测试)。
  • 回答这个问题的其他人似乎已经将该问题解释为哪个更重要,白盒测试或黑盒测试。我也相信它们都很重要,但您可能想查看这篇IEEE 文章,该文章声称白盒测试更重要。
于 2008-12-31T04:02:57.157 回答
11

白盒测试等于软件单元测试。开发人员或开发级别测试人员(例如另一位开发人员)在将其集成到系统中之前,确保他编写的代码根据详细级别要求正常工作。

黑盒测试等于集成测试。测试人员确保系统按照功能级别的要求工作。

在我看来,这两种测试方法同样重要。

彻底的单元测试将在开发阶段发现缺陷,而不是在软件集成到系统之后。系统级黑盒测试将确保所有软件模块在集成在一起时正常运行。开发阶段的单元测试不会发现这些缺陷,因为模块通常是相互独立开发的。

于 2008-12-31T02:45:56.860 回答
8

黑盒子

1 关注系统的功能 关注系统的结构(程序)

2 使用的技术是:

· 等价划分

· 边值分析

· 错误猜测

· 比赛条件

· 因果图

· 语法测试

· 状态转换测试

· 图矩阵

测试人员可以是非技术人员

有助于识别功能规范中的模糊性和矛盾性

白盒

使用的技术有:

· 基础路径测试

· 流图符号

· 控制结构测试

  1. 条件测试

  2. 数据流测试

· 循环测试

  1. 简单循环

  2. 嵌套循环

  3. 级联循环

  4. 非结构化循环

    测试人员应该是技术人员

    有助于识别逻辑和编码问题。

于 2010-06-23T16:09:58.997 回答
5

QA 应该专注于黑盒测试。QA 的主要目标是测试系统做了什么(功能是否满足要求?),而不是它是如何做到的。

无论如何,QA 应该很难进行白盒测试,因为大多数 QA 人员都不是技术人员,因此他们通常通过 UI(如用户)测试功能。

更进一步,我认为开发人员也应该专注于黑盒测试。我不同意单元测试和白盒测试之间的广泛关联,但这可能只是一个词汇/规模的问题。在单元测试的规模上,被测系统是一个具有契约(通过其签名)的类/方法,重要的是测试它做什么,而不是如何测试。此外,白盒测试意味着您知道该方法将如何履行其合同,这对我来说似乎与 TDD 不兼容。

恕我直言,如果您的 SUT 非常复杂以至于您需要进行白盒测试,那么通常是重构的时候了。

于 2014-11-03T19:00:01.200 回答
4

上面已经说明了“两者”,并且是显而易见的答案......但是IMO,白盒测试远远超出了开发人员单元测试(尽管我认为它可能取决于您在白色和黑色之间划线的位置)。例如,代码覆盖率分析是一种常见的白盒方法——即运行一些场景或测试,并检查结果以寻找测试中的漏洞。即使单元测试有 100% 的 cc,在常见用户场景中测量 cc 也可以揭示可能需要更多测试的代码。

白盒测试有帮助的另一个地方是检查数据类型、常量和其他信息以查找边界、特殊值等。例如,如果应用程序有一个接受数字输入的输入,那么只有 bb 的方法可能要求测试人员“猜测”哪些值对测试有好处,而 wb 方法可能会揭示 1-256 之间的所有值都以一种方式处理,而较大的值则以另一种方式处理......也许数字 42 有另一个代码路径.

因此,要回答最初的问题 - bb 和 wb 对于良好的测试都是必不可少的。

于 2008-12-31T06:54:08.027 回答
3

根据我的经验,大多数开发人员自然会转向白盒测试。由于我们需要确保底层算法是“正确的”,因此我们倾向于更多地关注内部。但是,正如已经指出的那样,白盒测试和黑盒测试都很重要。

因此,我更喜欢让测试人员更多地关注黑盒测试,以掩盖大多数开发人员并没有真正做到这一点的事实,而且经常不是很擅长它。

这并不是说测试人员应该对系统如何工作一无所知,只是我希望他们更多地关注问题域以及实际用户如何与系统交互,而不是函数 SomeMethod(int x)如果 x 等于 5,将正确抛出异常。

于 2008-12-31T03:48:16.530 回答
2

这是一扇敞开的大门,但最终两者都同样重要。

更糟糕的是?

  1. 软件做它需要做的,但内部有问题?

  2. 如果您查看源代码应该可以运行的软件,但不是吗?

我的回答:两者都不是完全可以接受的,但不能证明软件是 100% 没有错误的。所以你将不得不做出一些取舍。选项二更能直接引起客户的注意,因此您很快就会遇到问题。从长远来看,选项一将是有问题的。

于 2008-12-31T02:53:22.757 回答
2

黑盒测试:黑盒测试只是观察,不需要内部知识或软件产品的结构。只需输入有效和无效的数据并期待正确的结果。这里测试人员找到了缺陷,但无法找到缺陷的位置。在所有测试级别都进行了黑盒测试。

黑盒测试技术有: 1. 等价划分 2. 边界值分析 3. 决策表 4. 状态转移图 4. 用例图

白盒测试:白盒测试需要了解软件产品的内部逻辑和结构。在这里,我们将检查循环、条件和分支。在这里,我们不仅可以找到缺陷,还可以找到缺陷的位置。

白盒测试技术: 1. 语句覆盖率 2. 决策覆盖率 3. 分支覆盖率 4. 路径覆盖率。

于 2009-11-27T10:56:17.663 回答
2
  • 通常测试人员无法进行白盒测试。因此,测试人员唯一可行的答案是强调黑盒方法。

  • 但是,对于面向方面的编程和按契约设计的方法,当测试目标作为契约被编程到目标代码中时(从程序的静态视图中看),和/或当测试时态逻辑被编程到代码作为横切(测试逻辑的动态视图),白盒测试不仅成为可能,而且成为测试人员的首选。话虽如此,这将需要专业知识,测试人员不仅需要成为优秀的测试人员,还需要成为优秀的程序员,或者不仅仅是优秀的程序员。

于 2011-03-19T07:15:21.693 回答
2

黑盒测试是一种软件测试方法,其中被测试项目的内部结构/设计/实现不为测试人员所知。白盒测试是一种软件测试方法,其中测试项目的内部结构/设计/实现是测试人员已知的。

于 2016-09-29T12:16:47.877 回答
1

什么是“内部知识”?是否知道使用某某算法来解决问题是否符合条件,或者测试人员是否必须查看每一行代码才能使其“内部”?

我认为在任何测试用例中,所使用的规范都应该给出预期的结果,而不是由测试人员决定如何解释规范来确定,因为这可能会导致每个人都认为自己是正确的并且将问题归咎于对方的问题。

于 2008-12-31T03:31:53.863 回答
1
  • *黑盒测试:是系统级别的测试,检查系统的功能,以确保系统执行其设计的所有功能,主要是为了发现在用户点发现的缺陷。最好聘请专业的测试人员来黑箱你的系统,因为开发人员通常会以他编写的代码很好并且满足客户的功能要求的角度进行测试,因此他可能会错过很多东西(我不无意冒犯任何人)
  • Whitebox 是在 SDLC 中完成的第一个测试。这是为了发现诸如运行时错误和编译错误之类的错误。它可以由测试人员或开发人员自己完成,但我认为编写代码的人测试它总是更好.他比其他人更了解他们。*
于 2009-01-07T14:38:04.817 回答
1

这是我的 5 美分:

作为一名开发人员,我主要为方法(在一个类中)编写白盒测试,这很简单,因为我不希望我的测试仅仅因为我改变了代码的内部工作而中断。

如果我的方法行为发生变化(例如返回与以前不同的结果),我只想让我的测试中断。

在过去 20 年的开发中,我只是厌倦了重复工作,因为我的单元测试与代码紧密相关,我需要同时维护应用程序代码和测试代码。

我认为制作解耦代码(在编写测试代码时也是如此)是一种非常好的做法。

另外 5 美分:我几乎从不使用模拟框架,因为当我发现它必须模拟某些东西时,我更喜欢解耦我的代码 - 是的,在许多情况下这是很有可能的(特别是如果你不使用遗留代码): - )

于 2018-07-30T11:58:55.843 回答
0

*黑盒测试:如果源代码不可用,则测试数据基于软件的功能,而不考虑它是如何实现的。-strong text 黑盒测试的例子有:边界值测试和等价划分。

*白盒测试:如果被测系统的源代码可用,则测试数据基于此源代码的结构。- 白盒测试的例子有:路径测试和数据流测试。

于 2012-08-06T23:07:30.127 回答
0

简单...黑盒测试也称为集成测试或烟幕测试。这主要应用于依赖事件驱动架构的分布式环境中。您基于另一个服务测试一个服务以查看所有可能的场景。在这里,您无法完全预测所有可能的输出,因为 SOA/Enterprise 应用程序的每个组件都旨在自主运行。这可以称为高级测试

尽管

白盒测试是指单元测试。可以有效预测所有预期情景和产出。即输入和预期输出。这可以称为低级测试

于 2013-04-25T18:14:32.940 回答
0

我只部分同意这个问题的最高评价答案。你会说哪种类型的测试应该是重点(对于测试人员/质量保证人员),为什么?

  1. 我同意:“黑盒测试应该是测试人员/QA 的重点。”
  2. 我同意白盒测试应该是开发人员的重点,但我不同意白盒测试只是单元测试。

我同意这里的定义,即白盒测试方法适用于以下级别的软件测试:

  • 单元测试:用于测试单元内的路径
  • 集成测试:用于测试单元之间的路径
  • 系统测试:用于测试子系统之间的路径
于 2014-07-24T17:17:45.747 回答
0
  • 黑盒测试你看不到被测系统的内部运作。
  • 白盒测试您可以全面了解被测系统。 这里有几张图片展示了这一点。

测试人员需要专注于测试金字塔。您将需要了解单元测试、集成测试和端到端测试。这些中的每一个都可以通过黑盒和白盒测试来执行。从小处着手,逐步学习不同的类型以及何时使用它们。请记住,您不能总是测试所有内容。

于 2020-03-09T05:40:09.830 回答