软件测试Exercise Section 2.3 第七题

 1 /*****************************************
 2 * Finds and prints n prints n prime integers
 3 * Jeff Offutt, Spring 2003
 4 *******************************************/
 5 private static void printPrimes(int n)
 6 {
 7     int cerPrime;
 8     int numPrimes;
 9     boolean isprime;
10     int [] primes = new int [MAXPRIMES];
11 
12     // Initialize 2 into the list of primes.
13     primes[0] = 2;
14     numPrimes = 1;
15     curPrime = 2;
16     while(numPrimes < n)
17     {
18         curPrime++;
19         isPrime = true;
20         forint i = 0; i<= numPrimes -1; i++)
21         {
22             if(isDivisible(primes[i], curPrime))
23             {
24                 isPrime = false;
25                 break;
26              }
27         }
28         if(isPrime)
29         {
30             primes[numPrimes] = curPrime;
31             numPrimes++;
32         }
33     }
34 
35     // Print all the primes out.
36     for(int i = 0; i <= numPrimes - 1; i++)
37     {
38         System.out.println("Prime:" + primes[i]);
39     }
40 }

 (a)控制流图(见下)。

 

 

(b)设计一个t2=(n=5)能发现但t1=(n=3)不能发现的错误

一个最直观的错误就是数组越界,n取的值越大,数组越界就越有可能发生

(c)寻找一组不经过while循环的测试用例,n=1的时候就可以满足要求

(d)要求找出点覆盖、边覆盖和主路径覆盖的所有TR(测试需求)

点覆盖:{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}

边覆盖:{(1,2),(2,3),(2,12),(3,4),(4,5),(5,6),(6,7),(6,8),(7,5),(8,9),(5,9),(9,10),(9,11),(10,11),(11,2),(12,13),(13,14),(14,15),(15,13),(13,16)}

主路径覆盖:{(1,2,3,4,5,6,7),

(1,2,3,4,5,6,8,9,10,11),

(1,2,3,4,5,6,8,9,11),

(1,2,3,4,5,9,10,11),

(1,2,3,4,5,9,11),

(1,2,12,13,14,15),

(1,2,12,16),

(3,4,5,6,8,9,10,11,2,12,13,14,15),

(3,4,5,6,8,9,11,2,12,13,14,15),

(3,4,5,6,8,9,10,11,2,12,13,16),

(3,4,5,6,8,9,11,2,12,13,16),

(3,4,5,9,10,11,2,12,13,14,15),

(3,4,5,9,11,2,12,13,14,15),

(3,4,5,9,10,11,2,12,13,16),

(3,4,5,9,11,2,12,13,16),

(6,7,5,9,10,11,2,12,13,14,15),

(6,7,5,9,11,2,12,13,14,15),

(6,7,5,9,10,11,2,12,13,16),

(6,7,5,9,11,2,12,13,16),

(14,15,13,16),

(13,14,15,13),

(5,6,7,5),

(2,3,4,5,6,8,9,10,11,2),

(2,3,4,5,6,8,9,11,2),

(2,3,4,5,9,10,11,2),

(2,3,4,5,9,11,2),

}

最后,对任意程序设计主路径覆盖的测试用例,以上次的判断三角形的形状的程序为例

package cn.tju.st;

public class Triangle {
    public int a;
    public int b;
    public int c;
    public Triangle(int a,int b,int c)
    {
        this.a=a;
        this.b=b;
        this.c=c;
    }
    public String judge() {
        if(a==b&&b==c)
            return "equilateral";
        else if(a==b||b==c||c==a)
            return "isosceles";
        else {
            return "scalene";
        }
    }
}

 

package cn.tju.st;

import static org.junit.Assert.*;

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


public class TestTriangle {
    Triangle tri =null;
    @Before
    public void setUp() throws Exception {
        //System.out.println("This is before test");
    }

    @After
    public void tearDown() throws Exception {
        System.out.println("This is after test");
    }

    @Test
    public void test() {
        tri = new Triangle(3,3,3);
        assertEquals("equilateral",tri.judge());
        tri = new Triangle(2,3,3);
        assertEquals("isosceles",tri.judge());
        tri = new Triangle(3,4,5);
        assertEquals("scalene",tri.judge());
    }

}

三组测试用例(3,3,3),(2,3,3),(3,4,5)即可完成主路径覆盖.

转载于:https://www.cnblogs.com/yijiutaosheng/p/5338070.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值