Testing 如何计划白盒测试

Testing 如何计划白盒测试,testing,white-box,test-plan,Testing,White Box,Test Plan,我对白盒测试还比较陌生,需要帮助为我目前正在进行的一个项目设计一个测试计划。目前,我只是四处寻找可测试的代码片段,然后为此编写一些单元测试。不知何故,我觉得这远远不是应该做的事情。请你给我一些建议,告诉我如何为测试这个项目做好最好的准备?有我可以使用的工具或测试计划模板吗?使用的语言是C++,如果它会有区别。 目前,我只是四处寻找可测试的代码片段,然后为此编写一些单元测试。不知何故,我觉得这远远不是应该做的事情 人们说,它的主要好处之一是,它鼓励您在设计组件时牢记可测试性:它使您的组件更易于测试

我对白盒测试还比较陌生,需要帮助为我目前正在进行的一个项目设计一个测试计划。目前,我只是四处寻找可测试的代码片段,然后为此编写一些单元测试。不知何故,我觉得这远远不是应该做的事情。请你给我一些建议,告诉我如何为测试这个项目做好最好的准备?有我可以使用的工具或测试计划模板吗?使用的语言是C++,如果它会有区别。 目前,我只是四处寻找可测试的代码片段,然后为此编写一些单元测试。不知何故,我觉得这远远不是应该做的事情

人们说,它的主要好处之一是,它鼓励您在设计组件时牢记可测试性:它使您的组件更易于测试

我个人的非TDD方法如下:

理解所需和实现的功能:“先验”即通过阅读/了解软件功能规范,以及通过阅读源代码对功能进行反向工程 为所有已实现/所需的功能实施黑盒测试,请参见示例。 因此,我的测试不是很“白盒”,只是我对正在测试的功能进行了反向工程。然后,我测试反向工程功能,避免产生任何无用的、因此未经测试的代码。我可以但不经常使用代码覆盖率工具来查看黑盒测试执行了多少源代码

目前,我只是四处寻找可测试的代码片段,然后为此编写一些单元测试。不知何故,我觉得这远远不是应该做的事情

人们说,它的主要好处之一是,它鼓励您在设计组件时牢记可测试性:它使您的组件更易于测试

我个人的非TDD方法如下:

理解所需和实现的功能:“先验”即通过阅读/了解软件功能规范,以及通过阅读源代码对功能进行反向工程 为所有已实现/所需的功能实施黑盒测试,请参见示例。
因此,我的测试不是很“白盒”,只是我对正在测试的功能进行了反向工程。然后,我测试反向工程功能,避免产生任何无用的、因此未经测试的代码。我可以但不经常使用代码覆盖工具来查看黑盒测试执行了多少源代码。

白盒测试的目标之一是覆盖100%或尽可能接近的代码语句。我建议找到一个C++代码覆盖工具,这样你就可以看到你的测试执行什么代码,你错过了什么代码。然后设计测试,以便测试尽可能多的代码

另一个建议是查看if stations、for loops、while loops等中的边界条件,并测试这些条件是否存在任何“灰色”区域、误报和误报

您还可以设计测试来查看重要变量的生命周期。测试它们的定义、用法和销毁,以确保它们被正确使用:


有三个想法可以让你开始。好运

白盒测试的目标之一是覆盖100%或尽可能接近的代码语句。我建议找到一个C++代码覆盖工具,这样你就可以看到你的测试执行什么代码,你错过了什么代码。然后设计测试,以便测试尽可能多的代码

另一个建议是查看if stations、for loops、while loops等中的边界条件,并测试这些条件是否存在任何“灰色”区域、误报和误报

您还可以设计测试来查看重要变量的生命周期。测试它们的定义、用法和销毁,以确保它们被正确使用:


有三个想法可以让你开始。祝你好运

尝试有效地使用旧代码:

这是相关的,因为“遗留”指的是没有测试的代码。这也是一本相当不错的书

相关工具包括:和
可能还有其他的单元测试和模拟框架,但我对它们很熟悉,我强烈推荐它们。

尝试有效地使用遗留代码:

这是相关的,因为“遗留”指的是没有测试的代码。这也是一本相当不错的书

相关工具包括:和
可能还有其他的单元测试和模拟框架,但我对它们很熟悉,我强烈推荐它们。

但是如果产品已经实现,剩下的就是测试,会发生什么呢?@Draco如果您在没有测试它或不知道如何测试它的情况下实现了它,那么我不知道会发生什么;但听起来似乎它并没有被证明是一个值得信任的实现。我没有做任何实施
N我所做的就是测试白盒。开发人员确实在一定程度上进行了测试,但我也会提供帮助。@Draco除非您可以更改代码以使其更易于测试,否则我认为您可以按照上面概述的方式进行:了解和/或对功能进行反向工程;测试该功能;使用代码覆盖率工具来验证这些测试执行了多少源代码;写更多的测试来练习尚未覆盖/测试的代码,或者抱怨剩余的代码无法访问/不稳定。但是如果产品已经实现,剩下的就是测试,会发生什么呢?@Draco如果你在没有测试它或不知道如何测试它的情况下实现了它,那么我不知道会发生什么;但听起来似乎它并没有被证明是一个值得信任的实现。我没有做任何实现。我所做的就是测试白盒。开发人员确实在一定程度上进行了测试,但我也会提供帮助。@Draco除非您可以更改代码以使其更易于测试,否则我认为您可以按照上面概述的方式进行:了解和/或对功能进行反向工程;测试该功能;使用代码覆盖率工具来验证这些测试执行了多少源代码;编写更多的测试来练习尚未覆盖/测试的代码,或者抱怨剩余的代码不可访问/不稳定;C:努尼特,莫克。如果您正在进行白盒测试,您可能会在更严格的模拟框架(JMock、EasyMock、rhinomock)中发现更多价值;C:努尼特,莫克。如果您正在进行白盒测试,您可能会在更严格的模拟框架(JMock、EasyMock、rhinomock)中发现更多的价值。