1. 程式人生 > >黑盒測試用例設計(c語言)

黑盒測試用例設計(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)