测试用例(TestCase)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

  测试用例目前没有经典的定义。比较通常的说法是:指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。

  可以采用软件测试常用的基本方法:等价类划分法、边界值分析法、错误推测法、因果图法、逻辑覆盖法等设计测试用例。视软件的不同性质采用不同的方法。如何灵活运用各种基本方法来设计完整的测试用例,并终实现暴露隐藏的缺陷,全凭测试设计人员的丰富经验和精心设计。

  测试用例的设计

  (一)白盒技术

  白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部逻辑为基础设计测试用例。

  1.逻辑覆盖

  程序内部的逻辑覆盖程度,当程序中有循环时,覆盖每条路径是不可能的,要设计使覆盖程度较高的或覆盖有代表性的路径的测试用例。下面分别讨论几种常用的覆盖技术。

  语句覆盖。为了个提高发现错误的可能性,在测试时应该执行到程序中的每一个语句。

  判定覆盖。判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次,因此判定覆盖也称分支覆盖。

  条件覆盖。条件覆盖是指设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至少出现一次。

  判定/条件测试。该覆盖标准指设计足够的测试用例,使得判定表达式的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。

  条件组合覆盖。条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。

  路径覆盖。路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径。

  在实际的逻辑覆盖测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例,以达到路径覆盖测试标准。

  2.循环覆盖

  3.基本路径测试

  (二)黑盒技术

  1.等价类划分

  (1)划分等价类。

  如果某个输入条件规定了取值范围或值的个数。则可确定一个合理的等价类(输入值或数在此范围内)和两个不合理等价类(输入值或个数小于这个范围的小值或大于这个范围的大值)。

  如果规定了输入数据的一组值,而且程序对不同的输入值做不同的处理,则每个允许输入值是一个合理等价类,此处还有一个不合理等价类(任何一个不允许的输入值)。

  如果规定了输入数据必须遵循的规则,可确定一个合理等价类(符合规则)和若干个不合理等价类(从各种不同角度违反规则)。

  如果已划分的等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分为更小的等价类。

  (2)确定测试用例。

  为每一个等价类编号。

  设计一个测试用例,使其尽可能多地覆盖尚未被覆盖过的合理等价类。重复这步,直到所有合理等价类被测试用例覆盖。

  设计一个测试用例,使其只覆盖一个不合理等价类。