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


用例设计器功能介绍

用例设计器的用途
    用例设计器用于设计覆盖某一逻辑目标的测试用例,逻辑目标是指:语句、条件、分支或路径。未覆盖的逻辑单位通常对应未测试的等价类,因此,用例设计器可以找出遗漏用例。
    由于一个用例可以覆盖多个逻辑目标,因此,每次只能设计一个用例,执行测试后再根据逻辑目标的覆盖状况设计下一个用例。

使用用例设计器必须具备以下条件
    至少有一个已成功执行的测试用例;
    存在未覆盖的语句、条件、分支或路径。

打开用例设计器
    直接使用:在VU主界面点击“用例设计”标签,打开用例设计窗口,由VU选择针对的逻辑单位。
    针对选定的逻辑单位:在函数测试的输出页,从代码窗口或路径窗口选中未覆盖的逻辑单位,用右键菜单打开用例设计器。

用例设计器的界面
    用例设计器由两部分构成,上半部分是近似测试用例,下半部分是修改提示,如下图。
 
   

    近似用例左侧的工具按钮分别为:
    黄灯为覆盖率未达标,绿灯为已达标。覆盖率指标可自定义:在“工具”菜单,选择“设定”,点击“统计与报告”。达标与完成全部覆盖是两个概念,完成全部覆盖是指所有覆盖均达到100%,没有未覆盖的逻辑单位,而达标是指覆盖率达到预设的标准。达标后会亮绿灯,而完成全部覆盖后,用例设计器将不能继续使用。
    保存。一般不需使用,点击时,均会自动保存。
    执行测试,并跳转到测试输出窗口。
    删除并继续,对于不能覆盖的逻辑单位,可用此命令删除,并自动选择下一个逻辑单位。如果不存在未覆盖的逻辑单位,则跳转到测试输出窗口。
    执行并下一个,保存新用例,执行测试,并自动选择下一个逻辑单位。
   
    修改提示左侧的工具按钮分别为:
    显示详细提示 。
    显示简明提示 。
    打开帮助。

工作原理
    VU从现有的测试用例中计算出一个最接近于可覆盖该逻辑目标的用例作为近似用例,并生成修改提示。修改近似测试用例的输入数据使修改提示提出的条件得到满足,并视需要修改预期输出,即可获得预期的测试用例。测试用例设计器应用了VU已获得专利的技术,它使此前难以企及的逻辑覆盖得于轻松实现。

修改提示
    提示包括:
    已满足条件,类似于:--> A != 2
    待满足条件,类似于:>>> A > 1
    依赖关系:类似于:>>>[变量X曾被赋值]
   
不确定条件,类似于--- A>1 && B==0

    待满足条件是修改提示的基本和核心内容,是修改近似用例的主要依据。已满足条件是近似用例已经满足的条件,修改近似用例时要保证不破坏已满足条件。

    依赖关系表示某个变量可能在程序执行过程中被修改,其值可能与初始输入不同,例如下面的被测试代码:
    int Func(int a)
    {
        ......
        a -= 10;
        if(a > 10)
        ...
    }
    这种情形就会出现依赖关系提示,显然,为了满足a > 10 的条件,用例中把参数a设为11是不行的,要设为21才行。

    不确定条件只表示代码中有这个逻辑,对设计用例没有意义,尤其是出现在待满足条件后面时完全可以忽略,“{”和“}”内的代码,即不确定条件后的代码,表示可能执行也可能不执行。

    上图中显示的是详细提示,下图为简明提示:
   

使用方法
    根据待满足条件修改近似测试用例的输入(不能破坏已满足条件),并视需要修改预期输出,然后点击,直到 覆盖达标或完成全部覆盖。

关于条件覆盖和MC/DC
    完成MC/DC需要两个条件组合(两个用例或循环导致判定的两次或两次以上计算),因此,为MC/DC设计用例时,有可能需要设计两次。设计了一个用例后,如MC/DC仍未覆盖,需再次选中并设计 下一用例。 为条件值设计用例时,为了提高用例价值,减少用例数量,VU会统筹考虑MC/DC覆盖,因此,有时待满足条件会多于条件覆盖的需要,例如,要覆盖条件C1的假值,本来只需将近似用例的条件C1改为假即可,但VU可能还会提示修改其他条件。如果一个条件的真值和假值覆盖用例均由用例设计器设计,VU会保证,该条件的MC/DC同时得于覆盖。

识别不能覆盖的逻辑目标
    如果待满足条件与已满足条件冲突,则该逻辑目标是无法覆盖的,可点击标记为删除(不会修改产品代码)。

智能化
    测试用例设计器是高度智能化的工具,总是遵循“最小工作量”的原则,如果选中的逻辑目标需要较大的工作量(即需要修改较多的输入数据),VU会自动调整为先覆盖其他同类的工作量最小的逻辑目标。例如,当有多个语句未覆盖时,随便选择一个,VU会自动把最容易覆盖的语句作为覆盖目标,其他类别的逻辑覆盖也是如此。每次用最小的工作量设计测试用例,每个测试用例都可能作为下一逻辑目标的近似测试用例,具有很高的效率。