C/C++单元测试工具Visual Unit 4在线帮助


测试思路与测试用例

    执行测试前,需要设定一些初始数据,称为输入。如何知道程序功能是否正确?通常的办法是预先设定正确的结果值,称为预期输出,执行测试后,自动对比实际输出和预期输出是否相符。输入和预期输出就构成了测试用例。

    那么,哪些变量要设定输入,哪些变量要设定输出呢?这要从单元测试做什么说起。

    单元测试测什么?代码的功能逻辑。代码的功能逻辑由什么实现?逻辑块!测试用例针对的是逻辑块,而不是函数,即测试函数中的逻辑块是否正确。如何测试?根据逻辑块的功能,分析逻辑块会有哪些可能输入,每种输入预期应该产生什么输出,输入和对应的预期输出构成了测试用例。

    针对逻辑块的功能来设计测试用例,这是非常重要的测试思路,这一思路,大幅简化单元测试工作:
    1)一个函数可能很复杂,如何测试?各个逻辑块分别测试,支持表格驱动的单元测试,例如Visual Unit 4,一般可以支持多数据表,每个逻辑块可以对应一个数据表;
    2)一个逻辑块涉及到的数据通常不多,逻辑判断涉及到的一般是简单类型,数据设置比较简单;
    3)没有逻辑计算的函数可以不测试,对于自动化的单元测试工具,例如Visual Unit 4,可以直接用空值(什么数据也不用设)跑一下,一般直接完成全部覆盖。

    通常,很底层的函数只有一个逻辑块,且逻辑块的输入输出就是函数的输入输出,这是单元测试的特例,也是最容易测试的。这种函数,针对函数的输入输出来设计用例,也是一样的。对于调用了其他函数,或者有些重要的计算结果没有通过返回值等途径输出的函数,则一定要针对逻辑块的输入输出来设计用例,掌握了这一点,对任何复杂代码都很容易有清晰的测试思路。