• 【SoftwareTesting Homework 3】


    课后练习第七题

      使用下面的方法PrintPrime()完成后面的问题(a)-(d)

    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

      

    (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,15,16}

    边覆盖:{(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)}

     

    设计主路径覆盖的测试用例

    import static org.junit.Assert.*;
    
    import java.io.ByteArrayOutputStream;
    import java.io.PrintStream;
    import java.lang.reflect.Method;
    
    import org.junit.*
    
    public class Test {
        private PrintPrimes p;
    
        PrintStream console = null;       
        ByteArrayOutputStream bytes = null;  
    
        @Before
        public void setUp() throws Exception {
            p = new PrintPrimes();           
            bytes = new ByteArrayOutputStream();    
            console = System.out;                  
            System.setOut(new PrintStream(bytes));  
        }
        
        @After
        public void tearDown() throws Exception {
            System.setOut(console);
        }
        
        @Test
        public void testResult() throws Exception {
            String s = new String("Prime:2" + '
    '+'
    ');  
            s += "Prime:3" + '
    '+'
    ';
            s += "Prime:5" + '
    '+'
    ';
            
            Class pp = p.getClass();
            Method method = pp.getDeclaredMethod("printPrimes", 
                    new Class[]{int.class});
            method.setAccessible(true);
            method.invoke(p, 3);
            assertEquals(s, bytes.toString());
    
        }
    }
  • 相关阅读:
    数据卷中的容器操作,整体来说还是非常简单的
    Docker 的另外两个话题: DockerHub 和 容器网络
    Docker——理解好镜像和容器的关系
    MapReduce 运行全过程解析
    MySQL 之 Explain 输出分析
    关于新手数组:样题:陶陶摘苹果
    VirtualBox安装Ubuntu-18.04-Server笔记
    做一个不复制粘贴的程序员[1]: 使用模板方法模式(2)- 对象更新比较器实例
    做一个不复制粘贴的程序员[1]: 使用模板方法模式(1)- 分页查询实例
    做一个不复制粘贴的程序员[0]: 概述
  • 原文地址:https://www.cnblogs.com/mumu95/p/5334287.html
Copyright © 2020-2023  润新知