软件测试学习(4) printPrimes()

根据printPrimes()代码复习路径覆盖的知识。相关代码如下:

/*******************************************************
     * 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

(a)为printPrimes()画控制流图。

(b)设计一个简单的错误,使得t2(n=5)比t1(n=3)更容易发现。

较容易发生的为数组越界错误。当MAXPRIMES为4时,t2会越界。

(c)找到一个测试用例,使得相应的测试路径访问连接while语句开始到for语句的边,而不通过while循环体。

当n=1时,即可满足要求。

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

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

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

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

最后,设计主路径测试覆盖的用例。以三角形为例:

package triangle;

public class triangle {
    private int side1;
    private int side2;
    private int side3;

    public triangle()
    {
        this(1,1,1);
    }

    public triangle(int a, int b, int c) {
        this.side1 = a;
        this.side2 = b;
        this.side3 = c;
    }

    public String getType(int side1,int side2,int side3) throws Exception{
        if(side1 < 1 || side1 > 100 || side2 < 1 || side2 > 100 || side3 < 1 || side3 > 100)
            return "边取值超出范围" ;
        if(side1 + side2 <= side3 || side1 + side3 <= side2 ||side2 + side3 <= side1)
            throw new Exception("不构成三角形");
        if(side1 == side2 && side2 == side3)
            return "等边三角形";
        else if((side1 == side2 || side1 == side3 || side2 == side3)&&(IsRtTriangle(side1,side2,side3)))
            return "等腰直角三角形" ;
        else if(side1 == side2 || side1 == side3 || side2 == side3)
            return "等腰三角形";
        else if(IsRtTriangle(side1,side2,side3))
            return "直角三角形";
        else
            return "一般三角形";

        } 

    public boolean IsRtTriangle(int a,int b,int c){
        int a1 = a * a;
        int b1 = b * b;
        int c1 = c * c;
        if(a1 + b1 == c1 || a1 + c1 == b1 || b1 + c1 == a1)
            return true;
        return false;
    }

    public static void main(String[] args){
        triangle tr = new triangle (3,4,5);
        try
        {
            System.out.println(tr.getType(3,4,5));
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    }
@Parameters
    public static Collection<Object[]>getData(){
        return Arrays.asList(new Object[][]{
                {1,2,-1,false,"边取值超出范围"},
                {99,99,101,false,"边取值超出范围"},
                {3,2,2,false,"等腰三角形"},
                {2,2,2,false,"等边三角形"},
                {3,4,5,true,"直角三角形"},
                {3,4,2,false,"一般三角形"},
        });
    }
    @Test
    public void testType() throws Exception
    {

        assertEquals(this.expType,tr.getType(input1,input2,input3));
    }

即可实现代码的主路径全覆盖。

时间: 2024-08-05 03:54:43

软件测试学习(4) printPrimes()的相关文章

写测试感悟,获取软件测试学习视频资料

大家好,我是TT,互联网测试行业多年,没有牛逼的背景,也没有什么可炫耀的,唯独比他人更努力,在职场打拼.遇到过的坑,走过的弯路,愿意与大家分享,分享自己的经验,少走弯路.首发于个人公众号[测试架构师] 原文如下: 今天重新系统的整理了一些学习资料,电子书,视频教程等!以活动参与方式发放. 活动规则: 从个人角度,简单聊聊软件测试,自己对软件测试的思考.通过文章底部的评论区留言(微信公众号测试架构师),活动结束将发送给点赞最高的前10名读者.   获取方式有两种: 1.文章底部评论区留言方式,点赞

2019我要学软测:软件测试学习路线

软件测试好学么?软件测试学习路线如下: 你要具备软件测试常识.软件测试行业就像一个围城,很多围城外的人想要进来,一没有高人指点,领你进去:二没有人借梯子给你让你走进去.所以说,如果你是跨专业或者是换职业来做软件测试工程师,是难度非常大的! 所以作为小白,如何入行?那么这个就是我们今天要做的. 第一步:具备软件测试常识. 1)什么是软件测试 2)软件测试的分类 3)软件测试常用的一些用例设计方法 4)如何做需求分析 5)如何写软件测试用例 6)什么是bug&bug的管理工具 7)软件测试计划&

软件测试最全的视频源码,最新软件测试学习路线图分享

随着越来越多的企业关注软件质量,软件测试人员重要性进一步凸显,但精英人才却高薪难觅.权威报告显示,中国软件测试人才缺口高达30多万,并且仍在以每年20%的速度增加. 分析软件测试人才紧缺的原因,还在于国内高校教育和企业培养都还没有跟上.很多人想要学习软件测试却不得其法,接下来千锋小编就给大家分享最新最全软件测试学习路线,帮助大家快速入行软件测试. 第一阶段 为软件测试环境配置与管理,你需要熟练掌握在物理机.虚拟机.容器下的快速部署测试环境的方法,完成SVN文件配置服务器搭建.LAMP环境搭建配置

软件测试学习1

未来的不可知,是我前进的源动力. 1.首先要确认真的是要学习软件测试吗,如果是,那就要坚定信心,对于未来的未知,会有困难,有阻碍,要有决心客服,坚持到底: 2.通过互联网先了解软件测试相关的大概念,对软件测试有个整体的了解,eg:博客(http://www.cnblogs.com/fnng/),知乎等: 3.看经典书籍,进一步熟悉有关测试的概念性的知识,包括:黑盒测试.白盒测试,单元测试.集成测试.系统测试.测试方法,软件开发周期,软件开发模型等: 4.个人觉得,看书的时候一定要看目录,对于要看

8 软件测试学习体会

软件测试在整个软件周期中的重要性,它存在于整个项目周期,在项目开始之初需求调研的时候就开始了,在形成需求规格说明书的时候就需要针对文档进行测试.这个环节在后续整个项目中占了很大的比重,能主导整个项目的走向,成败与否全在于开始阶段的决策. 体会一:软件测试的真正意义在于发现错误,而不在于验证软件是正确的. 再严密的测试也不能完全发现软件当中所有的错误,但是测试还是能发现大部分的错误,能确保软件基本是可用的,所以在后续使用的过程中还需要加强快速响应的环节.结合软件测试的理论,故障暴露在最终客户端之前

软件测试学习笔记-week 1

阅读软件测试相关文章了解到软件测试的一些学习步骤如下: 1. 了解软件测试的定义 2. 确定测试的目标 3. 明确测试过程 同时,测试内容又有一下几点 1. 测试方法 2. 详细分类 3. 测试流程 4. 测试阶段 5. 测试模型 以及了解一些测试工具,如 1. 引入缺陷分析模型 2. 利用理论框架分析 3. 建立测试跟踪关系 4. 使用TestPlatform 老师课程ppt上,对于软件测试的定义如下 Software testing is any activity aimed at eval

软件测试学习笔记week 3 --- 测试框架初体验

测试框架初体验 在这周的软件测试课上,第一次了解了软件测试框架的概念.软件测试框架包含的范围非常广,从自动化测试框架到单元测试框架以及性能测试框架.在上个寒假中,在学习Coursera的在线课程时发现普林斯顿的单元测试做得非常强大,从程序正确性到Time consuming甚至Memory consuming,几乎能发现程序中的每一处错误或者缺陷.因此,在上完了这周的课程后,我查阅了一些资料,做了这篇随笔记录了解到的单元测试的知识. 一.什么是测试框架 要认识测试框架,首先要对所谓框架有概念.框

软件测试学习心得

因为工作,一个机缘巧合的机会,来到北京德润教育,0基础学习软件测试,自己本专业与计算机相关专业无关,毕业工作了3年,也无多大成就,想抓住这次机会,下定决心改行,从0基础开始学起. 从开始的试听到现在学业结束,不到两个月的时间,我很感谢德润能让我有机会再次体会了两个月的学生时代.在社会上工作了之后,才能体会到学生时代的幸福时光. 我很珍惜在北京德润教育这段时光,也想努力利用好这段时光,把握住这两个月,努力学习软件测试.学习期间,我感觉学习是件很幸福的事,幸福的事情有三个: 1.是同学情,有同学间的

软件测试学习路线:刚毕业工资多少?

软件测试易上手,因为不涉及代码,相对于其他语言来说比较简单,由浅入深,刚接触就能找到感觉,刚上班就能动手.而且软件测试含金量高,比一般普通岗位薪资要高.那么到底有多高?刚毕业工资多少?目前来看,起步薪资都在6K-8K,工作过的绝大多数在12K-20K这个范围,资深软件测试和管理岗位更高!当然了,其实这也是因人而异的.每个人的水平不一样,薪资自然也不尽相同.除此之外,学习软件测试还有什么优势呢?一是学费低!相对开发及其他课程来说,市场上软件测试培训学费还是偏低的,普遍在12000-20000左右,