一、实验目的
1、掌握决策表的概念。
2、掌握决策表测试用例设计法。
二、实验任务
以下三个任务、至少完成两个
1、对NextDate问题运用决策表法设计测试用例,并执行测试,撰写实验报告。
NextDate (int month, int day, int year)函数规定:输入三个整数:month、day和year,函数的输出为输入日期后一天的日期。例如,输入为2006年3月7日,则函数的输出为2006年3月8日,year满足1920≤year≤2050。
实验步骤:
- 构造决策表
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
1920≤year≤2050 | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y |
是闰年2月 | Y | Y | N | N | N | N | N | N | Y | N | N | N | N | |
0<month<13 | Y | Y | Y | Y | Y | Y | Y | Y | N | N | Y | Y | Y | |
是大月(除12月 | Y | Y | Y | |||||||||||
是小月 | Y | Y | Y | |||||||||||
是12月 | Y | Y | Y | |||||||||||
0<day<32 | Y | Y | Y | Y | N | N | ||||||||
0<day<31 | Y | Y | N | |||||||||||
0<day<30 | Y | Y | ||||||||||||
0<day<29 | ||||||||||||||
day=28 | ||||||||||||||
day=29 | Y | N | ||||||||||||
day=30 | Y | N | ||||||||||||
day=31 | Y | N | Y | N | ||||||||||
Error | √ | √ | √ | √ | √ | √ | ||||||||
day+1 | √ | √ | √ | √ | ||||||||||
month+1,day=1 | √ | √ | √ | |||||||||||
year+1,month=1, day=1 | √ |
- 根据决策表设计测试用例,得到测试用例表(测试用例表格式同实验1)。
测试用例ID | 年 | 月 | 日 | 预期输出 |
1 | 1881 | 11 | 11 | error |
2 | 2055 | 1 | 1 | error |
3 | 1999 | 1 | 1 | 1999年1月2日 |
4 | 2001 | 13 | 1 | error |
5 | 2024 | 12 | 33 | error |
6 | 2008 | 12 | 31 | 2009年1月1日 |
7 | 2030 | 5 | 20 | 2030年5月21日 |
8 | 2022 | 8 | 31 | 2022年9月1日 |
9 | 2020 | 2 | 30 | error |
10 | 2020 | 2 | 12 | 2020年2月13 |
11 | 2024 | 4 | 31 | error |
3)执行测试,填写软件缺陷报告(软件缺陷报告格式同实验2)。
测试模块: | NextDate | 开 发 者: | |
测 试 员: | 测试日期: | 2024.4.10 | |
软件缺陷列表 | |||
缺陷ID | 缺陷详细信息 | ||
BUG1 | 无 | ||
BUG2 | 无 | ||
BUG3 | 无 | ||
BUG4 | 无 |
测试过程:
这里只对两组测试用例进行了测试,如果有需要的可以根据以下提供的代码对其他的测试用例进行测试。
测试代码:
import java.util.Scanner;
public class NextDate {
public static void main(String[] args) {
// TODO Auto-generated method stub
int year;
int month;
int day;
Scanner in = new Scanner(System.in);
System.out.println("year:");
year = in.nextInt();
while(!(year>=1920&&year<=2050))
{
System.out.println("error");
return;
}
System.out.println("month:");
month = in.nextInt();
while(month>12||month<1)
{
System.out.println("error");
return;
}
System.out.println("day:");
day = in.nextInt();
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
while(day>31||day<1)
{
System.out.println("error");
return;
}
}
if(month==4||month==6||month==9||month==11)
{
while(day>30||day<1)
{
System.out.println("error");
return;
}
}
if((year%4==0&&year%100!=0)||(year%400==0))
{
if(month==2)
{
if(day>29)
{
System.out.println("error");
return;
}
else
{
if(day==29)
{
day=1;
}
else
{
day++;
}
}
}
}
else
{
if(month==2)
{
if(day>28)
{
System.out.println("error");
return;
}
else
{
if(day==28)
{
day=1;
}
else
{
day++;
}
}
}
}
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
if(day==31)
{
month++;
day=1;
System.out.println(year+"年 "+month+"月 "+day+"日");
break;
}
else
{
day++;
System.out.println(year+"年 "+month+"月 "+day+"日");
break;
}
case 2:
if(day==1)
{
month++;
System.out.println(year+"年 "+month+"月 "+day+"日");
break;
}
else
{
System.out.println(year+"年 "+month+"月 "+day+"日");
break;
}
case 4:
case 6:
case 9:
case 11:
if(day==30)
{
month++;
day=1;
System.out.println(year+"年 "+month+"月 "+day+"日");
break;
}
else
{
day++;
System.out.println(year+"年 "+month+"月 "+day+"日");
break;
}
case 12:
if(day==31)
{
year++;
month=1;
day=1;
System.out.println(year+"年 "+month+"月 "+day+"日");
break;
}
else
{
day++;
System.out.println(year+"年 "+month+"月 "+day+"日");
break;
}
}
}
}
3、对三角问题运用决策表法设计测试用例,并执行测试,撰写实验报告。
实验步骤:
- 构造决策表
序号 | 1 | 2 | 3 | 4 | 5 |
a,b,c>0 | Y | Y | Y | Y | N |
a+b>c | Y | Y | Y | N | |
a=b=c | Y | ||||
a=c | Y | ||||
不是三角形 | √ | √ | |||
普通三角形 | √ | ||||
等边三角形 | √ | ||||
等腰三角形 | √ |
- 根据决策表设计测试用例,得到测试用例表(测试用例表格式同实验1)。
测试 用例ID | a | b | c | 预期输出 |
1 | -1 | 3 | 2 | 输入有误 |
2 | 15 | 215 | 15 | 输入有误 |
3 | 22 | 22 | 22 | 等边三角形 |
4 | 31 | 40 | 19 | 普通三角形 |
5 | 99 | 121 | 200 | 普通三角形 |
6 | 57 | 57 | 42 | 等腰三角形 |
7 | 2 | 2 | 3 | 等腰三角形 |
测试过程:
这里只对一组测试用例进行了测试,如果有需要的可以根据以下提供的代码对其他的测试用例进行测试。
3)执行测试,填写软件缺陷报告(软件缺陷报告格式同实验2)。
测试模块: | 三角形 | 开 发 者: | |
测 试 员: | 测试日期: | 2024.4.10 | |
软件缺陷列表 | |||
缺陷ID | 缺陷详细信息 | ||
BUG1 | 当输入57,57,42时应显示等腰三角形,但显示了普通三角形 | ||
BUG2 | 无 | ||
BUG3 | 无 | ||
BUG4 | 无 |
测试代码:
#include <stdio.h>
void triangle( int a, int b, int c ); // 函数声明 --- 作用域
int main(void)
{
int x,y,z;
printf("please input (length):\n");
printf("a:");
scanf("%d",&x);
printf("b:");
scanf("%d",&y);
printf("c:");
scanf("%d",&z);
triangle( x,y,z );//判断三角形类型
}
void triangle( int a, int b, int c )
{
int temp;
if( a > b )
{//如果a比较b大,就相互转换
temp = a;
a = b;
b = temp;
}
if( a > c )
{//如果a比较c大,就相互调换
temp = a;
a = c;
c = temp;
}
if( b > c )
{//如果b比较c大,就相互调换
temp = b;
b = c;
c = temp;
}
if( a<0||b<0||c<0||a>200||b>200||c>200 )
{
printf("输入有误\n");
return ;
}
else
{
if( a+b <= c )
{
printf("不是三角形!!\n");
return ;
}
else
{
if( a == b )
{
if( a != c )
printf("等腰三角\n");
else
printf("等边三角\n");
}
else
{
printf("普通三角形\n");
}
}
}
}