测试用例

测试用例(Test Case,TC),在测试执行前设计一套详细的测试方案,包括测试环境,测试步骤,测试数据和预期结果。

编写测试用例的唯一标准是用户需求,具体的参考资料是《需求规格说明书》

测试用例包括:

  1. 测试用例编号
  2. 测试用例名称
  3. 测试用例设计者
  4. 软件版本号
  5. 测试目的
  6. 参考信息
  7. 测试条件
  8. 测试环境
  9. 输入数据
  10. 操作步骤
  11. 预期结果

测试用例设计步骤

黑盒测试的测试用例编写

黑盒测试又称数据驱动测试,完全不考虑程序内部结构和内部特性,注重于测试软件的功能需求。

由于黑盒测试不需要了解程序内部结构,所以许多高层测试,如确认测试、系统测试、验收测试都采用黑盒测试。

黑盒测试能发现以下几类错误:

  • 功能不对或功能遗漏
  • 界面错误。
  • 数据结构或数据库访问错误。
  • 性能问题。
  • 初始化和终止错误。

黑盒测试方法:

  • 等价类划分
  • 边界值划分
  • 错误推测法
  • 因果图法
  • 正交表试验法
  • 场景法
  • 功能图

1.等价类划分

等价类划分的步骤

  • 先考虑输入数据的数据类型(合法和非法的)
  • 再考虑数据范围(合法类型中的合法区间和非法区间)
  • 画出示意图,区分等价类
  • 为每一个等价类编号
  • 从一个等价类中选择一个测试数据构造测试用例

例子:计算两个1~100之间整数的和

如果要进行完全测试,一共要设计多少个测试用例呢?

加数1 有1~100共计100个取值,加数2 也有1~100共计100个取值,所以他们之间的组合就有100*100=10000种组合可能,但这只是测试了正常范围内的取值。如果用户输入的数据不在1~100之间呢?因为测试量太庞大了,穷举测试肯定不可能,由此引入了等价类划分思想。

等价类:是指某个输入域的子集合。

等价类划分为:

  1. 有效等价类:符合《需求规格说明书》,输入合理的数据集合
  2. 无效等价类:不符合《需求规格说明书》,输入不合理的数据集合

我们将输入域分成了一个有效等价类(1~100)和两个无效等价类(<1,>100),并为每一个等价类进行编号,然后我们就可以从每一个等价类中选取一个代表性的数据来测试,设计如下表所示
的测试用例:

编号 所属等价类 加数1 加数2
1 2(有效等价类) 3 40 43
2 1(无效等价类) 0 -1 提示“请输入1~100之间的整数”
3 3(无效等价类) 110 101 提示“请输入1~100之间的整数”

到这里我们的工作似乎结東了,还需要设计其他测试用例吗?

刚刚输入的数据都是整数,如果输入小数,甚至字母怎么办?

这说明刚才的等价类还不完善,我们只考虑了输入数据的范围,没有考虑输入数据的类型(我们认为只输入数据,可是最终用户输入什么都有可能)。综合考虑输入数据的类型和范围划分等价类,如下图所示:

所以,等价类划分的测试用例(扩展)

编号 所属等价类 加数1 加数2
1 2(有效等价类) 3 40 43
2 1(无效等价类) 0 -1 提示“请输入1~100之间的整数”
3 3(无效等价类) 110 101 提示“请输入1~100之间的整数”
4 4(无效等价类) 1.2 1.2 提示“请输入1~100之间的整数”
5 5(无效等价类) A B 提示“请输入1~100之间的整数”
6 6(无效等价类) 提示“请输入1~100之间的整数”
7 7(无效等价类) 空格 空格 提示“请输入1~100之间的整数”
8 8(无效等价类) 提示“请输入1~100之间的整数”

2.边界值划分

程序的很多错误发生在输入或输出范围的边界上,因此针对各种边界情况设置测试用例,可以发现不少程序缺陷。

设计方法:

  • 确定边界情况(输入或输出等价类的边界)
  • 选取正好等于,刚刚大于或刚刚小于边界值作为测试数据

我们还以等价类中讲的例子来讲解边界值的思想。

输入要求是1~100间的整数。因此自然产生了1和100两个边界,我们在设计测试用例的时候,要重点考虑这两个边界问题。

根据边界值方法,测试用例修改如下:

编号 所属等价类 加数1 加数2
1 2(有效等价类) 1 1 2
2 2(有效等价类) 100 100 200
3 1(无效等价类) 0 -1 提示“请输入1~100之间的整数”
4 3(无效等价类) 110 101 提示“请输入1~100之间的整数”
5 4(无效等价类) 1.2 1.2 提示“请输入1~100之间的整数”
6 5(无效等价类) A B 提示“请输入1~100之间的整数”
7 6(无效等价类) 提示“请输入1~100之间的整数”
8 7(无效等价类) 空格 空格 提示“请输入1~100之间的整数”
9 8(无效等价类) 提示“请输入1~100之间的整数”

3.错误推测法

基本思想:
利用直觉和经验猜测出出错的可能类型,列举出程度中所有可能的错误和容易发生错误的情况,基本思想是列举出可能犯的错误或错误易发生的清单,然后根据清单编写测试用例;

这种方法很大程度上是凭经验进行的,即凭人们对过去所作测试结果的分析,对所揭示缺陷的规律性作直觉的推测来发现缺陷。

4.因果图法

因果图法比较适合输入条件比较多的情况,测试所有的输入条件的排列组合。所谓的原因就是输入,所谓的结果就是输出。

利用因果图导出测试用例需要经过以下几个步骤:

  • 分析程度规格说明的描述中,哪些是原因哪些是结果。原因常常是输入条件或输入条件的等价类,而结果是输出条件。
  • 分析程度规格说明的描述中语义内容,并将其表示成连接各个原因与各个结果的“因果图”。
  • 标明约束条件。由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的
  • 把因果图转换成判定表
  • 为判定表中的每一列表示的情况设计测试用例。

基本图形符号:

  • 恒等:若原因出现,则结果出现;若原因不出现,则结果不出现。
  • 非(~):若原因出现,则结果不出现;若原因不出现,则结果出现。
  • 或(V):若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现。
  • 与(^):若几个原因都出现,结果才出现;若其中有一个原因不出现,则结果不出现。

约束符号:

  • E(互斥):表示两个原因不会同时成立,两个中最多有一个可能成立
  • I(包含):表示三个原因中至少有一个必须成立
  • O(惟一):表示两个原因中必须有一个,且仅有一个成立
  • R(要求):表示两个原因,a出现时,b也必须出现,a出现时,b不可能不出现
  • M(屏蔽):两个结果,a为1时,b必须是0,当a为0时,b值不定

例子
有一个处理单价为 2.5 元的盒装饮料的自动售货机软件。若投入2.5元硬币。按 “可乐",“啤酒”,或“奶茶”按钮。相应的饮料就送出来。若投入的是3元硬币。在送出饮料的同时退还5角硬币。

分析:

原因(输入):
①投入2.5元硬币
②投入3元;
③按“可乐”按钮;
④按“啤酒”按钮
⑤按“奶茶”按钮。

中间状态:
①已投币
②已按钮

结果(输出):
①退还5角硬币;
②送出“可乐”饮料;
③送出“啤酒”饮料;
④送出“奶茶”饮料

根据原因和结果,我们可以设计这样一个因果图:

因果图转换为判定表:

根据判定表设计测试用例:


5.正交表试验法

正交试验设计法,是一种成对测试交互的系统的统计方法。它提供了一种能对所有变量对的组合进行典型覆盖(均匀分布)的方法。可以从大量的试验点中挑出适量的、有代表性的点,利用“正交表”,合理的安排试验的一种科学的试验设计方法。

正交表的构成:(行数(水平数因素数)如:I8(27))

  • 行数:正交表中的行的个数,即试验的次数,也是我们通过正交实验法设计的测试用例的个数。
  • 因素数:正交表中列的个数,即要测试的功能点。
  • 水平数:任何单个因素能够取得的值的最大个数,即要测试功能点的取值个数。

例子

根据 Powerpoint的打印功能的描述设测试用例。功能描述如下:
打印范围分:全部,当前幻灯片,给定范围
打印内容分:幻灯片,讲义,备注页,大纲视图
打印颜色/灰度分:颜色,灰度黑白
打印效果分:幻灯片加框,幻灯片不加框

分析:
根据以上提到的功能说明,构造因子状态表,得到因子状态
编号|所属等价类|加数1|加数2|和

状态/因素 A打印范围 B打印内容 C打印颜色/灰度 D打印效果
0 全部 幻灯片 颜色 幻灯片加框
1 当前幻灯片 讲义 灰度 幻灯片不加框
2 给定范围 备注页 黑白
3 大纲视图

将中文字转换成字母的因子状态表:

状态/因素 A B C D
0 A1 B1 C1 D1
1 A2 B2 C2 D2
2 A3 B3 C3
3 B4

选择正交表的分析:
1、表中的因素数 >= 4
2、表中至少有4个因素数的水平数 >= 2;
3、行数取最少的一个。
4、从正交表公式中开始查找,结果为:L16(45)

注;此案例中有四个被测对象,每个被测对象的状态都不一样。

用字母代替的正交表为:

得到的测试用例如下:


在实际测试过程中,我们往往需要综合各种测试技术。