实验二+065+方绎杰

1.被测源码:

package 软件测试实验1;
import java.util.Arrays;
import java.util.Scanner;

public class test01 {
    public static void main(String[] args){
        int[] length=new int[3];
        String result=null;
        boolean flag=true;
        Scanner sc = new Scanner(System.in);
        while(flag){
           System.out.print("***********************\n");
           System.out.print("请输入三角形的三条边\n");
           System.out.print("第一条边:");
           length[0]=sc.nextInt(); 
           System.out.print("第二条边:");
           length[1]=sc.nextInt();   
           System.out.print("第三条边:");
           length[2]=sc.nextInt();
           Arrays.sort(length);//对三条边进行排序
           if(length[0]<1||length[2]>100){
               System.out.print("Attention!边的值不在范围内!!");
           }
           else
           {
               result=triangle(length[0],length[1],length[2]);
               System.out.print(length[0]+","+length[1]+","+length[2]+"可构成"+result);
               System.out.print("\n***********************\n");
               
           }
           System.out.print("是否要继续输入数据?1:Yes 2:No");
           String temp=sc.next();
           switch(temp)
            {
               case"1":
                   flag=true;
                   break;
               case"2":
                   flag=false;
                   System.out.print("您已退出程序");
                   break;
            }
        }
    }
    
    public static String triangle(int a,int b,int c){
        String sort=null;
        /*
         * //修改处:因为对三条边进行排序,所以判断语句会比较简单。
         */
        if((a+b>c)&&((c-b)<a)){
            if((a==b)||(b==c)){
                    sort="等腰三角形";
            }
            else if(a==c){
                sort="等边三角形";
            }
            else if(a*a+b*b==c*c)
                sort="直角三角形";
            else 
                sort="一般三角形";
        }
        else{
            sort="不能构成三角形";
    }
        return sort;
}
}

2.依据覆盖技术,测试用例列表:

3.相应Junit测试脚本、执行结果

测试脚本:

package exam1;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class AutoTest {

    @Before
    public void setUp() throws Exception {
    }

    @Test
    public void testTriangleStatementCoverage1() {
        assertEquals("不能构成三角形",test01.triangle(1, 2, 3));
        
    }
    @Test
    public void testTriangleDecisionCoverage2() {
        assertEquals("边的值不在范围内",test01.triangle(1, 2, 3));
    }
    @Test
    public void testTriangleDecisionCoverage3() {
        assertEquals("不能构成三角形",test01.triangle(1, 2, 3));
    }
    @Test
    public void testTriangleDecisionCoverage4() {
        assertEquals("等腰三角形",test01.triangle(3,3, 4));
    }
    @Test
    public void testTriangleDecisionCoverage5() {
        assertEquals("等边三角形",test01.triangle(3, 3, 3));
    }
    @Test
    public void testTriangleDecisionCoverage6() {
        assertEquals("一般三角形",test01.triangle(4, 5, 6));
    }
    @Test
    public void testTriangleConditionDecisionCoverage7() {
        assertEquals("一般三角形",test01.triangle(48, 61, 79));
    }
    @Test
    public void testTriangleConditionDecisionCoverage8() {
        assertEquals("直角三角形",test01.triangle(12, 9, 15));
    }
    @Test
    public void testTriangleConditionCoverage9() {
        assertEquals("不能构成三角形",test01.triangle(5, 11, 77));
    }
    @Test
    public void testTriangleConditionCoverage10() {
        assertEquals("等腰三角形",test01.triangle(66, 33, 66));
    }
    @Test
    public void testTriangleConditionCoverage11() {
        assertEquals("等边三角形",test01.triangle(77, 77, 77));
    }
    @Test
    public void testTriangleConditionCoverage12() {
        assertEquals("一般三角形",test01.triangle(66, 77, 88));
    }

}

4.测试结果:

测试小结:

  被测代码在边界值,等腰和等边的判断存在问题

  修改建议:将边界值判断放到triangle函数中,同时调整等腰和等边的判断顺序

  通过这次实验对白盒测试的各种覆盖有了进一步的了解,同时学会的junit的使用方式。对代码规范有了更进一步的了解

posted @ 2017-04-12 21:52  Tichocan  阅读(227)  评论(2编辑  收藏  举报