单元测试用例设计方法

ddatsh

dev #test

单元测试的意义

单元测试用例设计方法

规范 (规格) 导出法

规范 (规格) 导出法将需求”翻译“成测试用例

例如,一个函数的设计需求如下:

函数:一个计算平方根的函数 输入: 实数 输出: 实数 要求: 当输入一个 0 或者比 0 大的实数时,返回其正的平方根; 当输入一个小于 0 的实数时,显示错误信息“平方根非法—输入之小于 0”,并返回 0; 库函数printf()可以用来输出错误信息。

在这个规范中有 3 个陈述,可以用两个测试用例来对应:

等价类划分法

等价类划分法 假定某一特定的等价类中的所有值对于测试目的来说是等价的,所以在每个等价类中找一个之作为测试用例

例如,注册邮箱时要求用 6~18 个字符,可使用字母、数字、下划线,需以字母开头

有效等价类 无效等价类
6~18 个字符(1) 少于 6 个字符(2) 多余 18 个字符(3) 空(4)
包含字母、数字、下划线(5) 除字母、数字、下划线的特殊字符(6) 非打印字符(7) 中文字符 (8)
以字母开头(9) 以数字或下划线开头(10)

测试用例:

编号 输入数据 覆盖等价类 预期结果
1 test_111 (1)、(5)、(9) 合法输入
2 t_11 (2)、(5)、(9) 非法输入
3 testtesttest_12345678 (3)、(5)、(9) 非法输入
4 NULL (4) 非法输入
5 test!@1111 (1)、(6)、(9) 非法输入
6 test 1111 (1)、(7)、(9) 非法输入
7 test 测试 1111 (1)、(8)、(9) 非法输入
8 _test111 (1)、(5)、(10) 非法输入

边界值分析法

  边界值分析法使用与等价类测试方法相同的等价类划分,只是边界值分析假定 错误更多地存在于两个划分的边界上

  边界值测试在软件变得复杂的时候也会变得不实用。边界值测试对于非向量类型的值 (如枚举类型的值) 也没有意义

  例如,划分 (ii) 的边界为 0 和最大正实数;划分 (i) 的边界为最小负实数和 0。由此得到以下测试用例:

基本路径测试法

  基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次

  基本路径测试法的基本步骤: