Chinaunix首页 | 论坛 | 博客
  • 博客访问: 499477
  • 博文数量: 60
  • 博客积分: 2673
  • 博客等级: 少校
  • 技术积分: 700
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-09 00:25
个人简介

目前主要从事C++软件开发

文章分类

全部博文(60)

文章存档

2013年(3)

2012年(3)

2010年(6)

2009年(23)

2008年(25)

我的朋友

分类:

2008-10-17 12:31:18

一、实验目的
1.掌握白盒测试、黑盒测试用例的设计。
2.熟悉使用Junit框架进行基于java语言的单元测试。

二、实验要求:
1、使用白盒测试用例设计方法为下面的程序设计测试用例:
程序要求:10个铅球中有一个假球(比其他铅球的重量要轻),用天平三次称出假球。
程序设计思路:第一次使用天平分别称5个球,判断轻的一边有假球;拿出轻的5个球,取出其中4个第二次称,两边分别放2个球:如果两边同重,则剩下的球为假球;若两边不同重,拿出轻的两个球称第三次,轻的为假球。
2、使用等价类划分法设计下面的测试用例:
输入三个整数作为边,分别满足一般三角形、等腰三角形和等边三角形。
三、实验内容及步骤:
1、使用白盒测试用例设计方法为下面的程序设计测试用例:
1)源程序

package P1;

public class SearchBall {
    private static int x[]=new int[10];
    public SearchBall(){}
  public void setBWeight(int w[]){
        for(int i=0;i<w.length;i++){
            x[i]=w[i];
            }
        
    }
    public String BeginSearch(){
        if(x[0]+x[1]+x[2]+x[3]+x[4]<x[5]+x[6]+x[7]+x[8]+x[9])
        {
            if(x[1]+x[2]==x[3]+x[4])
            {
                System.out.println("1号是假球");
                return "1号是假球";
            }
        if(x[1]+x[2]<x[3]+x[4])
        {
            if (x[1]<x[2])
            {
                System.out.println("2号是假球");
                return "2号是假球";
            }
         else
            {
             System.out.println("3号是假球");
             return "3号是假球";
         }
            }
        else
        {
            if (x[3]<x[4])
            {
                System.out.println("4号是假球");
                return "4号是假球";
            }
        else
            {
            System.out.println("5号是假球");
            return "5号是假球";
            }
            }
        }
        else
        {
            if(x[6]+x[7]==x[8]+x[9])
            {
                System.out.println("6号是假球");
                return "6号是假球";
            }
        if(x[6]+x[7]<x[8]+x[9])
        {
            if (x[6]<x[7])
            {
                System.out.println("7号是假球");
                return "7号是假球";
            }
         else
            {
             System.out.println("8号是假球");
             return "8号是假球";
         }
            }
        else
        {
            if (x[8]<x[9])
            {
                System.out.println("9号是假球");
                return "9号是假球";
            }
         else
         {
             System.out.println("10号是假球");
             return "10号是假球";
         }
         }
        }

        }
public static void main (String args[]){
       SearchBall sb=new SearchBall();
     int a0[]={1,2,2,2,2,2,2,2,2,2};
     int a1[]={2,1,2,2,2,2,2,2,2,2};
     int a2[]={2,2,1,2,2,2,2,2,2,2};
     int a3[]={2,2,2,1,2,2,2,2,2,2};
     int a4[]={2,2,2,2,1,2,2,2,2,2};
     int a5[]={2,2,2,2,2,1,2,2,2,2};
     int a6[]={2,2,2,2,2,2,1,2,2,2};
     int a7[]={2,2,2,2,2,2,2,1,2,2};
     int a8[]={2,2,2,2,2,2,2,2,1,2};
     int a9[]={2,2,2,2,2,2,2,2,2,1};
     sb.setBWeight(a0);
     System.out.println(sb.BeginSearch());
     sb.setBWeight(a1);
     System.out.println(sb.BeginSearch());
     sb.setBWeight(a2);
     System.out.println(sb.BeginSearch());
     sb.setBWeight(a3);
     System.out.println(sb.BeginSearch());
     sb.setBWeight(a4);
     System.out.println(sb.BeginSearch());
     sb.setBWeight(a5);
     System.out.println(sb.BeginSearch());
     sb.setBWeight(a6);
     System.out.println(sb.BeginSearch());
     sb.setBWeight(a7);
     System.out.println(sb.BeginSearch());    
       sb.setBWeight(a8);
     System.out.println(sb.BeginSearch());
     sb.setBWeight(a9);
     System.out.println(sb.BeginSearch());
     }
 }

 

(2)测试用例设计

 

 

(3)测试程序设计

 

 

package P1;

import junit.framework.TestCase;

public class SearchBallTest extends TestCase {
   int a0[]={1,2,2,2,2,2,2,2,2,2};
   int a1[]={2,1,2,2,2,2,2,2,2,2};
   int a2[]={2,2,1,2,2,2,2,2,2,2};
   int a3[]={2,2,2,1,2,2,2,2,2,2};
   int a4[]={2,2,2,2,1,2,2,2,2,2};
   int a5[]={2,2,2,2,2,1,2,2,2,2};
   int a6[]={2,2,2,2,2,2,1,2,2,2};
   int a7[]={2,2,2,2,2,2,2,1,2,2};
   int a8[]={2,2,2,2,2,2,2,2,1,2};
   int a9[]={2,2,2,2,2,2,2,2,2,1};
   
    public void testBeginSearch() {
        SearchBall SB=new SearchBall();
         SB.setBWeight(a0);
        
         assertEquals("1号是假球",SB.BeginSearch());
         SB.setBWeight(a1);
         assertEquals("2号是假球",SB.BeginSearch());
         SB.setBWeight(a2);
         assertEquals("3号是假球",SB.BeginSearch());
         SB.setBWeight(a3);
         assertEquals("4号是假球",SB.BeginSearch());
         SB.setBWeight(a4);
         assertEquals("5号是假球",SB.BeginSearch());
         SB.setBWeight(a5);
         assertEquals("6号是假球",SB.BeginSearch());
         SB.setBWeight(a6);
         assertEquals("7号是假球",SB.BeginSearch());
         SB.setBWeight(a7);
         assertEquals("8号是假球",SB.BeginSearch());
         SB.setBWeight(a8);
         assertEquals("9号是假球",SB.BeginSearch());
         SB.setBWeight(a9);
         assertEquals("10号是假球",SB.BeginSearch());
    }
    public static void main(String args[]) {
        junit.textui.TestRunner.run(SearchBallTest.class);
        }

}

 

2、使用等价类划分法设计下面的测试用例:

(1)源程序

package p1;

import java.io.*;

public class JTriangle {
     private int b,c,a;
     private static int x1,x2,x3;
     private static String s1,s2,s3;
   public void setA(int a){
         this.a=a; }
   public void setB(int b){
         this.b=b;}
   public void setC(int c){
         this.c=c; }
   public boolean IsTriangle(){
        if(a+b>c&&a+c>b&&b+c>a&&a!=0&&b!=0&&c!=0)
            return true;
        else
            return false;
     }
 
    public JTriangle(){
    
     }
    public JTriangle(int _a,int _b,int _c){
        
        setA(_a);
        setB(_b);
        setC(_c);
    }
     public String JudgeTriangle()
     {
         if(IsTriangle())
     {
        
    
                 if(a==b&&a==c)
                 {
                     return "等边三角形";
                 }
                 else if(a==b||b==c||a==c){
                     return "等腰三角形";
                 }
                 else
                 {
                     return "一般三角形";
                 }
     }
         else
             return "不能组成三角形";
 }
     public boolean ISNumble(String s)
     {
         if(s.length()==0){
         return false;
     }
     else{
         char ch[]=s.toCharArray();
    
         for(int i=0;i<ch.length;i++)
         {
             if(ch[i]>='0'&&ch[i]<='9')
                 continue;
             else
                 return false;
            
                
         }
        
         return true;
     }
     }
    public void SetTriangle(){
         try
         {
         BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
         System.out.println("请输入三角形的三边:");
         System.out.println("a= ");
         s1=in.readLine();
        
         while(!ISNumble(s1)){
             System.out.println("你输入的不是个数字");
             System.out.println("a= ");
             s1=in.readLine();
         }
     System.out.println("b= ");
         s2=in.readLine();
         while(!ISNumble(s2)){
             System.out.println("你输入的不是个数字");
             System.out.println("b= ");
             s2=in.readLine();
         }
     System.out.println("c= ");
         s3=in.readLine();
         while(!ISNumble(s3)){
             System.out.println("你输入的不是个数字");
             System.out.println("C= ");
             s3=in.readLine();
         }
         }
        catch(IOException e)
        {}
        x1=Integer.parseInt(s1);
        x2=Integer.parseInt(s2);
        x3=Integer.parseInt(s3);
        

        setA(x1);
        setB(x2);
        setC(x3);
    }
public static void main(String args[])
     {     JTriangle tr=new JTriangle();
     tr.SetTriangle();
     System.out.print(tr.JudgeTriangle()) ;
     }
        
}
 

 

(2)测试用例设计

(3)测试程序设计

package p1;

import junit.framework.TestCase;

public class JTriangleTest extends TestCase {
     JTriangle tr;
    
    public void testJudgeTriangle() {


    
        
        tr=new JTriangle(0,1,2);
            assertEquals("不能组成三角形",tr.JudgeTriangle());
     tr=new JTriangle(1,0,2);
            assertEquals("不能组成三角形",tr.JudgeTriangle());
     tr=new JTriangle(1,2,0);
            assertEquals("不能组成三角形",tr.JudgeTriangle());
            
            tr=new JTriangle(1,2,3);
            assertEquals("不能组成三角形",tr.JudgeTriangle());
            tr=new JTriangle(1,3,2);
            assertEquals("不能组成三角形",tr.JudgeTriangle());
            tr=new JTriangle(3,1,2);
            assertEquals("不能组成三角形",tr.JudgeTriangle());
            
            tr=new JTriangle(3,4,5);
             assertEquals("一般三角形",tr.JudgeTriangle());
            
             tr=new JTriangle(3,3,4);
                 assertEquals("等腰三角形",tr.JudgeTriangle());
                 tr=new JTriangle(3,4,3);
                     assertEquals("等腰三角形",tr.JudgeTriangle());
                     tr=new JTriangle(4,3,3);
                         assertEquals("等腰三角形",tr.JudgeTriangle());
                    
     tr=new JTriangle(3,3,3);
         assertEquals("等边三角形",tr.JudgeTriangle());

 
    }


  
}

 

四、实验小结

。。。。。。

五、心得体会
。。。。。。。。

阅读(7670) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-10-29 10:13:17

12个球不知道轻还是重,用3次也可以找出来 第一个例子是好像是用了分支覆盖与条件覆盖的方法 第二个例子是等价类划分法的经典示例

chinaunix网友2008-10-22 13:41:48

人家原题是12个球,而且不知道假球是轻还是重。在这里要求放宽很多。解法也就多了很多。

chinaunix网友2008-10-22 13:41:38

人家原题是12个球,而且不知道假球是轻还是重。在这里要求放宽很多。解法也就多了很多。

4brightdays2008-10-21 20:33:41

mark