• 软件测试学习(4)


        public static void printPrimes (int n) 
        { 
            int curPrime; // Value currently considered for primeness 
            int numPrimes; // Number of primes found so far. 
            boolean isPrime; // Is curPrime prime? 
            int [] primes = new int [MAXPRIMES]; // The list of prime numbers. 
            
            // Initialize 2 into the list of primes. 
            primes [0] = 2; 
            numPrimes = 1; 
            curPrime = 2; 
            while (numPrimes < n) 
            { 
                curPrime++; // next number to consider ... 
                isPrime = true; 
                for (int i = 0; i <= numPrimes-1; i++) 
                { // for each previous prime. 
                    if (curPrime%primes[i]==0) 
                    { // Found a divisor, curPrime is not prime. 
                        isPrime = false; 
                        break; // out of loop through primes. 
                    } 
                } 
                if (isPrime) 
                { // save it! 
                    primes[numPrimes] = curPrime; 
                    numPrimes++; 
                } 
            } // End while 
            
            // Print all the primes out. 
            for (int i = 0; i <= numPrimes-1; i++) 
            { 
                System.out.println ("Prime: " + primes[i]); 
            } 
        } // end printPrimes

    a)画出数据流图。

    b)测试用例t1=(n=3)和t2=(n=5),设计一个t2能发现但是t1不能发现的错误。

      数组越界问题。

    c)找到一个不经过while循环的测试用例。

      n=1;

    d)找出点覆盖、边覆盖和主路径覆盖的所有测试需求。

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

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

      主路径覆盖:

    {(1,2,3,4,5,6,7),(1,2,3,4,5,6,8,9,11),(1,2,3,4,5,6,8,9,10,11),(1,2,3,4,5,9,11),(1,2,3,4,5,9,10,11),(1,2,12,13,16),(1,2,12,13,14,15),

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

    (3,4,5,9,11,2,3),(3,4,5,9,10,11,2,3),(3,4,5,6,8,9,11,2,3),(3,4,5,6,8,9,10,11,2,3),(3,4,5,9,11,2,12,13,16),(3,4,5,9,11,2,12,13,14,15),(3,4,5,9,10,11,2,12,13,16),(3,4,5,9,10,11,2,12,13,14,15),(3,4,5,6,8,9,11,2,12,13,16),(3,4,5,6,8,9,11,2,13,14,15),(3,4,5,6,8,9,10,11,2,12,13,16),(3,4,5,6,8,9,10,11,2,12,13,14,15),

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

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

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

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

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

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

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

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

    (13,14,15,13),

    (14,15,13,14),(14,15,13,16),

    (15,13,14,15)}

    Junit进行主路径覆盖测试

    public class Statistics {
        
        /**
         * 
         * @param numbers
         * @return the length of the array
         */
        public int calLength(int[] numbers) {
            int length = numbers.length;
            
            return length;
        }
    
        /**
         * 
         * @param numbers
         * @return the mean value of the array
         */
        
        public double calMean(int[] numbers) {
            int length = calLength(numbers);
            
            double sum;
            sum = 0.0;
            for (int i = 0; i < length; i++) {
                sum += numbers[i];
            }
            double mean = sum / (double) length;
            
            return mean;
        }
    
        /**
         * 
         * @param numbers
         * @return the var value of the array
         */
        public double calVar(int[] numbers) {
            int length = calLength(numbers);
            double mean = calMean(numbers);
            
            double varsum = 0.0;
            for (int i = 0; i < length; i++) {
                varsum = varsum + ((numbers[i] - mean) * (numbers[i] - mean));
            }
            double var = varsum / (length - 1.0);
            
            return var;
        }
    
    }
    import static org.junit.Assert.*;
    
    import org.junit.Before;
    import org.junit.Test;
    
    
    public class StatisticsTest {
        private Statistics statistics;
        
        @Before
        public void setUp() throws Exception {
            statistics = new Statistics();
        }
    
        @Test
        public void test() {
            //fail("Not yet implemented");
            int a[] = {1,1,1,1,1,1} ;
            assertEquals(0.0,statistics.calVar(a),0.0001);
        }
    
    }

     

  • 相关阅读:
    P1217 [USACO1.5]回文质数 Prime Palindromes
    C++ 队列(queue)堆栈(stack)实现基础
    深入理解指针—>指针函数与函数指针的区别
    C语言结构体及typedef关键字定义结构体别名和函数指针的应用
    实现常用的配置文件/初始化文件读取的一个C程序
    C语言sscanf和sprintf输入输出使用及Strlen、Memset解释
    C语言一些基础知识
    Google的开源C++单元测试框架Google Test
    网站(Web)压测工具Webbench源码分析
    web压测工具http_load原理分析
  • 原文地址:https://www.cnblogs.com/tjuwx/p/5335544.html
Copyright © 2020-2023  润新知