测试用例
测试用例(Test Case,TC),在测试执行前设计一套详细的测试方案,包括测试环境,测试步骤,测试数据和预期结果。
编写测试用例的唯一标准是用户需求,具体的参考资料是《需求规格说明书》
测试用例包括:
- 测试用例编号
- 测试用例名称
- 测试用例设计者
- 软件版本号
- 测试目的
- 参考信息
- 测试条件
- 测试环境
- 输入数据
- 操作步骤
- 预期结果
测试用例设计步骤
黑盒测试的测试用例编写
黑盒测试又称数据驱动测试,完全不考虑程序内部结构和内部特性,注重于测试软件的功能需求。
由于黑盒测试不需要了解程序内部结构,所以许多高层测试,如确认测试、系统测试、验收测试都采用黑盒测试。
黑盒测试能发现以下几类错误:
- 功能不对或功能遗漏
- 界面错误。
- 数据结构或数据库访问错误。
- 性能问题。
- 初始化和终止错误。
黑盒测试方法:
- 等价类划分
- 边界值划分
- 错误推测法
- 因果图法
- 正交表试验法
- 场景法
- 功能图
1.等价类划分
等价类划分的步骤
- 先考虑输入数据的数据类型(合法和非法的)
- 再考虑数据范围(合法类型中的合法区间和非法区间)
- 画出示意图,区分等价类
- 为每一个等价类编号
- 从一个等价类中选择一个测试数据构造测试用例
例子:计算两个1~100之间整数的和
如果要进行完全测试,一共要设计多少个测试用例呢?
加数1 有1~100共计100个取值,加数2 也有1~100共计100个取值,所以他们之间的组合就有100*100=10000种组合可能,但这只是测试了正常范围内的取值。如果用户输入的数据不在1~100之间呢?因为测试量太庞大了,穷举测试肯定不可能,由此引入了等价类划分思想。
等价类:是指某个输入域的子集合。
等价类划分为:
- 有效等价类:符合《需求规格说明书》,输入合理的数据集合
- 无效等价类:不符合《需求规格说明书》,输入不合理的数据集合
我们将输入域分成了一个有效等价类(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)
注;此案例中有四个被测对象,每个被测对象的状态都不一样。
用字母代替的正交表为:
得到的测试用例如下:
在实际测试过程中,我们往往需要综合各种测试技术。