软件测试作业hw3_TestPrintPrimes

来源:互联网 发布:yum cache clean 编辑:程序博客网 时间:2024/06/10 01:52
  1. printPrimes()的控制流图如下:
    hw3
  2. 可令常数MAXPRIMES = 4
  3. 若跳过循环体直接执行print的for循环,则测试路径为1,2,10,11,其条件为numPrimesn,可令n=1即可
  4. 节点覆盖:
    {【1,2,3,4,5,6,7,8,9,2,10,11】}
    边覆盖:
    {【1,2,3,4,5,6,7,8,9,2,10,11】,【1,2,3,4,5,4,7,9,2,10,11】}
    主路径覆盖:
    {【4,5,4】,
    【5,4,5】,
    【1,2,3,4,5,6,7,8,9】,
    【1,2,3,4,5,6,7,9】,
    【1,2,3,4,7,8,9】,
    【1,2,3,4,7,9】,
    【1,2,10,11】
    【2,3,4,5,6,7,8,9,2】,
    【2,3,4,5,6,7,9,2】,
    【2,3,4,7,8,9,2】,
    【2,3,4,7,9,2】}
    5.基于Junit及Eclemma(jacoco)实现一个主路径覆盖的测试:
    测试类:
package com.tju.edu.junittest;import org.junit.Test;import static org.junit.Assert.*;import java.io.ByteArrayOutputStream;import java.io.PrintStream;import org.junit.After;import org.junit.Before;import com.tju.edu.model.Prime;public class PrimeTest {    private int primes[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};     private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();    @Before    public void setUpStreams(){        System.setOut(new PrintStream(outContent));    }    @After    public void cleanUpStreams(){        System.setOut(null);    }    @Test    public void testPrime(){        testOnce(10);    }    public void testOnce(int num){        String output = "";        for(int i = 0; i < num; i++){            output += "Prime: " + primes[i];        }        Prime.printPrimes(num);        assertEquals(output, outContent.toString());    }}

被测试类:

package com.tju.edu.model;public class Prime {    public static int MAXPRIMES = 10;    public static void printPrimes(int n){        int curPrime;        int numPrimes;        boolean isPrime;        int[] primes = new int[MAXPRIMES];        //Initialize 2 into the list of primes        primes[0] = 2;        numPrimes = 1;        curPrime = 2;        while(numPrimes < n){            curPrime++;            isPrime = true;            for(int i = 0; i <= numPrimes - 1; i++){                if(isDivisible(primes[i], curPrime)){                    isPrime = false;                    break;                }            }            if(isPrime){                primes[numPrimes] = curPrime;                numPrimes++;            }        }//End While        //Print all the primes out        for(int i = 0; i <= numPrimes-1; i++){            System.out.print("Prime: " + primes[i]);        }    }    private static boolean isDivisible(int divisor, int divided){        if(divisor != 0){            return (divided % divisor) == 0;        }        return false;    }}

用该方法可以实现测试覆盖100%:
TestCoverage

0 0
原创粉丝点击