什么是测试用例
测试用例就是设计一种情况,软件程序在这种情况下,必须能正常运行并且达到程序所设计的执行结果。如果不能正常运行则为bug。
使用测试用例的好处:
- 在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率
- 测试用例的使用令软件测试的实施重点突出、目的明确
- 软件版本更新后只需修改少部分的测试用例便可产开测试工作,降低工作强度,缩短项目周期
- 功能模块的通用化和复用化是软件易于开发,而测试用例的通用化和复用化则会使软件测试易于开展,并随着测试用例的不断精化其效果也不断攀升。
测试用例设计方法包括等价类划分,边界值分析,因果图法,判定表法,错误推测法,正交试验法,功能图法。
一、等价类划分
等价类划分法是把程序的输入域划分成若干部分,然后每个部分选取少数代表性数据作为测试用例。使用此方法,首先必须在分析需求规格说明书的基础上划分等价类,列出等价类表。
- 参考文档
需求规格说明书 - 关注重点
说明中输入输出的要求
1. 划分等价类和列出等价类表
等价类华为两种不同的情况:有效等价类和无效等价类
有效等价类:指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。可检验程序是否实现了规格说明中所规定的功能和性能。
无效等价类:与有效等价类定义相反
确定等价类的原则
- 在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
- 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。
- 在输入条件是一个布尔量的情况下,可以确定一个有效等价类和一个无效等价类。
- 在规定了输入数据是一组值(假定n个),可以确定一个有效等价类和一个无效等价类。
- 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
- 在确定已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类。
等价类表实例
|输入条件|有效等价类|无效等价类|
|----|---|
|……|……|……|
2. 确定测试用例
确定测试用例步骤:
- 为每个等价类规定一个唯一编号
- 设计一个新的测试用例,使其尽可能多的覆盖尚未覆盖的有效等价类。重复这一步,最后是的所有有效等价类均被测试用例所覆盖
- 设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖。
例:一个程序读入3个整数,把3个数值看作一个三角形的3条边的长度值,这个程序要打印出信息,说明这个三角形是一般三角形,是等腰的,还是等边的。
设三角形的3条边分别为 A,B,C
- 构成三角形的条件,A>0, B>0, C>0, A+B>C, B+C>A, A+C>B.
- 在1基础上是等腰的则A=B, 或B=C,或A=C.
- 在1基础上是等边的则 A=B,且B=C,且A=C
等价类表:
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
是否三角形的三条边 | A>0, (1) B>0, (2) C>0, (3) A+B>C, (4) B+C>A, (5) A+C>B, (6) |
A<=0, (7) B<=0, (8) C<=0, (9) A+B<=C, (10) B+C<=A, (11) A+C<=B, (12) |
是否等腰三角形 | A=B, (13) B=C, (14) A=C, (15) |
A!=B AND B!=C AND C!=A, (16) |
是否等边三角形 | A=B AND B=C AND C=A, (17) | A!=B, (18) B!=C, (19) C!=A, (20) |
设计用例:输入顺序是【A,B,C】
序号 | 【A,B,C】 | 覆盖等价类 | 输出 |
---|---|---|---|
1 | 【3,4,5】 | (1),(2),(3),(4),(5),(6) | 一般三角形 |
2 | 【0,1,2】 | (7) | 不能构成三角形 |
3 | 【1,0,2】 | (8) | 不能构成三角形 |
4 | 【1,2,0】 | (9) | 不能构成三角形 |
5 | 【1,2,3】 | (10) | 不能构成三角形 |
6 | 【3,1,2】 | (11) | 不能构成三角形 |
7 | 【1,3,2】 | (13) | 不能构成三角形 |
8 | 【3,3,4】 | (1),(2),(3),(4),(5),(6),(13) | 等腰三角形 |
9 | 【3,4,4】 | (1),(2),(3),(4),(5),(6),(14) | 等腰三角形 |
10 | 【3,4,3】 | (1),(2),(3),(4),(5),(6),(15) | 等腰三角形 |
11 | 【3,4,5】 | (1),(2),(3),(4),(5),(6),(16) | 非等腰三角形 |
12 | 【3,3,3】 | (1),(2),(3),(4),(5),(6),(17) | 等边三角形 |
13 | 【3,4,4】 | (1),(2),(3),(4),(5),(6),(14),(18) | 非等边三角形 |
14 | 【3,4,3】 | (1),(2),(3),(4),(5),(6),(15),(19) | 非等边三角形 |
15 | 【3,3,3】 | (1),(2),(3),(4),(5),(6),(13),(20) | 非等边三角形 |
以上为全部覆盖结果,但可以看出来有些重复输入有不同的结果而且有些输出结果也并未在规格说明中出现,因此最终整理如下:
序号 | 【A,B,C】 | 覆盖等价类 | 输出 |
---|---|---|---|
1 | 【3,4,5】 | (1),(2),(3),(4),(5),(6),(16) | 一般三角形 |
2 | 【0,1,2】 | (7) | 不能构成三角形 |
3 | 【1,0,2】 | (8) | 不能构成三角形 |
4 | 【1,2,0】 | (9) | 不能构成三角形 |
5 | 【1,2,3】 | (10) | 不能构成三角形 |
6 | 【3,1,2】 | (11) | 不能构成三角形 |
7 | 【1,3,2】 | (13) | 不能构成三角形 |
8 | 【3,3,4】 | (1),(2),(3),(4),(5),(6),(13),(20) | 等腰三角形 |
9 | 【3,4,4】 | (1),(2),(3),(4),(5),(6),(14),(18) | 等腰三角形 |
10 | 【3,4,3】 | (1),(2),(3),(4),(5),(6),(15),(19) | 等腰三角形 |
11 | 【3,3,3】 | (1),(2),(3),(4),(5),(6),(17) | 等边三角形 |
二、边界值分析法
参考书籍:软件评测师教程