什么是单元测试、黑盒测试和白盒测试?我用谷歌搜索,但我发现的所有解释都是非常技术性的。任何人都可以通过适当的示例以简单的方式回答这个问题吗?
4 回答
在黑盒测试中,您不关心被测试事物的内部是如何工作的。您调用公开的 API 并检查结果;你不在乎被测试的东西做了什么来给你结果。
在白盒测试中,您确实关心被测试事物的内部是如何工作的。因此,您可以检查被测试事物的内部变量是否正确,而不仅仅是检查事物的输出。
单元测试是一种测试软件组件的方法。“单元”是被测试的东西。您可以使用单元测试进行黑盒测试和白盒测试;该概念与白盒/黑盒测试正交。
一个非常非技术性的解释,没有任何细节……来了……
黑盒测试:在不了解内部应用程序如何工作的情况下测试应用程序
白盒测试:在了解内部工作原理的情况下测试应用程序,例如在进行测试时将源代码并排放置。
单元测试:在这里您可以创建直接与您的应用程序交互的测试。您将检查应用程序
assert
中的一个函数,并且响应应该返回value X
. 单元测试通常由开发人员自己创建,但并不总是由开发人员自己创建,而如果一家公司进行白盒和黑盒测试,任何人都可以完成。
这是一个非常基本的解释。
黑盒测试:
- 测试人员是人而不是开发人员
- 测试人员不知道系统是如何实现的 *
- 当系统对测试任何步骤的响应不是预期结果时,测试人员将报告问题。
白盒测试:
- 测试人员是人而不是开发人员
- 测试人员确实知道系统是如何实现的 *
- 当系统对测试任何步骤的响应不是预期结果时,测试人员将报告问题,并且尽管收到预期结果,但更有可能检测到测试用例本身或系统存在问题。
单元测试:
- 测试器通常是测试系统中特定模块的代码。例如,在 Java 中,一个项目可能有一个名为 Student 的类和一个名为 StudentTest 的测试类。对于 Student 中的每个函数(如
getGrades
),StudentTest 可能有 0 个或多个函数来测试它们(如getGradesTest
)。这只是其中一种方法。 - 测试代码通常只知道系统一部分的各种输入的预期输出。
- 单元测试通常在提交代码之前运行,或者在构建要部署的应用程序时自动运行。目标是防止在添加、更改或删除功能时将尽可能多的错误引入系统。
* 黑盒测试人员和白盒测试人员之间已知的知识量因组织而异。例如,我认为的可用性测试,另一家公司可能称之为黑盒测试。某些公司的白盒测试员可能是另一个开发人员(开发人员 QA),而另一个组织可能不允许开发人员完成任何测试签核。黑盒测试人员可能只是拥有一份他们需要遵循和验证的指令列表的人,也可能是通常知道系统如何工作但不是特别详细的人。例如:
尽管测试用例符合预期,但黑盒测试员可能会也可能不会识别出问题,例如电子商务测试用例省略了收集客人结帐送货地址的步骤。
本质上,白盒和黑盒测试很少被严格执行。大多数组织都有单元测试、开发人员测试(可能会或可能不会正式记录 - 取决于失败的影响)、QA 测试员(黑色、白色和介于两者之间的各种灰色阴影)和用户测试/业务签名-关闭(应该参与整个项目的人员,但在运行不佳的组织中只出现在开始和结束时,并在部署之前将完成的项目送回设计)。
黑盒测试:这始终是基于用户或客户端的测试,根据提供的要求进行测试。此测试仅由测试人员完成。
白盒测试:这是为了验证代码库的流程。测试条件语句、循环语句等的流程。这主要是从开发人员的角度来看的。
单元测试:这是白盒测试的一部分,因为您使用测试数据测试代码中的每个方法并断言它。现在有一天,测试人员和公司会从测试人员那里看到这项技能,他们能够理解代码和算法。