軟體測試作業(四)

來源:互聯網
上載者:User

標籤:

題目所給出的代碼為

 1 /*******************************************************  2      * Finds and prints n prime integers  3      * Jeff Offutt, Spring 2003  4      ******************************************************/  5     public static void printPrimes (int n)  6     {  7         int curPrime; // Value currently considered for primeness  8         int numPrimes; // Number of primes found so far.  9         boolean isPrime; // Is curPrime prime? 10         int [] primes = new int [MAXPRIMES]; // The list of prime numbers. 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++; // next number to consider ... 19             isPrime = true; 20             for (int i = 0; i <= numPrimes-1; i++) 21             { // for each previous prime. 22                 if (isDivisible(primes[i], curPrime)) 23                 { // Found a divisor, curPrime is not prime. 24                     isPrime = false; 25                     break; // out of loop through primes. 26                 } 27             } 28             if (isPrime) 29             { // save it! 30                 primes[numPrimes] = curPrime; 31                 numPrimes++; 32             } 33         } // End while 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     } // end printPrimes

(a):控制流程圖如下

(b):將MAXPRIMES設為4,這樣t2=(n=5)就會出現數組越界的錯誤,但t1=(n=3)無影響。

 

(c):n=1的時候不滿足numPrimes < n,故不經過while迴圈

 

(d):點覆蓋:{1,2,3,4,5,6,7,8,9,10,11,12,13,14}

 

邊覆蓋:{(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)}

 

設計主路徑覆蓋的測試案例

以上次實驗的判斷三角形為例

 1 package cn.tju.st; 2 public class Calculate { 3     public String triangle (int a, int b,int c) 4     { 5         String str; 6         int d=a-b; 7         int e=b-c; 8         int f=a-c; 9         if( d*e*f==0){10             str="等腰";11             if( (a==b) && (b==c) )12                 str="等邊";13         }14         else15             str="其他";16         return str;17         18     }19 }
package cn.tju.st;import org.junit.After;import org.junit.Before;import org.junit.Test;import static org.junit.Assert.*;import java.util.Arrays;import java.util.Collection;import org.junit.runner.RunWith;import org.junit.runners.Parameterized;import org.junit.runners.Parameterized.Parameters;@RunWith(Parameterized.class)public class CalculateTest {    private String type;    private int a;    private int b;    private int c;        public CalculateTest(String type, int a, int b, int c){        this.type = type;        this.a = a;        this.b = b;        this.c = c;    }    @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");    }    @Parameters    public static Collection prepareData(){        Object[][] object = {                {"等邊",1,1,1},                {"等腰",2,2,3},                {"等腰",2,3,3},                {"其他",2,3,4}};        return Arrays.asList(object);    }    @Test    public void TestTypeOfTriangle()     {        Calculate calc = new Calculate ();         assertEquals (type, calc.triangle(a,b,c));     }}

測試結果如下,已完成主路徑覆蓋

軟體測試作業(四)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.