软件测试之测试用例设计方法

等价类划分法:

适用条件:参数存在用户输入数据,存在有效数据与无效数据。

方法简述

  1. 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这个过程,直至所有的有效等价类均被测试用例所覆盖;
  2. 设计一个新的测试用例,使其仅覆盖一个无效等价类,重复这个过程,直至所有的无效等价类均被测试用例所覆盖。

案例:

边界值分析法:

适用条件:对输入或输出的边界值进行测试的一种黑盒测试方法。

方法简述:

使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。

案例:

决策表法(判定表法):

 适用条件:输入输出比较多,输入之间和输出之间相互制约的条件比较多,参数之间存在逻辑关系,不同组合输出不同结果。这时决策表可以很清楚地表达它们之间的各种复杂关系。

方法简述:

把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格。它能够将复杂的问题按照各种可能的情况全部列举出来,简明并可避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。

案例:

正交试验法 :

适用条件:参数之间不存在逻辑判定关系 ,参数都是有效的,有效参数组合会输出不同结果。

方法简述:

正交试验设计法,就是使用正交表来安排试验并进行数据分析的一种方法。 正交试验采用两两组合方式,减少用例个数。适用于兼容性测试、测试范围小。

案例:

​​​​​​​场景测试法: 

适用条件:事件触发时的情景便形成了场景。而同一事件不同的触发顺序和处理结果形成事件流场景法:通过运用场景来对系统的功能点或业务流程进行描述,从而提高测试效果的一种方法。

方法简述:

  1. 构造基本流和备选流。
  2. 根据基本流和备选流构造场景。
  3. 根据场景设计测试用例。
  4. 对每个测试用例补充必要的测试数据。

案例: 

流程分析法:

适用条件:一个功能的实现需要多个界面协同完成(跨界面),且存在逻辑关系(对错不能同时存在,同意/不同意、上一步/下一步),并且不同参数组合会输出不同结果。

方法简述:

流程分析法不能验证每个界面的参数是否正确,验证的是流程,所以需要与开发进行沟通需求,需要在每个界面进行校验,如果错误,直接在当前界面提示信息,所以需要多种方法组合使用。

案例:

QQ安装功能测试

状态迁移图:

适用条件:所有参数都是有效的,参数之间存在约束条件(功能之间的约束、状态之间的约束)。

方法简述:

  1. 画出状态迁移图;
  2. 列出状态——事件表;
  3. 得到状态转换树;
  4. 推出测试路径;
  5. 根据测试路径编写测试用例。    

案例:

因果图:

适用条件:参数之间存在逻辑关系,不同逻辑组合会输出不同结果。参数之间存在约束关系,输出结果不确定。

方法简述:

  1. 找出原因;
  2. 找到结果;
  3. 找到中间状态;
  4. 按照因果图的约束条件画出因果图。

案例: 

输出域覆盖法

适用条件:需求界面当中可见参数存在有效和无效规则校验,但没有明确限制输入条件,而需求中给出了输出的限定条件。根据业务由输出倒推输入,此时可以使用输出域覆盖法设计测试用例。

方法简述:

  1. 询问开发或根据代码找出所有的输出结果;
  2. 检查写过的测试用例是否把所有输出结果覆盖到,如果有未覆盖到用例则补测试用例
  3. 根据输出结果倒推测试用例步骤及测试数据。

输入域覆盖法:

适用条件:针对输入会有各种各样的输入值:

  1. 特殊值:主要和输入的特点有关,需要了解系统对该输入的存储和处理;
  2. 长时间输入:对于那些没有限制输入长度的输入进行长时间的持续输入,以查看是否会存在输入的数据内存越界导致系统故障的情况。

方法简述:

  1. 根据SRS找出输入的类型边界和特殊值;
  2. 根据类型边界值和特殊值找到相应的类型边界值和特殊值并写出相应的测试用例。

异常分析法:

适用条件:针对系统有可能存在的异常操作、软硬件缺陷引起的故障进行分析,依此设计测试用例。主要针对系统的容错能力、故障恢复能力进行测试。简单的说就是人为让系统出故障,然后检查系统的故障恢复能力。

方法简述:

  1. 构造各种可能出现的环境异常;
  2. 做好手工备份/恢复;
  3. 一个用例包含一个错误。

错误猜测法 

适用条件:依靠经验和直觉推测系统中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。

方法简述:

  1. 确定合适的错误推测清单;
  2. 确定需要进行错误猜测的测试子项;
  3. 根据清单对测试子项的规格进行错误猜测。​​​​​​​