软件测试 HW4

  本周的作业,是“软件测试基础”教材 ExerciseSection2.3 的课后习题。

  题目要求,用下面的方法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) 考虑测试用例t1=(n=3)和t2=(n=5)。即使这些测试用例游历printPrimes()方法中相同的路径,它们不一定找出相同的错误。设计一个简单的错误,使得t2t1更容易发现。

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

(d) 针对printPrimes()的图列举每个节点覆盖、边覆盖和主路径覆盖的测试需求。

首先,求解(a)。通过processon做出控制流图如下:

(b) 针对“数组越界”的错误,t2比t1更容易发现。

(c) 测试用例: n = 0 或 n = 1

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

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

  主路径覆盖: {(1,2,3,4,5,6,7,9,10,11),

          (1,2,3,4,5,6,7,9,11),

          (1,2,3,4,5,6,8),

          (1,2,3,4,5,9,10,11),

          (1,2,3,4,5,9,11),

          (1,2,12,13,14),

          (1,2,12,13,15),

        

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

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

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

          (2,3,4,5,9,11.2),

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

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

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

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

          (3,4,5,9,10,11,2,12,13,14),

          (3,4,5,9,11,2,12,13,14),

          (3,4,5,9,10,11,2,12,13,15),

          (3,4,5,9,11,2,12,13,15),

          

          (5,6,8,5),

          (6,8,5,9,10,11,2,12,13,14),

          (6,8,5,9,10,11,2,12,13,15),

          (6,8,5,9,11,2,12,13,14),

          (6,8,5,9,11,2,12,13,15),

        

          (13,14,13),

          (14,13,15)}

现在,对具体代码进行分析。代码选择上次测试三角形实验的代码。

该例子中,测试用例为:

  (1.0, 1.0, 4.0), (10.0, 10.0, 10.0), (5.0, 5.0, 6.0), (3.0, 4.0, 5.0)

代码覆盖率为100%,如图所示。

具体代码已上传github,链接:https://github.com/CindyZJT/lab1

时间: 2024-08-24 05:25:42

软件测试 HW4的相关文章

软件测试概述

• 不论软件的生产者还是软件的使用者,均生存在竞争的环境中: 软件开发商为了占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局. 用户为了保证自己业务的顺利完成,当然希望选用优质的软件. 软件带来错误的原因很多,具体地说,主要有如下几点: • 交流不够.交流上有误解或者根本不进行交流 • 软件复杂性 • 程序设计错误 • 需求变化 • 时间压力 • 代码文档贫乏 • 软件开发工具 什么是软件测试 软件测试就是在软件投入运行前,对软件需求分析.设计规格说明和编码的最终复审

软件测试——Peer Review

一.什么是peer review peer review是一种通过作者的同行来确认缺陷和需要变更区域的检查方法.需要进行同行评审的特定产品在定义项目软件过程的时候被确定并且作为软件开发计划的一部分被安排的进度. 二.背景 这周三老师在课上安排了peer review,每5-6个人一个小组,自己进行分工,并对样例软件进行peer review. 三.peer review的图解及分工 Moderator (主持人) 主持人的主要职责,在评审会前负责正规技术评审计划和会前准备的检查:在评审会中负责调

软件测试不再黑盒— threadingtest带来第二代白盒覆盖率技术

软件测试不再黑盒- threadingtest带来第二代白盒覆盖率技术 穿线测试对于测试界的一个重大创新在于,在白盒测试理论出现数十年以后,上海零一拼装信息技术有限公司结合在测试理论方面十余年的潜心研究,率先提出了第二代覆盖率技术,这绝对不是一个口号,而是ZOA真正对于白盒测试的理解以及对于标准第三方测试服务的深度理解经过数年的基础研究以及2年有余的研发而推出的达到商用标准的技术.现在先让我们温习下经典的测试理论: 1.测试方法论 黑盒功能测试法 黑盒功能测试法, 是把要测试的软件看成一个 "黑

[ 测试思维 ] 探索式软件测试

非常不错的关于探索式软件测试的学习资料 1.探索式测试简析 作者:微软 史亮 http://pan.baidu.com/s/1c2D4tAo 2.探索式测试白皮书 作者:淘宝 季哥 http://pan.baidu.com/s/1qYFNG3y

软件测试的方法-------基于直觉和经验的方法

定义:基于直觉和经验的测试方法,不是严格意义上的科学测试方法,带有一定的随机性,测试结果不够可靠,甚至可以看作是没有办法的办法.但是,软件测试是具有社会性,呈现一定的不确定性.这时,采用直觉和经验往往能够发挥更好的作用.   1.Ad-hoc测试方法和ALAC测试 1.1.自由测试(Ad-hoc Testing)强调测试人员根据自己的经验,不受测试用例的束缚,放开思路.灵活地进行各种测试. 1.2.ALAC,是Act-like-a-customer(像客户那样做)的简写,是一种基于客户使用产品的

软件测试

一个团队在做一个软件的时候,必定离不开软件的测试,首先就是找出代码的Bug,也就是软件的错误.缺陷.Bug也可以分解为症状.程序错误.和根本原因.症状即是从用户的角度看,软件出了什么问题.程序错误乃是从代码的角度看,代码的什么错误导致了软件的问题.根本原因,错误的根源,即导致代码错误的根本原因.另外,我们测试设计游两类方法:黑箱和白箱,所谓黑箱/白箱就是指软件测试设计的方法,不是软件测试的方法.黑箱指的是在设计测试的过程中,把软件系统当作一个"黑箱",无法了解或使用系统的内部结构及知识

软件测试笔记(一)理论篇

有句话是这么说的:能动手就别哔哔,尤其是在工作节奏堪比跑马的今天,大家都推崇实干精神,能解决问题就好,去他的理论.但是无可否认的是,良好的理论素养无论是解决工作中遇到的问题,还是未来的职业发展,都帮助甚大.本文整理汇总了软件测试行业中常见的一些测试理论,供大家参考. 1.软件测试按照测试分类有:黑盒测试和白盒测试. 黑盒测试 黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用.在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,

软件测试本学期授课内容大致安排

总课时16次课,一次课2课时,实验课7次. 课程内容: 概述(2次课) 白盒测试技术(2次课) 黑盒测试技术(3次课) 软件测试流程.策略与管理(2次课) Web网站测试(2次课) 软件自动化测试(3次课) 性能测试(2次课) 实验内容: 实验1:测试的实例程序的设计 实验2:结构性测试 实验3:功能性测试 实验4:综合性测试 实验5:性能测试 其中实验1~3.5均要求在实验室完成,下课时由学委统一整理拷贝,提交给老师. 实验4由老师提出需求,6名同学左右同学担任开发2-3个小项目,其余同学担任

软件测试职业规划的思考

前言 入软件测试行至今已经8年多,承领导们的信任与重用,同事的支持与信任,我的职业发展算是相对较好,从入行到各类测试技术岗位,再到测试总监,每一步都刚刚好.最近在自身职业发展瓶颈,人生十字路口,静坐反思,重新审视个人规划与测试人员发展的这个问题,问回自己:你为什么做软件测试工程师?胡思乱想之下有了此文. 一.软件测试起源 网上有一些经典的软件事故,大家感兴趣可以自己搜索一下,我搜了几个列举如下: 简单总结:软件出现缺陷(BUG)导致经济或其他损失,因此有了软件测试. 由此可知软件测试目的:发现缺