applejuzi 发表于 2007-7-24 10:49:13

再谈三角形问题

我也看到了论坛中有很多关于三角形问题的帖子,我看到了对于该问题有多种答案,所以不知道 哪种更好,更准确。下面我就把我看到的答案帖出来。大家相互讨论。
题:
某程序规定:"输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … "。用等价类划分方法为该程序进行测试用例设计。

答案一:

分析题目中给出和隐含的对输入条件的要求:
(1)整数
(2)三个数
(3)非零数
(4)正数
(5)两边之和大于第三边
(6)等腰
(7)等边
如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:
   1)如果不满足条件(5),则程序输出为 " 非三角形 " 。
   2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
   3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
   4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。
列出等价类表并编号

applejuzi 发表于 2007-7-24 10:50:38

覆盖有效等价类的测试用例:
    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)
   覆盖无效等价类的测试用例:

applejuzi 发表于 2007-7-24 10:53:48

答案二:

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)

applejuzi 发表于 2007-7-24 10:57:01

序号
【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)
非等腰三角形

applejuzi 发表于 2007-7-24 10:58:59

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)

本人更倾向于答案一。不过,对于其中的那个无效类:非整数,为何不再具体划分为小数、字符等。请各位高手指点。

tianbudong 发表于 2007-7-24 16:51:09

好,同意

dragon2007 发表于 2007-8-3 16:03:06

分析的很详细!!

分析的很详细!!分析的很详细!!分析的很详细!!分析的很详细!!

hyq828 发表于 2007-8-16 16:41:27

我觉的其实也可以把无效等价类细分成小数和字符了。这主要看你怎么拆分等价类了

lsb5211314 发表于 2007-9-15 14:38:07

受教了,不错,努力学习,顶一下!

flying-clouds 发表于 2007-9-15 19:24:59

分析的真好

Suran2004 发表于 2007-9-17 17:00:50

非常感谢楼主对这道题目做了一个这么好的总结。。。不错!!

zhouzxcv 发表于 2007-9-17 23:17:57

一、        输入和输出条件
输入:
条件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 编辑 ]

zqdl 发表于 2007-10-31 10:59:04

分析的太详细拉,学习!!!!

kenanmao1983 发表于 2007-10-31 15:43:02

非常感谢!

aaliujing 发表于 2007-12-24 17:12:26

呵呵,三角形的问题太经典了~
感觉平时我写的用例分析不全面~
主要是这种设计思想没有~
呵呵~
加油中~

ilovecinema 发表于 2008-5-4 19:33:41

刚学测试,布置的作业也是这个:)

1997goodluck 发表于 2008-5-4 22:14:27

方法一更好一些,不过我认为非整形能不能在分为小数,字母,特殊字符和汉字

I_hui 发表于 2008-5-5 01:36:28

写测试用例,思想最重要,我所欠缺的就是这种思想。。。

wanghaiping1111 发表于 2008-5-6 12:04:11

回复 5# 的帖子

我个人觉得第二种分析方法也分析的不错,只是判断非等腰三角形和非等边三角形有重复,如果是三角形的话,不是等边三角形或等腰三角形,那应该就是一般三角形。

wanghaiping1111 发表于 2008-5-6 12:05:08

因为后面的条件前面一般三角形都已经覆盖了:lol
页: [1] 2
查看完整版本: 再谈三角形问题