软件测试主路径覆盖hw3

Posted Snorlax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试主路径覆盖hw3相关的知识,希望对你有一定的参考价值。

 

原题中代码

/******************************************************* 
     * Finds and prints n prime integers 
     * Jeff Offutt, Spring 2003 
     ******************************************************/ 
    public static void printPrimes (int n) 
    { 
        int curPrime; // Value currently considered for primeness 
        int numPrimes; // Number of primes found so far. 
        boolean isPrime; // Is curPrime prime? 
        int [] primes = new int [MAXPRIMES]; // The list of prime numbers. 
        
        // Initialize 2 into the list of primes. 
        primes [0] = 2; 
        numPrimes = 1; 
        curPrime = 2; 
        while (numPrimes < n) 
        { 
            curPrime++; // next number to consider ... 
            isPrime = true; 
            for (int i = 0; i <= numPrimes-1; i++) 
            { // for each previous prime. 
                if (isDivisible(primes[i], curPrime)) 
                { // Found a divisor, curPrime is not prime. 
                    isPrime = false; 
                    break; // out of loop through primes. 
                } 
            } 
            if (isPrime) 
            { // save it! 
                primes[numPrimes] = curPrime; 
                numPrimes++; 
            } 
        } // End while 
        
        // Print all the primes out. 
        for (int i = 0; i <= numPrimes-1; i++) 
        { 
            System.out.println ("Prime: " + primes[i]); 
        } 
    } // end printPrimes

控制流图

技术分享

b:数组越界即可,当MAXPRIMES == 4时,n=5会引发越界

c:

n= 1时,不满足numPrimes<n,所以指向12

d:

点覆盖{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),(5,9),(6,7),(6,8),(7,5),(8,9),(9,10),(9,11),(10,11),(11,2),(12,13),(13,14),(13,16),(14,15),(15,13)}

主路径覆盖{(1,2,3,4,5,6,7),  (1,2,3,4,5,6,8,9,11),   (1,2,3,4,5,6,8,9,10,11),   (1,2,3,4,5,9,11),   (1,2,3,4,5,9,10,11),   (1,2,12,13,14,15),   (1,2,12,13,16),   (3,4,5,6,8,9,11,2,12,13,14,15), (3,4,5,6,8,9,10,11,2,12,13,14,15),   (3,4,5,6,8,9,11,2,12,13,16),   (3,4,5,6,8,9,10,11,2,12,13,16),   (3,4,5,9,11,2,12,13,14,15),   (3,4,5,9,10,11,2,12,13,14,15), (3,4,5,9,11,2,12,13,16),   (3,4,5,9,10,11,2,12,13,16),   (6,7,5,9,11,2,12,13,14,15),   (6,7,5,9,10,11,2,12,13,14,15),  (6,7,5,9,11,2,12,13,16),  (6,7,5,9,10,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)
}

 

设计主路径覆盖

第一次试验中的三角形已完成完全覆盖

Tri类

package stlab1;

public class Tri {
    public static String isTri(double a,double b,double c)
    {
        if (b >= a && b >= c)
        {
            double temp = b;
            b = a;
            a = temp;
            
        }
        if (c >= a && c >= b)
        {
            double temp = c;
            c = a;
            a = temp;            
        }
        if (b + c <= a)
            return "不是三角形";
        if (a == b && b == c)
            return "等边三角形";
        if (a == b || b == c || a == c)
        {
            return "等腰三角形";
        }
            
        if (a * a == b * b + c * c)
            return "直角三角形";
        return "一般三角形";
    }
}

test类

package stlab1;

import static org.junit.Assert.*;

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

public class TriTest {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
    }

    @Before
    public void setUp() throws Exception {
    }

    @After
    public void tearDown() throws Exception {
    }

    @Test
    public void test() {
        Tri tri = new Tri();
        assertEquals("等边三角形",tri.isTri(1, 1, 1));
        assertEquals("不是三角形",tri.isTri(0, 1, 2));
        assertEquals("直角三角形",tri.isTri(3, 4, 5));
        assertEquals("等腰三角形",tri.isTri(3, 3, 5));
        assertEquals("一般三角形",tri.isTri(4, 6, 7));
        assertEquals("等腰三角形",tri.isTri(4, 4, 2));
        assertEquals("等腰三角形",tri.isTri(3, 2, 2));
        
    }

}

技术分享

以上是关于软件测试主路径覆盖hw3的主要内容,如果未能解决你的问题,请参考以下文章

软件测试技术 hw3

Software Testing hw3

HW3书上习题

软件测试点覆盖,边覆盖,主路径覆盖及其练习题

实现一个主路径覆盖的测试

软件测试 homework3 控制流图和主路径覆盖