軟體測試——Graph Coverage (1)

來源:互聯網
上載者:User

標籤:

Use the following method printPrimes() for questions a-d below.

 

1.  /** *****************************************************

2.  * Finds and prints n prime integers

3.  * Jeff Offutt, Spring 2003

4.  ********************************************************* */

5.  private 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

 

Q:            

(a) Draw the control flow graph for the printPrimes() method.

 

(b) Consider test cases t1 = (n = 3) and t2 = (n = 5). Although these tour the same prime paths in printPrimes(), they do not necessarily find the same faults. Design a simple fault that t2 would be more likely to discover than t1 would.

 

(c) For printPrimes(), find a test case such that the corresponding test path visits the edge that connects the beginning of the while statement to the for statement without going through the body of the while loop.

 

(d) Enumerate the test requirements for node coverage, edge coverage, and prime path coverage for the graph for printPrimes().

 

A:

(a)

(b) Move line 19(isPrime = true) above line 16 so that no primes after 4.

(c) test t3 = (n = 1)

(d) Node coverage test requirement: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}

     Edge coverage test requirement: {(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 8), (5, 7), (7, 4), (4, 8), (8, 9), (8, 10), (9, 10), (10, 2), (2, 11), (11, 12), (12, 13), (13, 12), (12, 14)}

     Prime path coverage test requirement: {[1, 2, 3, 4, 5, 6, 8, 9, 10], [1, 2, 3, 4, 5, 7], [1, 2, 3, 4, 8, 9, 10], [1, 2, 3, 4, 5, 6, 8, 10], [1, 2, 3, 4, 8, 10], [2, 3, 4, 5, 6, 8, 9, 10, 2], [4, 5, 7, 4], [2, 3, 4, 8, 9, 10, 2], [2, 3, 4, 5, 6, 8, 10, 2], [2, 3, 4, 8, 10, 2], [1, 2, 11, 12, 13], [1, 2, 11, 12, 14], [12, 13, 12], [13, 12, 13], [13, 12, 14], [3, 4, 5, 6, 8, 9, 10, 2, 11, 12, 13], [3, 4, 5, 6, 8, 9, 10, 2, 11, 12, 14], [3, 4, 5, 6, 8, 10, 2, 11, 12, 13], [3, 4, 5, 6, 8, 10, 2, 11, 12, 14], [3, 4, 8, 9, 10, 2, 11, 12, 13], [3, 4, 8, 9, 10, 2, 11, 12, 14], [3, 4, 8, 10, 2, 11, 12, 13], [3, 4, 8, 10, 2, 11, 12, 14], [7, 4, 5, 6, 8, 9, 10, 2, 11, 12, 13], [7, 4, 5, 6, 8, 9, 10, 2, 11, 12, 14], [7, 4, 5, 6, 8, 10, 2, 11, 12, 13], [7, 4, 5, 6, 8, 10, 2, 11, 12, 14], [7, 4, 8, 9, 10, 2, 11, 12, 13], [7, 4, 8, 9, 10, 2, 11, 12, 14], [7, 4, 8, 10, 2, 11, 12, 13], [7, 4, 8, 10, 2, 11, 12, 14], [5, 7, 4, 5], [7, 4, 5, 7], [3, 4, 5, 6, 8, 9, 10, 2, 3], [3, 4, 5, 6, 8, 10, 2, 3], [3, 4, 8, 9, 10, 2, 3], [3, 4, 8, 10, 2, 3], [4, 8, 9, 10, 2, 3, 4], [4, 8, 10, 2, 3, 4], [4, 5, 6, 8, 9, 10, 2, 3, 4], [4, 5, 6, 8, 10, 2, 3, 4], [5, 6, 8, 9, 10, 2, 3, 4, 5], [5, 6, 8, 10, 2, 3, 4, 5], [6, 8, 9, 10, 2, 3, 4, 5, 6], [6, 8, 10, 2, 3, 4, 5, 6], [8, 9, 10, 2, 3, 4, 5, 6, 8], [8, 10, 2, 3, 4, 5, 6, 8], [8, 9, 10, 2, 3, 4, 8], [8, 10, 2, 3, 4, 8], [9, 10, 2, 3, 4, 5, 6, 8, 9], [9, 10, 2, 3, 4, 8, 9], [10, 2, 3, 4, 5, 6, 8, 9, 10], [10, 2, 3, 4, 5, 6, 8, 10], [10, 2, 3, 4, 8, 9, 10], [10, 2, 3, 4, 8, 9, 10], [10, 2, 3, 4, 8, 10]}

 

A prime path coverage test for program of Lab1:

Each test case is prime path test.

 1 package lab1; 2  3 public class Lab1 { 4  5     public String check( int a, int b, int c){ 6         //排序使a<=b<=c 7         int temp; 8         if( a > b){ 9             if( a > c){10                 temp = c;11                 c = a;12                 if( b > temp)13                     a = temp;14                 else{15                     a = b;16                     b = temp;17                 }18             }else{19                 temp = a;20                 a = b;21                 b = temp;22             }23         }else if( b > c){24             temp = c;25             c = b;26             b = temp;27         }28         29         if( a <= 0 || a + b <= c)30             return "輸入的邊不能構成三角形";31         else if (a == b || b == c)32             return a == c ? "等邊三角形" : "等腰三角形";33         else34             return "一般三角形";35     }36 37 }
 1 package lab1; 2  3 import static org.junit.Assert.assertEquals; 4  5 @RunWith(Parameterized.class) 6 public class Lab1Test { 7  8     private int input1; 9     private int input2;10     private int input3;11     private String expected;12     private Lab1 test;13     14     public Lab1Test(int input1,int input2,int input3, String expected){15         this.input1 = input1;16         this.input2 = input2;17         this.input3 = input3;18         this.expected = expected;19     }20     21     @Before22     public void setUp(){23         test = new Lab1();24     }25     26     @Parameters27     public static Collection<Object[]> getData(){28         return Arrays.asList(new Object[][]{29             {2, 3, 4, "一般三角形"},30             {8, 7, 9, "一般三角形"},31             {5, 5, 5, "等邊三角形"},32             {1, 1, 1, "等邊三角形"},33             {6, 7, 7, "等腰三角形"},34             {10, 7, 9, "一般三角形"},35             {9, 7, 4, "一般三角形"},36             {2, 2, 3, "等腰三角形"},37             {1, 6, 4, "輸入的邊不能構成三角形"},38             {0, -1, 3, "輸入的邊不能構成三角形"},39         });40     }41     42     @Test43     public void testCheck() {44         assertEquals(this.expected, test.check(input1, input2, input3));45     }46 }

 

軟體測試——Graph Coverage (1)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.