热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

软件测试书上作业

********************************************************Findsandprintsnprimeinteger
/******************************************************* 
     * 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)不能发现的错误

问题三:寻找一组不经过while循环的测试用例

n=1的时候就可以满足要求

问题四:要求找出点覆盖、边覆盖和主路径覆盖的所有TR

点覆盖:

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

边覆盖{(0,1),(1,2),(2,3,),(3,4),(4,5),(5,6),(6,7),
(7,8),(8,5),(5,9)(9,2),(9,10),(10,2),(2,11),
(2,12),(12,13),(13,14)(14,12)(12,15)}
主路径覆盖:
{(0,1,2,3,4,5,6,7,8)),
(0,1,11,12,13,14),
(0,1,11,12,15),
(0,1,2,3,4,5,9,10),
(5,6,7,8,5),
(2,3,4,5,9,2),
(2,3,4,5,9,10,2)}
问题五 
对任意程序设计主路径覆盖的测试用例
public class Triangle {
    protected long lborderA = 0;

    protected long lborderB = 0;

    protected long lborderC = 0;

    // Constructor
    public Triangle(long lborderA, long lborderB, long lborderC) {

        this.lborderA = lborderA;

        this.lborderB = lborderB;

        this.lborderC = lborderC;

    }

    /**
     * check if it is a triangle
     * 
     * @return true for triangle and false not
     */
    public boolean isTriangle(Triangle triangle) {
        boolean isTriangle = false;

        // check boundary
        if ((triangle.lborderA > 0 && triangle.lborderA <= Long.MAX_VALUE)
                && (triangle.lborderB > 0 && triangle.lborderB <= Long.MAX_VALUE)
                && (triangle.lborderC > 0 && triangle.lborderC <= Long.MAX_VALUE)) {

            // check if subtraction of two border larger than the third
            if (diffOfBorders(triangle.lborderA, triangle.lborderB) < triangle.lborderC
                    && diffOfBorders(triangle.lborderB, triangle.lborderC) < triangle.lborderA
                    && diffOfBorders(triangle.lborderC, triangle.lborderA) < triangle.lborderB) {
                isTriangle = true;
            }

        }
        return isTriangle;
    }

    /**
     * Check the type of triangle
     * 
     * Consists of "Illegal", "Regular", "Scalene", "Isosceles"
     */
    public String getType(Triangle triangle) {
        String strType = "Illegal";

        if (isTriangle(triangle)) {
            // Is Regular
            if (triangle.lborderA == triangle.lborderB
                    && triangle.lborderB == triangle.lborderC) {
                strType = "Regular";
            }
            // If scalene
            else if ((triangle.lborderA != triangle.lborderB)
                    && (triangle.lborderB != triangle.lborderC)
                    && (triangle.lborderA != triangle.lborderC)) {
                strType = "Scalene";
            }
            // if isosceles
            else {
                strType = "Isosceles";
            }
        }

        return strType;
    }

    /**
     * calculate the diff between borders
     * 
     * */
    public long diffOfBorders(long a, long b) {
        return (a > b) ? (a - b) : (b - a);
    }

    /**
     * get length of borders
     */
    public long[] getBorders() {
        long[] borders = new long[3];
        borders[0] = this.lborderA;
        borders[1] = this.lborderB;
        borders[2] = this.lborderC;
        return borders;
    }
}
import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.Test;

public class TriangleTest {



    @Test
    public void test() {
        long []str={2,2,3};
        Triangle t=new Triangle(2, 2, 3);
        Triangle t1=new Triangle(2, 2, 2);
        Triangle t2=new Triangle(2, 3, 4);
        Triangle t3=new Triangle(2, 2, 4);
        
        assertEquals(t.isTriangle(t), true);
        assertEquals(t.getType(t),"Isosceles" );
        assertEquals(t1.getType(t1),"Regular");
        assertEquals(t2.getType(t2),"Scalene" );
        assertEquals(t3.getType(t3),"Illegal" );
        assertEquals(t.diffOfBorders(2, 3), 1);
        assertArrayEquals(t.getBorders(), str);
    }

}

 


推荐阅读
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
author-avatar
阿门路亚_
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有