黑盒测试用例设计

news2024/11/28 16:25:44

目录

前言:

一、黑盒测试

二、实验目的

三、实验内容

四、实验步骤

五、实验过程

题目一

1、等价类划分表

2、设计测试用例

3、缺陷

4、代码实现

5、测试结果

 题目二

设计测试用例

题目一示例代码(java编写)

总结


前言:

软件质量保证与测试技术是软件工程的重要组成部分,它涉及到软件开发过程中的各个阶段,从需求分析到维护和更新。软件测试是软件质量保证的主要手段之一,它通过执行软件系统或其组成部分,检查其是否满足预期的功能和性能要求,以及是否存在缺陷或错误。软件测试可以分为静态测试和动态测试,静态测试是在不运行软件的情况下对其进行分析和评估,动态测试是在运行软件的情况下对其进行观察和验证。

黑盒测试用例设计是黑盒测试的关键步骤,它是根据软件的需求规格或功能说明,确定需要对软件进行哪些输入和输出操作,以及期望得到什么样的结果。黑盒测试用例设计的目标是尽可能覆盖软件的所有功能和边界条件,同时避免重复和冗余。黑盒测试用例设计的方法有很多,例如等价类划分、边界值分析、因果图法、正交实验法等。本实验将介绍其中最常用的两种方法:等价类划分和边界值分析,并通过一个简单的示例来演示它们的应用。

一、黑盒测试

黑盒测试是一种动态测试方法,它只关注软件的输入和输出,而不考虑软件的内部结构和实现细节。黑盒测试的优点是可以从用户的角度检验软件的功能正确性和可用性,而不受开发者的偏见和限制。黑盒测试的缺点是无法发现软件内部的逻辑错误和设计缺陷,也无法评估软件的效率和可靠性。因此,黑盒测试通常需要与白盒测试(一种考虑软件内部结构和实现细节的动态测试方法)相结合,以提高软件测试的覆盖率和质量。

二、实验目的

学会用等价类划分法和边界值法设计测试用例,进行功能测试。

三、实验内容

题目1:NextDate程序的功能是按年、月、日的顺序输入一个日期,输出为输入日期后一天的日期。请使用等价类和边界值法对NextDate程序进行黑盒测试。(NextDate程序源代码见文档最后附录A)

题目2:根据163邮箱地址的构成规则,为163邮箱注册模块中输入域“邮箱地址”设计测试用例(假设没有重复的用户名),注册界面请登录网址:163网易免费邮-你的专业电子邮局查看

四、实验步骤

(1)设计等价类划分表,可以参照下表的格式

等价类划分表

输入条件

有效等价类

无效等价类

(2)利用等价类划分法和边界值分析法设计测试用例

测试用例

用例编号

测试数据

预期结果

覆盖等价类或边界值

(3)运行测试程序,记录和分析测试结果,将测试中发现的BUG记录在下表中。

缺陷报告单

缺陷编号

缺陷描述

用例编号

实际结果

(4)在程序中加必要注释说明:创建日期、创建者、函数功能

(5)实验报告中要有运行结果截图。

(6)认真撰写实验心得。

五、实验过程

题目一

1、等价类划分表

2、设计测试用例

3、缺陷

4、代码实现

示例代码是java代码,但在本文中,使用了C语言编写,示例代码会在文后给出

#include <stdio.h>

void NextDate(int year,int month,int day);

int main()//主函数 
{
    int year=0,month=0,day=0;
    printf("请输入年份:\n");
    scanf("%d",&year);
    while(!(year>=1811 && year<=2013))
    {
        printf("年份超过界限,请重新输入\n");
        scanf("%d",&year);
    }

    printf("请输入月份:\n");
    scanf("%d",&month);
    while (month>12||month<1)
    {
        printf("月份超过界限,请重新输入\n");
        scanf("%d",&month);
    }

    printf("请输入日期:\n");
    scanf("%d",&day);
    while (day>31||day<1)
    {
        printf("日期输入有误,请重新输入\n");
        scanf("%d",&day);
    }

    NextDate(year,month,day);

    return 0;
}

void NextDate(int year,int month,int day)//计算日期 
{
    if((year%4==0 && year%100!=0) || (year%400==0))  /*检查闰年*/
    {
        int i=0;
        i=day-29;
        while(month==2&&i>0)
        {
            printf("本月是闰月,请在1-29之间从新输入日期\n");
            scanf("%d",&day);
        }
        if(month==2&&day==29)
        {
            month=3;
            day=1;

        }
        else day++;
    }
    else day++;
    /*月底计算*/
        switch(month)
    {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
            if (day==32)
            {
                month++;
                day=1;
                printf("明天是:%d/%d/%d\n",year,month,day);
            }
            break;
        case 2:
        	if(day==28&&(year%4==0 && year%100!=0) || (year%400==0)){//计算闰年的2月 
        		
        			month=2;
        			day=29;
        			printf("明天是:%d/%d/%d\n",year,month,day);
				
			}
			break;
            if(day==29)//正常 
            {
                month=3;
                day=1;
                printf("明天是:%d/%d/%d\n",year,month,day);
            }
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            if(day==31)
            {
                month++;
                day=1;
                printf("明天是:%d/%d/%d\n",year,month,day);
            }
            break;
        case 12:
            if(day==32)
            {
                year++;
                month=1;
                day=1;
                printf("明天是:%d/%d/%d\n",year,month,day);
            }
            break;
    }
printf("明天是:%d/%d/%d\n",year,month,day);
}

5、测试结果

 题目二

设计测试用例

题目一示例代码(java编写)

void NextDate(int year,int month,int day);
void main()
{
	int year=0,month=0,day=0;
	NextDate(year,month,day);
}

void NextDate(int year,int month,int day)
{
	printf("请输入年份:\n");
scanf(“%d”,&year);
	while(!(year>=1811 && year<=2013))
	{
		printf("年份超过界限,请重新输入\n");

scanf(“%d”,&year);
	}

	printf("请输入月份:\n");
scanf(“%d”,&month);
	while (month>12||month<1)
	{
		printf("月份超过界限,请重新输入\n");
scanf(“%d”,&month);
	}

	printf("请输入日期:\n");
scanf(“%d”,&day);
	while (day>31||day<1)
	{
		printf("日期输入有误,请重新输入\n");
scanf(“%d”,&day);
	}

    if((year%4==0 && year%100!=0) || (year%400==0))  /*检查闰年*/
	{
		int i=0;
		i=day-29;
		while(month==2&&i>0)
		{
			printf("本月是闰月,请在1-29之间从新输入日期\n");
scanf(“%d”,&day);
		}
		if(month==2&&day==29)
		{
			month=3;
			day=1;
	
		}
		else day++;
	}
	else day++;
	/*月底计算*/;
		switch(month)
	{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
			if (day==32)
			{
				month++;
				day=1;
                printf("明天是:%d/%d/%d\n",year,month,day);
	}
			break;
		case 2:
			if(day==29)
			{
				month=3;
				day=1;
printf("明天是:%d/%d/%d\n",year,month,day);
			}
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			if(day==31)
			{
				month++;
				day=1;
printf("明天是:%d/%d/%d\n",year,month,day);
		    }
			break;
		case 12:
			if(day==32)
			{
				year++;
				month=1;
				day=1;
printf("明天是:%d/%d/%d\n",year,month,day);
}
			break;
		}
printf("明天是:%d/%d/%d\n",year,month,day);
}

总结

这篇文章介绍了软件测试的概念和方法,其中黑盒测试是一种动态测试方法,它只关注软件的输入和输出,而不考虑软件的内部结构和实现细节。黑盒测试的优点是可以从用户的角度检验软件的功能正确性和可用性,而不受开发者的偏见和限制。黑盒测试的缺点是无法发现软件内部的逻辑错误和设计缺陷,也无法评估软件的效率和可靠性。因此,黑盒测试通常需要与白盒测试(一种考虑软件内部结构和实现细节的动态测试方法)相结合,以提高软件测试的覆盖率和质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/423210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果pencil和平替笔有哪些区别?性价比平替电容笔排行榜

而对于那些把ipad当做学习工具的学生党而言&#xff0c;电容笔就成了日常的必备品。但因为苹果Pencil的售价太贵了&#xff0c;学生们都买不起。因此&#xff0c;最好的选择还是平替电容笔。作为一个ipad的忠实用户&#xff0c;同时也是一个数码产品的热衷者&#xff0c;这两年…

1797F Li Hua and Path(Min-rt树,Max-rt树)

题目链接 题意 &#xff1a; 给你一个大小为nnn的树&#xff0c;我们想求解一个问题&#xff0c;问题的定义是找有多少条路径满足恰好满足路径的端点是路径的最小值ororor最大值条件之一&#xff0c;【注】不能同时满足路径的两个端点是最小值又是最大值 现在增加mmm个操作&am…

【Unity】基于AVFoundation开发MacOS摄像头(二)

【Unity】基于AVFoundation开发MacOS摄像头&#xff08;一&#xff09;_GrimRaider的博客-CSDN博客实现一个Camera设备驱动&#xff0c;代替unity自带WebCamTexturehttps://blog.csdn.net/GrimRaider/article/details/130127229 目标1&#xff1a;实现bridge&#xff0c;创建一…

【Java数据结构——环形链表】判断链表成环与寻找链表成环的入口节点(经典)

判断链表是否成环https://leetcode.cn/problems/linked-list-cycle/description/ 解题核心思路&#xff1a; 定义快慢指针初始引用指向链表的头节点&#xff0c;快指针每向后走两步&#xff0c;慢指针走一步。如果链表中存在环&#xff0c;则快慢指针一定会在某次移动后相遇。 …

一文看懂“低代码、零代码”是什么?有什么区别?

低代码和零代码近几年热度一直居高不下&#xff0c;乍一看&#xff0c;很容易混淆低代码和零代码开发平台—— 因为它们都是传统开发的替代方案&#xff0c;旨在通过类似于可视化编程的功能加速软件开发过程。 但二者根本不是一回事。从开发人员经验 、目标角色到使用场景&…

C++ 学习4

C设计原则 高内聚低耦合 内聚就是一个模块内各个元素彼此结合的紧密程度&#xff0c;高内聚就是一个模块内各个元素彼此结合的紧密程度高。 所谓高内聚是指一个软件模块是由相关性很强的代码组成&#xff0c;只负责一项任务&#xff0c;也就是常说的单一责任原则。 耦合&am…

计算机网络 - TCP的效率与特性

前言 本篇是介绍部分TCP的特性&#xff0c;了解TCP提高传输速率的机制&#xff1b;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录前言1. 滑动窗口2. 流量控制3.拥塞控制4.延时应答5. 捎带应答6. 面向字节流7. 异常…

spring bean

图灵课堂学习笔记 1. BeanFactory与ApplicationContext的关系 p56 ApplicationContext在BeanFactory基础上对功能进行了扩展&#xff0c;例如&#xff1a;监听功能、国际化功能等。BeanFactory的API更偏向底层&#xff0c;ApplicationContext的API大多数是对这些底层API的封…

python带你制作可以随机的自答题程序

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 目录前言环境使用:模块使用:程序实现思路: <模板> 获取题库一. 获取题库 --> 问题答案二. 进行自动答题操作代码展示题库采集自动答题尾语 &#x1f49d;环境使用: 解释器版本 >>> python 3.8 代码编辑器…

数学基础|线性代数回顾

因为学机器学习的时候发现自己线性代数忘光光了&#xff08;悲&#x1f613;&#xff0c;本篇捞一捞当年学线性代数看哔哩哔哩宋浩老师补充记的潦草笔记。 目录 &#x1f4da;线性代数知识点 &#x1f407;向量 &#x1f955;向量的线性组合 &#x1f955;线性相关无关的性…

JVM 工作原理和即时编译(JIT)

目录 1、什么是虚拟机&#xff1f; 2、JVM 虚拟机简介 3、JVM 的工作原理 4、什么是即时编译&#xff08;JIT&#xff09;&#xff1f; 5、解释型语言和编译型语言的区别 6、为什么说 Java 是一种半编译半解释的语言&#xff1f; 1、什么是虚拟机&#xff1f; 虚拟机是一…

直播美颜技术的演进及其应用:直播美颜SDK详解

直播美颜技术的应用&#xff0c;为直播开辟了新的业态&#xff0c;从最初简单的美颜滤镜&#xff0c;到现在的直播美颜SDK&#xff0c;其技术演进历程也是一步步走来。 一、直播美颜技术的演进 1、简单美颜滤镜 最初的直播美颜技术&#xff0c;就是通过简单的美颜滤镜来实现…

python内存回收gc模块

目录1. python 垃圾回收机制标记-清除的回收机制分代回收2. gc 模块参考资料对已经销毁的对象&#xff0c;Python不会自动释放其占据的内存空间。为了能够充分地利用分配的内存&#xff0c;避免程序跑到一半停止&#xff0c;要时不时地进行内存回收&#xff0c;这时候gc&#x…

超详细——Python中 pip 常用命令

人生苦短&#xff0c;我学Python 相信对于大多数熟悉Python的人来说&#xff0c;一定都听说并且使用过pip这个工具&#xff0c;但是对它的了解可能还不一定是非常的透彻&#xff0c;今天小编就来为大家介绍10个使用pip的小技巧&#xff0c;相信对大家以后管理和使用Python当中…

每天一道大厂SQL题【Day19】华泰证券真题实战(一)

每天一道大厂SQL题【Day19】华泰证券真题实战(一) 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典SQL题&…

CSS中相对定位与绝对定位的区别及作用

CSS中相对定位与绝对定位的区别及作用场景复现核心干货相对定位绝对定位子绝父相&#x1f525;&#x1f525;定位总结绝对定位与相对定位的区别场景复现 在学习前端开发的过程中&#xff0c;熟练掌握页面布局和定位是非常重要的&#xff0c;因此近期计划出一个专栏&#xff0c…

【问题、AI解答】mongodb中使用$lookup进行连表查询使用_id作为localField出现查询结果字段为空的情况

描述&#xff1a; db.acticles.aggregate([ {$lookup&#xff1a;{from:"acticlesMaptags",localField:"_id",foreignField:"acticleid",as:"tagid"} } ])acticlesMaptags集合中的acticleid字段存在与acticles集合中的_id相匹配的数据…

1.15 从0开始学习Unity游戏开发--游戏UI

上一章中&#xff0c;我们剩下最后一个任务&#xff0c;需要支持鼠标控制准心来进行设计&#xff0c;那么准心本质上就是一个始终呈现在屏幕上的一个图片&#xff0c;你当然可以用一个3D物体来制作&#xff0c;之前讲解渲染概念的时候也提到过&#xff0c;我们的屏幕就是相机的…

传智健康_day3

本章对检查组管理进行开发 一.新增检查组 1.修改新增弹层可见属性&#xff0c;添加重置表单功能 2.动态刷新检查组包含的检查项信息 <tr v-for"c in tableData"> 使用for循环来遍历查询出tableData中的数据 tableData是一个数组对象&#xff0c;定义在VUE…

hadoop分布式安装

文章目录1. 将安装包hadoop-3.1.3.tar.gz上次至linux中2. 进行解压操作3. 修改目录名称4. 配置环境变量5. 远程传输5.1 scp远程传输6. 免密登录7. 集群规划8. 修改自定义配置文件8.1 hadoop-env.sh8.2 core-site.xml8.3 hdfs-site.xml8.4 mapred-site.xml8.5 yarn-site.xml8.6 …