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


示例解释边界测试的意义

    边界测试主要用于发现“未考虑某些特殊输入”的问题,“未考虑”是指编程时和设计测试用例时均“未考虑”,下面举例说明。

    //代码一
    int Func(int arg)
    {
        int ret = 10;
        if(arg != 0)
        {
            ret /= arg;
        }
        return ret;
    }

    参数arg会作为一个除数使用,测试时当然要为arg=0建立一个用例,如果漏了这个用例,会怎么样呢?分支覆盖会不完整:隐含的else分支未覆盖,从而提醒用户要添加测试用例。再看下面的代码:

    //代码二
    int Func(int arg)
    {
        int ret = 10;
        ret /= arg;
        return ret;
    }

    编程时未考虑arg=0,测试时有两种可能:
    1.考虑到了arg=0,会测出代码中的问题,这是理想的结果;
    2.也未考虑arg=0,那么虽然实现了完整的白盒覆盖,但程序仍然隐含严重的问题。

    边界测试会自动为arg=0建立测试用例,如果运行边界测试,在第2种情形下会产生异常,从而将问题暴露出来。发现问题后,要补齐代码,并补充普通用例,重新达到100%的白盒覆盖。为什么要补充普通测试用例呢?因为普通用例可以有独立的预期输出,可以完整判断输出是否符合预期,这是自动生成的边界测试用例难 以做到的。