bugfree安装使用~~搞定!

三角形的等价划分

上一篇 / 下一篇  2010-04-01 14:18:10

三角形的等价划分

          问题:根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。“一个程序读入3个整数,把这三个数值看做一个三角形的3条边的长度值。这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的。
我们都知道,组成三角形的条件是:三条边必须大于零,并且任意两边之和大于第三边。
          我们来做一个假设,设三条边是:A、B、C。请看这是组成三角形的条件:          A>0,B>0,C>0,A+B>C,A+C>B,B+C>A。来看看不能的吧:A<=0, B<=0,C<=0, B+C<=A, A+B<=C, A+C<=B。呵呵,完全相反的两个条件。
         我们将能组成三角形的三个数分为一类,而不能的也分为一类。 现在回到测试用例上来,到底这个等价划分和测试用例有什么关系呢?如果有关系又是怎么体现的呢?
       我们说判断一个三角形是不等边的或者等腰的或者是等边的,首先要判断的是三条边能不能组成三角形——等价划分。我们这里的用例设计也是按等价划分来实现的。
        组成三角形的三边,要满足:A>0,B>0,C>0,A+B>C,A+C>B,B+C>A;
以上的条件要同时满足,既与的关系,所以在用例设计的时候,要同时满足这几个条件,比如:A=3 B=4 C=5,A=4 B=5 C=6,A=5 B=6 C=7。     以上这几个用例因为同时都满足组成三角形的条件,所以我们说它是等价的。因此,我们在设计用例的时候,如果是等价条件的用例,我们可以只取其中一个就可以了。
        非组成三角形的三边,只要满足:A<=0,B<=0,C<=0, B+C<=A, A+B<=C, A+C<=B其中的一个条件就成立,条件是或的关系,我们的用例可以划分为六个等价类,既A<=0 B<=0,C<=0, B+C<=A, A+B<=C, A+C<=B各有一个用例所以我们的用列可以是:
A=-1 B=1 C=2,(A<=0),
A=1 B=-1 C=2,(B<=0),
A=1 B=2 C=-1,(C<=0),
A=1 B=2 C=8,(A+B<=C),
A=1 B=8 C=2,(A+C<=B),
A=8 B=2 C=1,(B+C<=A),
         接下来看看等腰三角形和等边三角型的情况,组成这两中三角形的前提要满足成为三角形的条件+自身特点的条件。
        等腰三角形:(A>0,B>0,C>0,A+B>C,A+C>B,B+C>A)+有两条边相等。:(A>0,B>0,C>0,A+B>C,A+C>B,B+C>A)&&(A=B)&&(B=C)&&(A=C);
  既是或的关系,我们把它等价划分就是:
1 (A>0,B>0,C>0,A+B>C,A+C>B,B+C>A)||(A=B)
2 (A>0,B>0,C>0,A+B>C,A+C>B,B+C>A)||(C=B)
3 (A>0,B>0,C>0,A+B>C,A+C>B,B+C>A)||(A=C)
 所以我们的用例用三个就可以了:
    A=4 B=4 C=5 (1)
    A=5 B=4 C=4 (2)
    A=4 B=5 C=4 (3)
      等边三角形:(A>0,B>0,C>0,A+B>C,A+C>B,B+C>A)||(A=B)|| (B=C)||(A=C)。以为是与的关系,所以我们的用例就用
 A=5 B=5 C=5 或者 A=6 B=6 C=6 (但它们是等价的,只取一个)
相反的如果要证明他们不是等腰三角形或者不是等边三角形,那么等价划分的用例的个数就和上面的完全相反,等腰三角形的个数是一个,而等边的是三个因为:
    非等腰三角形:
A> 0,B>0,C>0,A+B>C,A+C>B,B+C>A)||(A!=B||(B!=C)||(A!=C)
    非等边三角形:
A>0,B>0,C>0,A+B>C,A+C>B,B+C>A)&&(A!=B)&&(B!=C)&&(A!=C)
    我个人认为,等价划分可以用与或的关系来表达,因为“与”是要同时满足的,而“或”分两个或者更多的条件,可以再进行等价划分,直到划分为简单的“与”或者“与”||“与”的关系。
这里留个问题给大家,也是我的疑问,还是上面的题目
   假设条件是:
      A>0,B>0,C>0,A+B>C,A+C>B,B+C>A)&&(A=B)&&(B=C)
      那么用例 (A=4 B=4 C= 5)和(A=4 B=5 C=5 )是不是等价的呢?
      以上观点只是个人对等价划分的一些粗浅的认识,欢迎大家来讨论和学习


TAG:

backtracker的个人空间 引用 删除 backtracker   /   2010-04-07 14:57:57
好经典的题目啊
 

评分:0

我来说两句

日历

« 2024-04-17  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 84645
  • 日志数: 111
  • 图片数: 1
  • 建立时间: 2009-09-21
  • 更新时间: 2010-05-31

RSS订阅

Open Toolbar