软件测试 对前一日函数的基本路径测试

基本路径测试

实验要求:

请采用基本路径方法对前一日函数进行测试用例设计。

根据互换所得代码,画出流程图,流图,计算圈复杂度,给出独立路径,设计测试用例,执行测试。

比较预期结果和实际运行结果给出测试结论。

流程图:

流图:

计算圈复杂度V(G):

利用公式:V(G) = P +1 得,圈复杂度等于判定节点数加一,根据上面画出得控制流图,可以知道:3 、4 、5 、7 、11 、14 、18 、19 、21 、22 、25 、29 是判定节点,共有12 个,所以圈复杂度是12 +1 =13 。

也可以进行进一步验证,通过控制流图得区域划分也可以得知,共有13 个区域,则圈复杂度为13 。

给出独立路径:

路径1 :1->2->3->8->32

路径2 :1->2->3->4->9->32

路径3 :1->2->3->4->5->10->32

路径4 :1->2->3->4->5->6->11->13->32

路径5 :1->2->3->4->5->6->11->7->16->17->18->32

路径6 :1->2->3->4->5->6->11->12->14->15->32

路径7 :1->2->3->4->5->6->11->12->14->19->21->29->31->32

路径8 :1->2->3->4->5->6->11->12->14->19->21->29->30->32

路径9 :1->2->3->4->5->6->11->12->14->19->21->22->24->32

路径10 :1->2->3->4->5->6->11->12->14->19->21->22->23->25->26->28->32

路径11 :1->2->3->4->5->6->11->12->14->19->21->22->23->25->27->28->32

路径12 :1->2->3->4->5->6->11->12->14->19->20->32

路径13 :1->2->3->4->5->6->11->12->18->15->32

设计测试用例并执行后比较结果:

测试编号

Year

Month

Day

预期结果

实际结果

1

2080

3

1

提示请输入正确的年份

提示请输入正确的年份

2

2020

15

2

提示请输入正确的月份

提示请输入正确的月份

3

2020

11

35

提示请输入正确的日子

提示请输入正确的日子

4

2020

4

31

提示请输入正确的日子

提示请输入正确的日子

5

2000

2

30

提示请输入正确的日子

提示请输入正确的日子

6

2001

2

29

提示请输入正确的日子

提示请输入正确的日子

7

2000

3

1

前一天是2000 年2 月29 号

前一天是2000 年2 月29 号

8

2001

3

1

前一天是2001 年2 月28 号

前一天是2001 年2 月28 号

9

2000

1

1

前一天是1999 年12 月31 号

前一天是1999 年12 月31 号

10

2000

5

3

前一天是2000 年5 月2 号

前一天是2000 年5 月2 号

11

2000

5

1

前一天是2000 年4 月30 号

前一天是2000 年4 月30 号

12

2000

4

1

前一天是2000 年3 月31 号

前一天是2000 年3 月31 号

13

2000

4

3

前一天是2000 年4 月2 号

前一天是2000 年4 月2 号

程序代码:

import java.util.Scanner;

public class test1 {
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        //依次输入年月日
        System.out.print("请输入日期:");
        int year = input.nextInt();
        int month=input.nextInt();
        int day=input.nextInt();

        //判断日期是否输入正规
        if (year2020){
            System.out.println("请输入正确的年份!!!");
            return;
        }
        if (month12){
            System.out.println("请输入正确的月份!!!");
            return;
        }
        if(day31){
            System.out.println("请输入正确的日子!!!");
            return;
        }
        if (month==4||month==6||month==9||month==11){
            if (day==31){
                System.out.println("请输入正确的日子!!!");
                return;
            }
        }
        //判断是闰年还是非闰年,后面会用到
        boolean flag = (year%4==0 && year%100!=0 || year%400==0);
        //判断闰年和平年二月的日期是否输入正确
        if (flag){
            if (month==2) {
                if (day>29){
                    System.out.println("请输入正确的日子!!!");
                    return;
                }
            }
        }else {
            if (month==2) {
                if (day>28){
                    System.out.println("请输入正确的日子!!!");
                    return;
                }
            }
        }

        //计算输入日期的前一天
        if (day==1){    //如果是每个月的一号
            //如果是3月一号
            if (month==3){
                if(flag){
                    System.out.println("前一天是"+year+"年"+"2月"+"29号");
                }else {
                    System.out.println("前一天是"+year+"年"+"2月"+"28号");
                }
            }else{
                if (month==1){
                    System.out.println("前一天是"+(year-1)+"年"+"12月"+"31号");
                }else {
                    month--;
                    if (month==1||month==3||month==5||month==7||month==8||month==10||month==12){
                        day=31;
                    }else{
                        day=30;
                    }
                    System.out.println("前一天是"+year+"年"+month+"月"+day+"号");
                }
            }
        }else {
            System.out.println("前一天是"+(year)+"年"+month+"月"+(day-1)+"号");
        }
    }
}

测试样例演示:

演示(测试编号1 ):

演示(测试编号2 ):

软件测试 对前一日函数的基本路径测试

演示(测试编号3):

软件测试 对前一日函数的基本路径测试

演示(测试编号4):

软件测试 对前一日函数的基本路径测试

演示(测试编号5):

软件测试 对前一日函数的基本路径测试

演示(测试编号6):

演示(测试编号7 ):

软件测试 对前一日函数的基本路径测试

演示(测试编号8 ):

软件测试 对前一日函数的基本路径测试

演示(测试编号9):

软件测试 对前一日函数的基本路径测试

演示(测试编号10):

软件测试 对前一日函数的基本路径测试

演示(测试编号11 ):

软件测试 对前一日函数的基本路径测试

演示(测试编号12 ):

软件测试 对前一日函数的基本路径测试

测试结论:

基于所测试的数据而言,前一日程序系统功能趋于稳定,在实验要求的范围内的测试数据都已经测试完毕且没有问题,本轮测试实验可以结束。

Original: https://www.cnblogs.com/WScoconut/p/16407566.html
Author: 王回甘
Title: 软件测试 对前一日函数的基本路径测试

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/571251/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • dotnet ef 数据迁移

    背景:一直习惯于vs开发,通过程序包管理控制台更新数据库,最近离别了vs加入JetBrains Rider开发需要更新数据库,找不到控制台操作,只能通过命令行操作,如下记录EFCo…

    Java 2023年6月8日
    089
  • [转]解决The requested resource is not available的方法

    此博文为转载博文,首先感谢原作者 HTTP Status 404(The requested resource is not available)异常主要是路径错误或拼写错误造成的…

    Java 2023年6月13日
    087
  • 难搞的偏向锁终于被 Java 移除了

    背景 在 JDK1.5 之前,面对 Java 并发问题, synchronized 是一招鲜的解决方案: 普通同步方法,锁上当前实例对象 静态同步方法,锁上当前类 Class 对象…

    Java 2023年6月5日
    094
  • Centos7下Oracle启动命令

    1、查询挂载历史记录 在root账户下使用一下命令 查看历史使用挂载的那个磁盘 查看挂载&a…

    Java 2023年6月8日
    086
  • 快速排序法

    介绍: 快速排序(Quicksort)是对 冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两 部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后…

    Java 2023年6月15日
    0124
  • 【Java面试手册-算法篇】给定一个正整数,请找出小于这个数字的所有回文数字

    首先来看看回文数字的定义 : 回文数字:设n是一任意自然数,若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。比如12321、666是回文数字,而1234不是回文数…

    Java 2023年6月8日
    087
  • 一级缓存与二级缓存

    1.一级缓存 一级缓存基于sqlSession默认开启,在操作数据库时需要构造SqlSession对象,在对象中有一个HashMap用于存储缓存数据。不同的SqlSession之间…

    Java 2023年6月13日
    098
  • 关于二叉树BFS、DFS的总结

    1 BFS、DFS算法的定义 BFS:广度优先搜索算法,也可称为层序遍历,按照二叉树的层次进行访问,可采用队列保存每一层的节点。 DFS:深度优先搜索算法,尽可能深的搜索树的分支,…

    Java 2023年6月8日
    071
  • Swagger UI 与SpringMVC的整合

    关于 Swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学…

    Java 2023年5月30日
    092
  • 【hexo博客搭建】本地搭建hexo博客(上)

    前言 本篇文章会从本地(Windows 10)搭建-主题更换-部署阿里云详细步骤,如果在搭建过程中,遇到问题,可以通过博客页脚下的QQ联系我,或者在下面评论留言 一.本地搭建 1….

    Java 2023年6月13日
    072
  • Spring 框架的设计理念与设计模式分析

    Spring 作为现在最优秀的框架之一,已被广泛的使用,并且有很多对其分析的文章。本文将从另外一个视角试图剖析出 Spring 框架的作者设计 Spring 框架的骨骼架构的设计理…

    Java 2023年5月30日
    071
  • (转)java术语(PO/POJO/VO/BO/DAO/DTO)

    转自:http://blog.csdn.net/gaoyunpeng/article/details/2093211 PO(persistant object) 持久对象在o/r …

    Java 2023年5月29日
    0156
  • 多账号登录控制

    多账号登录控制 场景:java系统中用户账号登录实现控制,实现用户同时只能在一处登录 思路: 用户登录时添加用户的登录信息 用户退出时删除用户的登录信息 用户请求的session超…

    Java 2023年6月8日
    084
  • 密码学入门

    原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介 在信息安全领域,一般会遇到”窃听”、”篡改”、…

    Java 2023年6月7日
    089
  • Spring bean的作用域

    The scope of this bean: typically "singleton" (one shared instance, which will b…

    Java 2023年5月30日
    096
  • [算法]“简简单单”的插入排序,你还没掌握吗?

    写在前边 大家好,我是melo,一名大二上软件工程在读生,经历了一年的摸滚,现在已经在工作室里边准备开发后台项目啦。不过这篇文章呢,还是想跟大家聊一聊数据结构与算法,学校也是大二上…

    Java 2023年6月5日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球