黑盒测试用例设计(c语言)

 

 

一.实验内容:

  1. 三角形问题的等价类测试和边界值分析测试
  2. NextDate()函数决策表法测试

二.实验要求:给出测试用例和测试结果

三.实验步骤及结果:

 3.1(三角形)实验代码(c)


#include<stdio.h>
#include<stdlib.h>

int a=0,b=0,c=0;
void shuru();
void panduan(int a1,int b1,int c1);
int main()
{
	char se;
	shuru();
	panduan(a,b,c);
	while(1)
	{
		printf("是否要继续y or n :");
		scanf("%c",&se);
		if(se=='\n') scanf("%c",&se);
		switch(se)
		{
	    case 'y':
	    shuru();
	    panduan(a,b,c);
		break;
		case 'n':
		return 0;
		}
	}
	return 0;
}
void shuru()
{
    printf("Please enter 三角形三边 (a,b,c)\n");
	scanf("%d,%d,%d",&a,&b,&c);
	while((a<1||a>100)||(b<1||b>100)||(c<1||c>100))
	{
		if(a==0||b==0||c==0) printf("边长不能为0\n");
		else if(a<0||b<0||c<0) printf("边长不能为负\n");
		else printf("Please enter 1-100之间的整数\n");
		scanf("%d,%d,%d",&a,&b,&c);
	}
}
void panduan(int a1,int b1,int c1)
{
	int m1=a1+b1;
	int m2=a1+c1;
	int m3=b1+c1;
	if(a1>=m3||b1>=m2||c1>=m1) printf("非三角形\n");
	else if(a1!=b1&&a1!=c1&&b1!=c1) printf("一般三角形\n");
	else if((a1==b1&&b1!=c1)||(a1==c1&&a1!=b1)||(c1==b1&&a1!=c1)) printf("等腰三角形\n");
	else if(a1==b1&&b1==c1) printf("等边三角形\n");
}

3.2测试用例和结果(反映在图中)

 测试用例                输入a,b,c              输出

     1                     7,8,9                一般三角形

     2                     1,1,6                 非三角形

     3                     5,5,9                 等腰三角形

     4                     4,4,4                 等边三角形

     5                     0,1,0                 边长不能为0

     6                     4,-1,6                边长不能为负

     7                     101,101,101           请输入1-100之间的整数

测试图形结果:

3.3(NextDate())实验代码(c) 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
	int year;
	int month,day;
	int leap;//标志是闰年还是平年,为1时是闰年,为2时是平年
	time_t t;//本来以下是用来判断格式输入是否正确的,但是结果不理想
	struct tm stm;//A
	while(1){//循环测试
	printf("请输入年(yyyy)/月(mm)/日(dd)\n");
	scanf("%d/%d/%d",&stm.tm_year,&stm.tm_mon,&stm.tm_mday);//B
	year=stm.tm_year;month=stm.tm_mon;day=stm.tm_mday;//C
	t=mktime(&stm);//D
	printf("*****输出结果*****\n");
	if(t!=-1)//E有问题,不管输入格式是什么,t永远是-1
	{
		printf("输入的日期时间格式出错!\n");
		continue;
	}
	if(year%4==0)//年份判断
	{
		if(year%100==0)
		{
			if(year%400==0)
			{
				leap=1;
				printf("%ld年%d月%d日是闰年\n",year,month,day);
			}
			else
			{
				leap=2;
				printf("%ld年%d月%d日是平年\n",year,month,day);
			}
		}
		else
		{
			leap=1;
			printf("%ld年%d月%d日是闰年\n",year,month,day);
		}
	}
	else
	{
		leap=2;
		printf("%ld年%d月%d日是平年\n",year,month,day);
	}
	if(month==2)
	{
		if(leap==1)
		{
			printf("该月有29天\n");
			if(day>29)
			{
				printf("对不起!您输入的日期超出该月范围\n");
				continue;
			}
			else if(day==29)
			{
				month=month+1;
				day=1;
			}
			else day=day+1;
		}
		if(leap==2)
		{
			printf("该月有28天\n");
			if(day>28)
			{
				printf("对不起!您输入的日期超出该月范围\n");
				continue;
			}
			else if(day==28)
			{
				month=month+1;
				day=1;
			}
			else day=day+1;
		}
	}
	else if(month==4||month==6||month==9||month==11)
	{
		printf("该月有30天\n");
		if(day>30)
		{
			printf("对不起!您输入的日期超出该月范围\n");
			continue;
		}
		else if(day==30)
			{
				month=month+1;
				day=1;
			}
		else day=day+1;
	}
	else
	{
		printf("该月有31天\n");
		if(day>31)
		{
			printf("对不起!超出该月范围\n");
			continue;
		}
		else if(day==31)
		{
			if(month==12&&day==31)
			{
				year=year+1;
				month=1;
				day=1;
			}
			else 
			{
				month=month+1;
				day=1;
			}
		}
		else day=day+1;
	}
	printf("NEXT日期:%ld年%d月%d日\n",year,month,day);
	}
	return 0;
}

3.4测试用例和结果(反映在图中)

 

决策表测试用例   month      day      year        预期输出

     Test1~3       8         20      2000        2001/8/21

     Test4         8          31      2000        2001/9/1

     Test5         8          32      2001        对不起!超出该月范围

     Test6~9       1          16      2001        2001/1/17

         Test10        1          31      2013       2013/2/1

     Test 11~14    12          31      2010       2011/1/1

     Test15        12         31       2002      2003/1/1

     Test16        2          29       2004       2004/3/1

     Test17        2          28       2001       2001/3/1

     Test18        2          30       2002      对不起!超出该月范围

测试界面效果:

请输入年(yyyy)/月(mm)/日(dd)
2000/8/20
*****输出结果*****
2000年8月20日是闰年
该月有31天
NEXT日期:2000年8月21日
请输入年(yyyy)/月(mm)/日(dd)
2000/8/31
*****输出结果*****
2000年8月31日是闰年
该月有31天
NEXT日期:2000年9月1日
请输入年(yyyy)/月(mm)/日(dd)
2000/8/32
*****输出结果*****
2000年8月32日是闰年
该月有31天
对不起!超出该月范围
请输入年(yyyy)/月(mm)/日(dd)
2001/8/32
*****输出结果*****
2001年8月32日是平年
该月有31天
对不起!超出该月范围
请输入年(yyyy)/月(mm)/日(dd)
2001/1/16
*****输出结果*****
2001年1月16日是平年
该月有31天
NEXT日期:2001年1月17日
请输入年(yyyy)/月(mm)/日(dd)
2013/1/31
*****输出结果*****
2013年1月31日是平年
该月有31天
NEXT日期:2013年2月1日
请输入年(yyyy)/月(mm)/日(dd)
2012/12/31
*****输出结果*****
2012年12月31日是闰年
该月有31天
NEXT日期:2013年1月1日
请输入年(yyyy)/月(mm)/日(dd)
2010/12/31
*****输出结果*****
2010年12月31日是平年
该月有31天
NEXT日期:2011年1月1日
请输入年(yyyy)/月(mm)/日(dd)
2002/12/31
*****输出结果*****
2002年12月31日是平年
该月有31天
NEXT日期:2003年1月1日
请输入年(yyyy)/月(mm)/日(dd)
2004/2/29
*****输出结果*****
2004年2月29日是闰年
该月有29天
NEXT日期:2004年3月1日
请输入年(yyyy)/月(mm)/日(dd)
2001/2/28
*****输出结果*****
2001年2月28日是平年
该月有28天
NEXT日期:2001年3月1日
请输入年(yyyy)/月(mm)/日(dd)
2000/2/30
*****输出结果*****
2000年2月30日是闰年
该月有29天
对不起!您输入的日期超出该月范围
请输入年(yyyy)/月(mm)/日(dd)

猜你喜欢

转载自blog.csdn.net/YeziTong/article/details/84440839