软件测试决策表.docx
《软件测试决策表.docx》由会员分享,可在线阅读,更多相关《软件测试决策表.docx(14页珍藏版)》请在冰豆网上搜索。
软件测试决策表
软件测试
实验报告
题目:
决策表法得使用
学号:
姓名:
教师:
东南大学成贤学院电子与计算机工程学院
2017年9月30日
方案30%
设计30%
文字表述20%
分析与总结20%
总分
实验题目
1、实验内容
NextDate函数包含三个变量:
month(月份)、day(口期)与veai(年),函数得输出为输入口期前一天得日期。
例如,输入为2007年9月9日,则函数得输出为2007年9月10日。
要求输入变量month、day与year均为整数值,并且满足下列条件:
(1)lWmonthW12
(2)lWdayW31
(3)1912J
2、实验目得与要求
分别输入测试用例,判断期塑输出与实际输出就是否相等
3.实验环戋
操作系统WIN10测试工具VS2010测试语言C++语言
4、设计思路分析(包括需求分析、整体设计思路、概要设计)
需求分析:
此函数得主要特点就是输入变量之间得逻辑关系比较复杂。
复杂性得来源有两个:
一个就是输入域得复杂性,另一个就是指闰年得规则。
例如变量year与变量month取不同得值,对应得变量day会有不同得取值范围,day值得范围可能就是1〜30或1〜31,也可能就是1〜28或1〜29。
整体设计思路:
NextDate函数中包含了定义域各个变量之间得依赖问题。
等价类划分法与边界值分析法只能“独立地”选取各个输入值,不能体现出多个变屋得依赖关系。
决策表法则就是根据变屋间得逻辑依赖关系设计测试输入数据,排除不可能得数据组合,很好地解决了定义域得依赖问题。
5、详细设计
NextDate函数求解给定某个口期得卞一个口期得可能操作(动作桩)如下:
变量day加1操作:
变量day复位操作:
变量month加1操作:
变量month复位操作:
变量year加1操作。
根据上述动作桩发现NextDate函数得求解关键就是口与月得问题,通常可以在下面等价类
(条件桩)得基础上建立决策表:
Ml={month:
montli有30天}
M2={montli:
montli有31天,12月除外}
M3={month:
month就是12月}
M4={month:
montli就是2月}
Dl={dav:
lWdayW27}
D2={dav:
day=28}
D3={dav:
day=29}
D4={dav:
day=30}
D5={dav:
day=31}
Y1={year:
year就是闰年}
Y2={vear:
year不就是闰年}
决策表共有22条规则:
第1~5条规则解决有30天得月份;
第6~10条规则解决有31天得月份(除12月份以外);
第11-15条规则解决12月份;
第16〜22条规则解决2月份与闰年得问题。
不可能规则也在决策表中列出,比如第5条规则中在有30天得月份中也考虑了31口。
规则选项
1
2
3
4
5
6
7
8
9
10
11
条件:
C1:
month
在
Ml
Ml
Ml
Ml
Ml
M2
M2
M2
M2
M2
M3
C2:
day在
D1
D2
D3
D4
D5
DI
D2
D3
D4
D5
DI
C3:
year在
动作:
A1:
不可
能
J
7
A2:
day
加1
1
V
7
J
7
寸
7
J
7
7
7
A3:
day复位
寸
J
A4:
month
加1
寸
J
7
A5:
month
复位
规则
选项
12
13
14
15
16
17
18
19
20
21
22
条件:
C1:
month
在
M3
M3
M3
M3
M4
M4
M4
M4
M4
M4
M4
C2:
day在
D2
D3
D4
D5
D1
D2
D2
D3
D3
D4
D5
C3:
year在
—
—
—
—
—
Y1
Y2
Y1
Y2
—
—
动作:
A1:
不可能
1
V
寸
1y
A2:
day加
1
7
1
V
寸
1
V
1
7
A3:
day复位
7
1
V
A4:
month
加1
7
1
V
A5:
month复位
7
A6:
year加
1
1
V
表2简化得NextDate函数决策表:
条件:
C1:
mon
th在
M
1
M
1
M
1
M
2
M
2
M
3
M
3
M
4
M
4
M
4
M
4
M
4
M4
C2:
day在
D1
D2
D3
D
4
D
5
D1
5
D2
5
D3
5
D4
D
5
D1
D2
D3
D4
D
5
D
1
D
2
D
2
D
3
D
3
D4Q
5
C3:
year在
Y
1
Y
2
Y
1
Y
2
—
动作:
A1:
不可能
J
7
1
7
1
V
A2:
day
加1
7
1
7
7
1
7
V
A3:
day复位
1
7
寸
A4:
mon
th加1
1
7
1
7
7
1
7
A5:
month复位
1
7
A6:
year
加1
1
7
6、实验结果与分析
表3NextDate函数得测试用例组
测试用例
Month
Day
Year
预期输出
实际输出
Testcase1-3
5
15
2015
2015年5月16
日
[青输入年、月、日;
2015515
2015/5/16
Testcase4
5
30
2015
2015年5月31
日
请输入年、月、日;
2015530
2015/5/31
Testcase5
5
31
2015
2015年6月1
日
[青输入年、月、日;
2015531
2015/6/1
Testcase6-9
4
15
2015
2015年4月16
日
[青输入年、月、日;
2015415
2015Z4/16
Testcase10
4
31
2015
2015年5月1
日
2015430
2015/5/1
Testcasell-14
12
15
2015
2015年12月16
日
[青输入年"月、日,
20151215
2015/12Z16
Testcase15
12
31
2015
2016年1月1
日
请输入年、月、日:
20151231
2016/1/1
Testcase16
2
15
2015
2015年2月16
日
[青输入年、月、日;
2015215
2015/2/16
Testcase17
2
28
2016
2016年2月29
日
请输入年、月、日;
2016228
2016/2/29
Testcase18
2
28
2015
2015年3月1
日
幘输入年、月、日:
2015228
2015/3/1
Testcase19
2
29
2016
2016年3月1
日
请输入年、月、日,
2016229
2016/3/1
Testcase20
2
29
2015
不可能!
请输入年、月、日;
2015229
不可能!
Testcase21-22
2
30
2015
不可能!
常献年、月、日:
2015230
凤可能!
7、实验体会与建议
程序得实际输出结果与预期结果不符合,但基本满足实验问题需求,基于决策表得测试对于某些应用程序(例如NextDate函数)很有效,但就是对另外一些简单得应用程序就不值得使用决策表了。
附录代码
#includeHstdafx>hH
boolNextDate(intijntjjntk)
{
1坦>=1960&&i<=2050&&j>=1&&j<=12&&k>=l&&k<=31)
{
if(k>=l&&k<=27)
{屮;}
else
{
switch(k)
{
case31:
{
if(j==l|[j==3|[j==5|[j==7|[j==8|[j==10)
{
k=l;
J++;
}
elseif(j=12)
{
k=l;
J=l;
i++;
}
else
{returnfalse;}
break;
}
case30:
if(j=4|[j==6|[j==9|[j==l1)
k=l;
J++;
}
elseif(j=2)
{leturnfalse;}
else
{k++;}
break:
}
case29:
{
if(j==2&&((i%4=0&&i%100!
=0)||i%400==0))
{
k=l;
J++;
}
elseif(j!
=2)
{k++;}
else
{leturnfalse;}
break:
}
case28:
{
if(j—2&&(a%4=0&&i%100!
=0)||i%400==0))
{
k++;
}
elseif(j!
=2)
{k++;}
else
k=l;
J++;
}break;
returnfalse;
cout«i«,7H<}
mtmam()
mtday.month.year;
while(l)
cout«”请输入年、月、口:
H«endl;cin»year»month»day;
NextDate(yeai;month,day);if(NextDate(yeai;month,day)==false){cout«”不可能!
”《endl;}
}
system(HpauseH);
return0;