• 软件测试 覆盖部分作业


    题目代码如下:

     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 (curPrime%primes[i]==0) 
    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.设计一个t2=(n=5)比t1=(n=3)更容易发现的错误。容易想到数组越界,即当 MAXPRIMES = 3 or 4 时,t1正常通过,而t2会因越界而报错。

    c.显然当 n = 1 时不会经过while循环。

    d.找出所有点覆盖、边覆盖和主路径覆盖的TR。

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

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

    主路径覆盖:{ (1,2,3,4,8,2,10,11,13), (1,2,3,4,8,2,10,11,12,11,13), (1,2,3,4,8,9,2,10,11,13), (1,2,3,4,8,9,2,10,11,12,11,13),

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

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

    (2,3,4,5,6,8,9,2)... }

    e.对上次的三角形判定程序设计主路径覆盖的测试用例。

     1 //Triangle.java
     2 import java.util.Arrays;
     3 
     4 public class Triangle 
     5 {
     6     public String check( String p, String q, String r )
     7     {
     8         int[] a = new int[3];
     9         a[0] = Integer.parseInt(p);
    10         a[1] = Integer.parseInt(q);
    11         a[2] = Integer.parseInt(r);
    12         Arrays.sort(a);
    13         if ( a[0] + a[1] > a[2] )
    14         {
    15             if ( a[0] == a[2] )
    16             {
    17                 return "equilateral";
    18             }
    19             else
    20             {
    21                 if ( a[0] == a[1] || a[1] == a[2] )
    22                 {
    23                     return"isosceles";
    24                 }
    25                 else
    26                 {
    27                     return "scalene";
    28                 }
    29             }
    30         }
    31         else
    32         {
    33             return "not a triangle";
    34         }
    35     }
    36 }
     1 import static org.junit.Assert.*;
     2 import java.util.Arrays;
     3 import java.util.Collection;
     4 import org.junit.Before;
     5 import org.junit.Test;
     6 import org.junit.runner.RunWith;
     7 import org.junit.runners.Parameterized;
     8 import org.junit.runners.Parameterized.Parameters;
     9 
    10 @RunWith(Parameterized.class)
    11 public class TriangleTest 
    12 {
    13     private String p;
    14     private String q;
    15     private String r;
    16     private String expected;
    17     private Triangle tmp;
    18     
    19     public TriangleTest( String p, String q, String r, String expected )
    20     {
    21         this.p = p;
    22         this.q = q;
    23         this.r = r;
    24         this.expected = expected;
    25     }
    26 
    27     @Before
    28     public void setUp()
    29     {
    30         tmp = new Triangle();
    31     }
    32     
    33     @Parameters
    34     public static Collection<String[]> getData()
    35     {
    36         return Arrays.asList( new String[][]
    37         {
    38             { "3", "3", "3", "equilateral" },
    39             { "3", "4", "4", "isosceles" },
    40             { "3", "4", "5", "scalene" },
    41             { "3", "4", "7", "not a triangle" },
    42         });
    43     }
    44 
    45     @Test
    46     public void test() 
    47     {
    48         assertEquals( this.expected, tmp.check( p, q, r ) );
    49     }
    50 }

    测试用例见:@Parameters部分。

    可见覆盖率达到了100%。

    
    
  • 相关阅读:
    oracle 查询表空间
    oracle 创建表空间
    webservice SOA
    WCF初识
    win10远程桌面身份验证错误,要求的函数不受支持
    一台主机两台显示器实现方式学习
    实现Http Server学习
    lucene索引和查询文件系统存储
    java 大文件输入方式FileOutputStream
    tar
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/5338812.html
Copyright © 2020-2023  润新知