白盒单元测试体现了几个概念,第一是知道程序里面的实现逻辑;第二是进行单元测试,这些单元可以是一个方法,一个类。

介入的时机

程序员开发完一个方法或者一个类的时候,往往需要检测我们的代码是否排除错误并按照预期运。这个时候需要进行白盒单元测试。

工作的内容

根据代码里面的实现逻辑,测试代码是否对非法输入进行控制,测试代码是否按照预期的进行了工作。在jtest工具中,它认为重点在于输入数据,尽可能在所有的路径上运行程序,并尽可能的压垮程序。如果程序能够经受考验,那么认为这个关是通过的。至于代码是否按照需求定义那样运行,在这个阶段并不关心,而是在黑盒测试阶段。

目前很多实践中,并没有严格区分单元的白盒和黑盒测试。白盒单元测试,是尽量的保证所有的路径都覆盖,同时包括合法的和非法的。但是并不关心实现逻辑是否按照需求预期的逻辑进行。所以,基于这种思想,可以完全实现用例的自动化生成、自动化执行。预期输入、预期输出都可以通过判断程序内部逻辑来生成,所以完全可以自动化。

黑盒单元测试,是尽量的保证所有的路径都覆盖,同时重点关注输出的预期是按照需求预期来输出的。所以,数据驱动测试在这里可以应用,根据输入输出数据用来生成测试用例。

测试用例设计工具

测试用例,说白了是调用被测的代码,检查结果是否正确,程序是否崩溃。Xunit框架可以很方便的实现测试用例的设计和执行。用例的生成,可以手工开发,也可以使用自动化工具自动生成。

衡量测试用例的质量

测试用例是否已经充分了,我们往往是通过覆盖率指标来统计的,理想的情况下是达到。现在也很多统计的自动化工具可以嵌入到开发工具,或者运行测试用例中后台收集。