三角形问题的复杂之处在于输入与输出之间的关系比较复杂。分析题目中给出和隐含的对输入条件的要求:
(1) 整数
(2) 三个数
(3) 非零数
(4) 正数
(5) 任意两边之和大于第三边
(6) 等腰
(7) 等边
如果a 、 b 、c 满足条件(1)~ (4),则输出下列四种情况之一:
1. 如果不满足条件(5),则程序输出为 " 非三角形 " 。
2. 如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
3. 如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
4. 如果三条边都不相等,则程序输出为 " 一般三角形 " 。
列出等价类表并编号,形成等价类表
输入条件 | 有效等价类 | 编码 | 无效等价类 | 编码 |
整数 | 均为整数 | (1) | a为非整数 | (10) |
b为非整数 | (11) | |||
c为非整数 | (12) | |||
a、b为非整数 | (13) | |||
b、c为非整数 | (14) | |||
a、c为非整数 | (15) | |||
a、b、c均为非整数 | (16) | |||
三个数值 | 输入a、b、c三个数值 | (2) | 只输入a | (17) |
只输入b | (18) | |||
只输入c | (19) | |||
只输入a、b | (20) | |||
只输入b、c | (21) | |||
只输入a、c | (22) | |||
输入三个以上的数 | (23) | |||
非零数 | 都不为零 | (3) | a为0 | (24) |
b为0 | (25) | |||
c为0 | (26) | |||
a、b为0 | (27) | |||
b、c为0 | (28) | |||
a、c为0 | (29) | |||
a、b、c均为0 | (30) | |||
正数 | 都是正数 | (4) | a小于0 | (31) |
b小于0 | (32) | |||
c小于0 | (33) | |||
a、b小于0 | (34) | |||
b、c小于0 | (35) | |||
a、c小于0 | (36) | |||
a、b、c均小于0 | (37) | |||
两边之和大于第三边 | a+b大于c b+c大于a c+a大于b | (5) | a+b小于c | (38) |
a+b等于c | (39) | |||
b+c小于a | (40) | |||
b+c等于a | (41) | |||
c+a小于b | (42) | |||
c+a等于b | (43) | |||
其中两边相等 | a=b | (6) |
|
|
b=c | (7) |
|
| |
c=a | (8) |
|
| |
三边都相等 | a=b=c | (9) |
|
|
覆盖有效等价类的测试用例:
编号 | 测试用例 | 覆盖的等价类 | 预期结果 |
a b c | |||
1 | 3 4 5 | (1)--(5) |
|
2 | 4 4 5 | (1)--(5),(6) |
|
3 | 4 5 5 | (1)--(5),(7) |
|
4 | 5 4 5 | (1)--(5),(8) |
|
5 | 4 4 4 | (1)--(5),(9) |
|
覆盖无效等价类的测试用例:
编号 | 测试用例 | 覆盖的等价类 | 预期结果 |
a b c | |||
6 |
| (10) |
|
7 |
| (11) |
|
8 |
| (12) |
|
9 |
| (13) |
|
10 |
| (14) |
|
11 |
| (15) |
|
12 |
| (16) |
|
13 |
| (17) |
|
14 |
| (18) |
|
15 |
| (19) |
|
16 |
| (20) |
|
17 |
| (21) |
|
18 |
| (22) |
|
19 |
| (23) |
|
20 |
| (24) |
|
21 |
| (25) |
|