• 软件测试学习(4)


    这周我们主要学习了路径覆盖的相关知识,首先来看一下这周的作业题

    /******************************************************* 
         * Finds and prints n prime integers 
         * Jeff Offutt, Spring 2003 
         ******************************************************/ 
        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

    第一问是画控制流图,用网上的相关软件可以很容易的画出来

    第二问是设计一个t2=(n=5)能发现但t1=(n=3)不能发现的错误

    一个最直观的错误就是数组越界,n取的值越大,数组越界就越有可能发生

    第三问是寻找一组不经过while循环的测试用例,n=1的时候就可以满足要求

    第四问要求找出点覆盖、边覆盖和主路径覆盖的所有TR(测试需求)

    点覆盖:{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),

    }

    最后,对任意程序设计主路径覆盖的测试用例,以上次的判断三角形的形状的程序为例

    package cn.tju.st;
    
    public class Triangle {
        public int a;
        public int b;
        public int c;
        public Triangle(int a,int b,int c)
        {
            this.a=a;
            this.b=b;
            this.c=c;
        }
        public String judge() {
            if(a==b&&b==c)
                return "equilateral";
            else if(a==b||b==c||c==a)
                return "isosceles";
            else {
                return "scalene";
            }
        }
    }
    package cn.tju.st;
    
    import static org.junit.Assert.*;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    
    public class TestTriangle {
        Triangle tri =null;
        @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");
        }
    
        @Test
        public void test() {
            tri = new Triangle(3,3,3);
            assertEquals("equilateral",tri.judge());
            tri = new Triangle(2,3,3);
            assertEquals("isosceles",tri.judge());
            tri = new Triangle(3,4,5);
            assertEquals("scalene",tri.judge());
        }
    
    }

    三组测试用例(3,3,3),(2,3,3),(3,4,5)即可完成主路径覆盖

  • 相关阅读:
    ALinq Dynamic 使用指南——前言
    前端与后端分离的架构实例(三)
    前端与后端分离的架构实例(二)
    启动画面QSplashScreen鼠标点击的时候不退出
    Qt组件屏蔽鼠标激活
    Qt LNK2001错误
    QtDesigner中设定一个组件位于另一个组件上方
    QToolButton设置图片
    osgearth_package切片工具切局部影像或者高程tif无法生成切片问题;切完数据集无法显示问题
    Qt输入框添加搜索按钮,以及自动补全内容
  • 原文地址:https://www.cnblogs.com/ljc825/p/5321286.html
Copyright © 2020-2023  润新知