再谈三角形问题
我也看到了论坛中有很多关于三角形问题的帖子,我看到了对于该问题有多种答案,所以不知道 哪种更好,更准确。下面我就把我看到的答案帖出来。大家相互讨论。题:
某程序规定:"输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … "。用等价类划分方法为该程序进行测试用例设计。
答案一:
分析题目中给出和隐含的对输入条件的要求:
(1)整数
(2)三个数
(3)非零数
(4)正数
(5)两边之和大于第三边
(6)等腰
(7)等边
如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:
1)如果不满足条件(5),则程序输出为 " 非三角形 " 。
2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。
列出等价类表并编号
覆盖有效等价类的测试用例:
a b c 覆盖等价类号码
3 4 5 (1)--(7)
4 4 5 (1)--(7),(8)
4 5 5 (1)--(7),(9)
5 4 5 (1)--(7),(10)
4 4 4 (1)--(7),(11)
覆盖无效等价类的测试用例: 答案二:
n
我们可以设三角形的3条边分别为A,B,C。如果它们能够构成三角形的3条边,必须满足:
n
A>0,B>0,C>0,且A+B>C,B+C>A,A+C>B。
n
如果是等腰的,还要判断A=B,或B=C,或A=C。
n
如果是等边的,则需判断是否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)
(C=A), (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】
覆盖等价类
输出
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
【1,3,2】
(11)
7
【3,1,2】
(12)
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,4】
(1),(2),(3),(4),(5),(6),(13),(20)
本人更倾向于答案一。不过,对于其中的那个无效类:非整数,为何不再具体划分为小数、字符等。请各位高手指点。 好,同意
分析的很详细!!
分析的很详细!!分析的很详细!!分析的很详细!!分析的很详细!! 我觉的其实也可以把无效等价类细分成小数和字符了。这主要看你怎么拆分等价类了 受教了,不错,努力学习,顶一下! 分析的真好 非常感谢楼主对这道题目做了一个这么好的总结。。。不错!! 一、 输入和输出条件输入:
条件1:1<=a<=200
条件2:1<=b<=200
条件3:1<=c<=200
条件4:a<b+c
条件5:b<a+c
条件6:c<b+a
输出:
输出1:提示输入的数据有误
输出2:等边三角形
输出3:等腰三角形
输出4:不等边三角形
输出5::非三角形
二、判别表
输入
条件1 F T T T T T T T T
条件2 F T T T T T T T
条件3 T F T T T T T T
条件4 T T F T T T
条件5 T F T T T T
条件6 F T T T T T
输出
输出1 X X X
输出2 X
输出3 X
输出4 X
输出5 X X X
三、用例
输入不合法的情况有:超出范围
浮点数
字符
空
我的思路,用例没写
[ 本帖最后由 zhouzxcv 于 2007-9-17 23:19 编辑 ] 分析的太详细拉,学习!!!! 非常感谢! 呵呵,三角形的问题太经典了~
感觉平时我写的用例分析不全面~
主要是这种设计思想没有~
呵呵~
加油中~ 刚学测试,布置的作业也是这个:) 方法一更好一些,不过我认为非整形能不能在分为小数,字母,特殊字符和汉字 写测试用例,思想最重要,我所欠缺的就是这种思想。。。
回复 5# 的帖子
我个人觉得第二种分析方法也分析的不错,只是判断非等腰三角形和非等边三角形有重复,如果是三角形的话,不是等边三角形或等腰三角形,那应该就是一般三角形。 因为后面的条件前面一般三角形都已经覆盖了:lol
页:
[1]
2