等价类划分是一种典型的黑盒测试方法。等价类划分方法完全不考虑被测程序的内部结构,只依据程序的规格说明来设计测试用例。
作业内容
构造下述三角形问题的弱健壮的等价类测试用例。
三角形问题:输入三个不超过100的正整数作为三角形的三条边,判断三角形是等边三角形、等腰不等边三角形、完全不等边三角形还是不能构成三角形。
内容说明
等价类的划分:
- 一个输入等价类是指程序输入域的某个子集,在该子集中,各个输入数据对于揭露程序中的错误是等效的。测试某一个等价类的代表值就等同于对这个等价类的其它值的测试。
- 等价类的划分有两种不同的情况:
- 有效等价类:对于程序规格说明来说是合理的、有意义的输入数据构成的集合。
- 无效等价类:对于程序规格说明来说是不合理的、无意义的输入数据构成的集合。
- 设计测试用例时,通常要求同时考虑有效等价类和无效等价类的用例设计。
- 这一类测试称为健壮性测试。
弱/强、一般/健壮的等价类测试分类:
- 弱 (weak) 等价类测试
- 针对单缺陷的等价类测试用例设计。
- 单缺陷:在同一输入条件下失效大概率由单个缺陷引起。
- 强 (strong) 等价类测试
- 针对多缺陷的等价类测试用例设计。
- 一般 (normal) 等价类测试
- 只覆盖有效等价类的测试用例设计。
- 健壮 (robust) 等价类测试
- 同时覆盖有效等价类和无效等价类的测试用例设计。
- 健壮性:软件在异常情况下还能正常运行的能力。健壮性 包括容错能力和异常恢复能力。容错性测试通常构造一些 不合理的输入来诱导软件出错。
解答
定义等价类如下:
- R1 = {: the triangle with sides a, b, and c is equilateral}
- R2 = {: the triangle with sides a, b, and c is isosceles}
- R3 = {: the triangle with sides a, b, and c is scalene}
- R4 = {: sides a, b, and c do not form a triangle}
构造等价类的测试用例:
Test Case | a | b | c | Expected Output |
---|---|---|---|---|
WN1 | 5 | 5 | 5 | Equilateral |
WN2 | 2 | 2 | 3 | Isosceles |
WN3 | 2 | 3 | 2 | Isosceles |
WN4 | 3 | 2 | 2 | Isosceles |
WN5 | 3 | 4 | 5 | Scalene |
WN6 | 4 | 1 | 2 | Not a triangle |
考虑无效值,再构造以下弱健壮性等价类测试用例:
Test Case | a | b | c | Expected Output |
---|---|---|---|---|
WN1 | -1 | 5 | 5 | Value of a is out of range |
WN2 | 5 | -1 | 5 | Value of b is out of range |
WN3 | 5 | 5 | -1 | Value of c is out of range |
WN4 | 101 | 5 | 5 | Value of a is out of range |
WN5 | 5 | 101 | 5 | Value of b is out of range |
WN6 | 5 | 5 | 101 | Value of c is out of range |
WN7 | 5.5 | 5 | 5 | Value of a is illegal |
WN8 | 5 | 5.5 | 5 | Value of b is illegal |
WN9 | 5 | 5 | 5.5 | Value of c is illegal |