实验二 黑盒测试

article/2025/10/7 23:55:49

、目的和要求                                               

1、掌握应用黑盒测试技术进行测试用例设计。

2、掌握对测试用例进行优化设计方法。

二、实验内容

日期问题

测试以下程序:该程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12、1≤day≤31和1900≤year≤2050),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。例如,输入为2004 年11月30日,则该程序的输出为2004年12月1日。

(1)划分等价类,按照等价类划分法设计测试用例;

(2)编写nextDate函数;

(3)掌握Junit4的用法,使用Junit4测试nextDate函数。

JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。掌握Junit4定义的一些常见Annotations:

org.junit.Test

org.junit.Before

org.junit.After

org.junit.BeforeClass

org.junit.AfterClass

org.junit.Ignore

org.junit.runner.RunWith

org.junit.runners.Suite.SuiteClasses

org.junit.runners.Parameterized.Parameters:

 

三、测试用例的编写

等价类表:

输入数据

有效等价类

无效等价类

year

1:[1900,2050]范围内的世纪闰年

2:[1900,2050]范围内的普通闰年

3:[1900,2050]范围内的平年

4:(-∞,1900)的整数

5:(2050,+∞)的整数

6:其他输入(如字符、浮点数等)

month

7:2

8:4,6,9,11

9:1,3,5,7,8,10

10:12

11:(- ∞,1)的整数

12:(12,+∞)的整数

13:其他输入(如字符、浮点数等)

day

14:[1,27]的整数

15:28

16:29

17:30

18:31

19:(-∞,1)的整数

20:(31,+ ∞)的整数

21:其它输入(如字符、浮点数等)

22:29

23:30

24:31

 

测试用例:

序号

测试用例

描述

输入参数

期望输出

覆盖范围

year

month

day

year

month

day

 

1

有效等价类

2004

12

25

2004

12

26

2,10,14

2

有效等价类

2001

2

28

2001

3

1

3,7,15

3

有效等价类

2000

2

29

2000

3

1

1,7,16

4

有效等价类

2001

4

30

2001

5

1

3,8,17

5

有效等价类

2001

5

31

2001

6

1

3,9,18

6

无效等价类

1899

6

1

 

 

 

4

7

无效等价类

2051

6

1

 

 

 

5

8

无效等价类

1999

0

1

 

 

 

11

9

无效等价类

1999

13

1

 

 

 

12

10

无效等价类

1999

1

0

 

 

 

19

11

无效等价类

1999

1

32

 

 

 

20

12

无效等价类

1999

1

a

 

 

 

21

13

无效等价类

2001

2

29

 

 

 

22

14

无效等价类

2000

2

30

 

 

 

23

15

无效等价类

2001

4

31

 

 

 

24

16

无效等价类

a

6

1

 

 

 

6

17

无效等价类

1999

a

1

 

 

 

13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

源代码:

项目结构

******************Datatime.java****************

package heihe;

 

class Datatime {

    private static int[] bigmonth = new int[]{1,3,5,7,8,10,12};

    private static int[] smallmonth = new int[]{4,6,9,11};

   

    private int year;

    private int month;

    private int day;

   

    public String nextDate(String datastr) {

        String[] numbers = datastr.split("/");

        if(numbers.length!=3) {

            return "输入非法";

        }

        try{

            this.year = Integer.parseInt(numbers[0]);

        }catch (NumberFormatException e){

            return "输入非法";

        }

        try{

            this.month = Integer.parseInt(numbers[1]);

        }catch (NumberFormatException e){

            return "输入非法";

        }

        try{

            this.day = Integer.parseInt(numbers[2]);

        }catch (NumberFormatException e){

            return "输入非法";

        }

        String updateResult = checkdate();

        if(updateResult.equals("success")) {

            int daynumber=getdaynumber();

            int nyear = 0,nmonth=0,nday=0;

            if(day<daynumber) {

                nyear=year;

                nmonth=month;

                nday=day+1;

            }

            else if(month<12) {

                nyear=year;

                nmonth=month+1;

                nday=1;

            }

            else if(month==12) {

                nyear=year+1;

                nmonth=1;

                nday=1;

            }

            return nyear+"/"+nmonth+"/"+nday;

        }

        else {

            return updateResult;

        }

    }

   

    private String checkdate() {

        if(year<=2050&&year>=1900) {

            int daynumber=getdaynumber();

            if(daynumber==0) {

                return "无此日";

            }

            if(day>0&&day<=daynumber) {

                return "success";

            }

            else {

                return "无此日";

            }

        }

        return "无此日";

    }

    private int getdaynumber(){

        for(int i=0;i<7;i++) {

            if(bigmonth[i]==month) {

                return 31;

            }

        }

        for(int i=0;i<4;i++) {

            if(smallmonth[i]==month) {

                return 30;

            }

        }

        if(month==2) {

            if(year%4!=0||(year%4==0&&year%100!=0)) {

                return 28;

            }

            else {

                return 29;

            }

        }

        return 0;

    }

}

 

******************DatatimeTest.java****************

package heihe;

 

class Datatime {

    private static int[] bigmonth = new int[]{1,3,5,7,8,10,12};

    private static int[] smallmonth = new int[]{4,6,9,11};

   

    private int year;

    private int month;

    private int day;

   

    public String nextDate(String datastr) {

        String[] numbers = datastr.split("/");

        if(numbers.length!=3) {

            return "输入非法";

        }

        try{

            this.year = Integer.parseInt(numbers[0]);

        }catch (NumberFormatException e){

            return "输入非法";

        }

        try{

            this.month = Integer.parseInt(numbers[1]);

        }catch (NumberFormatException e){

            return "输入非法";

        }

        try{

            this.day = Integer.parseInt(numbers[2]);

        }catch (NumberFormatException e){

            return "输入非法";

        }

        String updateResult = checkdate();

        if(updateResult.equals("success")) {

            int daynumber=getdaynumber();

            int nyear = 0,nmonth=0,nday=0;

            if(day<daynumber) {

                nyear=year;

                nmonth=month;

                nday=day+1;

            }

            else if(month<12) {

                nyear=year;

                nmonth=month+1;

                nday=1;

            }

            else if(month==12) {

                nyear=year+1;

                nmonth=1;

                nday=1;

            }

            return nyear+"/"+nmonth+"/"+nday;

        }

        else {

            return updateResult;

        }

    }

   

    private String checkdate() {

        if(year<=2050&&year>=1900) {

            int daynumber=getdaynumber();

            if(daynumber==0) {

                return "无此日";

            }

            if(day>0&&day<=daynumber) {

                return "success";

            }

            else {

                return "无此日";

            }

        }

        return "无此日";

    }

    private int getdaynumber(){

        for(int i=0;i<7;i++) {

            if(bigmonth[i]==month) {

                return 31;

            }

        }

        for(int i=0;i<4;i++) {

            if(smallmonth[i]==month) {

                return 30;

            }

        }

        if(month==2) {

            if(year%4!=0||(year%4==0&&year%100!=0)) {

                return 28;

            }

            else {

                return 29;

            }

        }

        return 0;

    }

}

 

运行结果:

 


http://chatgpt.dhexx.cn/article/aZIDfMfR.shtml

相关文章

软件测试-黑盒测试

文章目录 黑盒测试等价类划分例题 边界值分析法例题 判定表法例题 Pair-wise方法黑盒测试的优缺点优点缺点 黑盒测试 软件黑盒测试就是测试者把软件程序想象为一个没打开的黑盒子。测试者不必了解程序的内部情况&#xff0c;不考虑程序内部逻辑结构&#xff0c;只根据程序的输入…

软件测试——黑盒测试

1.概述 黑盒测试也称功能测试或数据驱动测试&#xff0c;它是在已知产品所应具有的功能&#xff0c;通过测试来检验每个功能都是否能够正常使用。 在测试时&#xff0c;把程序看作一个不能打开的黑盒子&#xff0c;在完全不考虑程序内部结构和内部特性的情况下&#xff0c;测…

黑盒测试基础

黑盒测试方法&#xff1a; 黑盒测试方法&#xff1a;等价类划分法&#xff1a;边界值分析法&#xff1a;因果图法&#xff1a;决策表法&#xff1a;&#xff08;判定表法&#xff09;正交试验设计法&#xff1a;错误推测法&#xff1a;功能分解法&#xff1a;*&#xff08;又叫…

LIS系统字典模块功能

字典管理模块&#xff1a; 系统参数功能简介&#xff1a;集中设置系统使用过程中所需的参数值&#xff0c;一般由开发或实施人员进行设置。 标本管理功能简介&#xff1a;标本管理是对检验业务中涉及的检验标本类型进行初始化设置&#xff0c; …

区域检验管理系统(云LIS)源码

1、区域检验管理系统&#xff08;云LIS&#xff09;概述 云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序&#xff0c;可协助区域内所有临床实验室相互协调并完成日常检验工作&#xff0c;对区域内的检验数据进行集中管理和共享&#xff0c;通过对质量控制的管理&am…

LIS算法

经典LIS算法&#xff1a;导弹拦截 某国为了防御敌国的导弹袭击&#xff0c;开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不能高于前一发的高度。某天&#xff0c;雷达捕捉到敌国…

大型三甲医院检验系统LIS源码 LIS系统源代码

一套功能完善&#xff0c;源码完整&#xff0c;可完美运行的医院LIS系统源码。源码中附带第三方示例代码&#xff0c;除Redis外源码中还有MongoDB常用方法&#xff0c;可方便更换缓存数据库。 私信了解更多&#xff01; LIS系统即实验室信息管理系统。LIS系统能实现临床检验信…

【C#】医学检验系统(LIS)源码

一、医学检验系统&#xff08;Laboratory Information Management System 简称&#xff1a;LIS&#xff09;LIS是HIS系统的一个重要的组成部分&#xff0c;其主要功能是将检验的实验仪器传出的检验数据经分析后&#xff0c;生成检验报告&#xff0c;通过网络存储在数据库中&…

LIS系统源码

LIS系统(Laboratory Information System) 即实验室&#xff08;检验科&#xff09;信息系统&#xff0c;它是医院信息管理的重要组成部分之一&#xff0c;自从人类社会进入信息时代&#xff0c;信息技术的迅速发展加快了各行各业现代化与信息化的进程。LIS系统逐步采用了智能辅…

医院检验LIS系统源码

医院lis源码 实验室信息管理系统源码 .net检验系统源码 医院系统源码 了解更多源码内容&#xff0c;可私信我。 开发环境&#xff1a;.NET4.0 WPF VS2017或VS2019SQL2016 实验室信息管理系统以条码标本为主线&#xff0c;实现从采集、检测、报告、归档的全程跟踪管理。 支持…

实验室信息管理系统(LIS)的一些个人总结

目录 一、实验室信息管理系统&#xff08;LIS&#xff09;是什么&#xff1f; 二、LIS系统的主要功能是什么&#xff1f; 1&#xff09;&#xff1a;门诊患者标本的流程管理。 2&#xff09;&#xff1a;住院患者标本的流程管理。 3&#xff09;&#xff1a;体检患者标本的…

医院检验LIS系统

医院检验LIS系统 一、医院LIS系统概况二、医院LIS系统建设必要性三、医院LIS系统业务流程1. 整体业务流程2. 门急诊流程3. 体检标本流程4. 体检科内部流程5. 检验流程 四、医院LIS系统业务功能1. 全流程条码管理2. 检验流程操作功能3. 异常标本操作功能4. 医嘱变更操作功能5. 报…

C#医院LIS系统源码 LIS实验室管理信息系统源码 LIS检验系统源码

1、LIS系统技术框架 &#xff08;1&#xff09;总体框架&#xff1a; SaaS架构的Client/Server应用 服务可伸缩&#xff0c;多服务协同 服务可拆分&#xff0c;功能易扩展 &#xff08;2&#xff09;技术细节&#xff1a; 体系结构&#xff1a;Client/Server架构 客户端…

云LIS系统是什么?云LIS系统的功能有哪些?

云LIS系统源码 C#医学检验云LIS平台源码 云LIS系统是什么&#xff1f; 云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序&#xff0c;可协助区域内所有临床实验室相互协调并完成日常检验工作&#xff0c;对区域内的检验数据进行集中管理和共享&#xff0c;通过对质量…

第三方实验室云LIS系统

本套云LIS系统基于B/S架构的实验室管理系统&#xff0c;整个系统的运行基于WEB层面&#xff0c;只需要在对应的工作台安装一个浏览器软件有外网即可访问。SaaS服务&#xff0c;无需部署&#xff0c;开通账号接口快速入门使用&#xff0c;集齐前处理、检验、报告、质控、统计分析…

LIS实验室信息管理系统功能模块(Oracle数据库、Client/Server架构)

一、系统框架简介 1、技术框架 &#xff08;1&#xff09;总体框架&#xff1a; ♦SaaS架构的Client/Server应用 ♦服务可伸缩&#xff0c;多服务协同 ♦服务可拆分&#xff0c;功能易扩展 &#xff08;2&#xff09;技术细节&#xff1a; ♦体系结构&#xff1a;Client/Serv…

医院LIS系统源码,云LIS系统源码,独立实验室LIS源码

实验室云LIS系统源码 LIS系统源码 LIS源码 基于B/S架构的实验室管理系统云LIS&#xff0c;整个系统的运行基于WEB层面&#xff0c;只需要在对应的工作台安装一个浏览器软件有外网即可访问。 私信了解更多源码内容&#xff01; 技术架构&#xff1a;Asp.NET CORE 3.1 MVC SQ…

医院常用系统简称说明(HIS 、LIS、PACS等)

1、简称目录 HIS&#xff08;Hospital Information System &#xff09;医院信息管理系统 包含门诊和住院两部分&#xff0c;以药品和收费为主CIS&#xff08;Clinical Information System &#xff09;临床信息系统&#xff1b;LIS&#xff08;Laboratory Information Manage…

lis系统说明

系统概述 1.1 建设背景 随着另社会信息化程度的日益提高&#xff0c;医疗卫生事业的信息化建设也不断深入&#xff0c;卫生部关于《中国医疗卫生事业信息化发展纲要》中明确指出&#xff0c;全国三级医院60%实现信息化管理。卫生总的这个文件&#xff0c;对全国各医院的信息化建…

都能看懂的LIS(最长上升子序列)问题

LIS问题介绍&#xff1a; 首先来说一下什么是LIS问题&#xff1a; 有一个长为n的数列a0, a1, ......, a(n-1)。请求出这个序列中最长的上升子序列的长度。上升子序列指的是对于任意的i<j都满足ai<aj的子序列&#xff0c;该问题被称为最长上升子序列&#xff08;LIS&…