软件测试决策表.docx

上传人:b****9 文档编号:25304543 上传时间:2023-06-07 格式:DOCX 页数:12 大小:33.89KB
下载 相关 举报
软件测试决策表.docx_第1页
第1页 / 共12页
软件测试决策表.docx_第2页
第2页 / 共12页
软件测试决策表.docx_第3页
第3页 / 共12页
软件测试决策表.docx_第4页
第4页 / 共12页
软件测试决策表.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

软件测试决策表.docx

《软件测试决策表.docx》由会员分享,可在线阅读,更多相关《软件测试决策表.docx(12页珍藏版)》请在冰豆网上搜索。

软件测试决策表.docx

软件测试决策表

软件测试

实验报告

 

题目:

决策表法的使用

学号:

姓名:

教师:

 

东南大学成贤学院电子与计算机工程学院

2017年9月30日

方案30%

设计30%

文字表述20%

分析与总结20%

总分

 

实验题目

1、实验内容

NextDate函数包含三个变量:

month(月份)、day(日期)和year(年),函数的输出为输入日期前一天的日期。

例如,输入为2007年9月9日,则函数的输出为2007年9月10日。

要求输入变量month、day和year均为整数值,并且满足下列条件:

(1)1≤month≤12

(2)1≤day≤31

(3)1912≤year≤2050 

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函数的求解关键是日和月的问题,通常可以在下面等价类(条件桩)的基础上建立决策表:

M1={month:

month有30天}

M2={month:

month有31天,12月除外}

M3={month:

month是12月}

M4={month:

month是2月}

D1={day:

1≤day≤27}

D2={day:

day=28}

D3={day:

day=29}

D4={day:

day=30}

D5={day:

day=31}

Y1={year:

year是闰年}

Y2={year:

year不是闰年}

决策表共有22条规则:

第1~5条规则解决有30天的月份;

第6~10条规则解决有31天的月份(除12月份以外);

第11~15条规则解决12月份;

第16~22条规则解决2月份和闰年的问题。

不可能规则也在决策表中列出,比如第5条规则中在有30天的月份中也考虑了31日。

表1输入变量间存在大量逻辑关系的NextDate函数决策表

规则

选项

1

2

3

4

5

6

7

8

9

10

11

条件:

C1:

 month在

M1

M1

M1

M1

M1

M2

M2

M2

M2

M2

M3

C2:

 day在

D1

D2

D3

D4

D5

D1

D2

D3

D4

D5

D1

C3:

 year在

动作:

A1:

 不可能

A2:

 day加1

A3:

 day复位

A4:

 month加1

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:

 不可能

A2:

 day加1

A3:

 day复位

A4:

 month加1

A5:

 month复位

A6:

year加1

表2简化的NextDate函数决策表:

     选项

规则

1,

2,

3

4

5

6,

7,

8,

9

10

11,

12,

13,

14

15

16

17

18

19

20

21,

22

条件:

C1:

 month在

M1

M1

M1

M2

M2

M3

M3

M4

M4

M4

M4

M4

M4

C2:

 day在

D1,

D2,

D3

D4

D5

D1,

D2,

D3,

D4

D5

D1,

D2,

D3,

D4

D5

D1

D2

D2

D3

D3

D4,D5

C3:

 year在

Y1

Y2

Y1

Y2

动作:

A1:

 不可能

A2:

 day加1

A3:

 day复位

A4:

 month加1

A5:

 month复位

A6:

year加1

6、实验结果与分析

表3NextDate函数的测试用例组

测试用例

Month

Day

Year

预期输出

实际输出

Testcase1-3

5

15

2015

2015年5月16日

Testcase4

5

30

2015

2015年5月31日

Testcase5

5

31

2015

2015年6月1日

Testcase6-9

4

15

2015

2015年4月16日

Testcase10

4

31

2015

2015年5月1日

Testcase11-14

12

15

2015

2015年12月16日

Testcase15

12

31

2015

2016年1月1日

Testcase16

2

15

2015

2015年2月16日

Testcase17

2

28

2016

2016年2月29日

Testcase18

2

28

2015

2015年3月1日

Testcase19

2

29

2016

2016年3月1日

Testcase20

2

29

2015

不可能!

Testcase21-22

2

30

2015

不可能!

7、实验体会与建议

程序的实际输出结果与预期结果不符合,但基本满足实验问题需求,基于决策表的测试对于某些应用程序(例如NextDate函数)很有效,但是对另外一些简单的应用程序就不值得使用决策表了。

附录代码

#include"stdafx.h"

boolNextDate(inti,intj,intk)

{

if(i>=1960&&i<=2050&&j>=1&&j<=12&&k>=1&&k<=31)

{

if(k>=1&&k<=27)

{k++;}

else

{

switch(k)

{

case31:

{

if(j==1||j==3||j==5||j==7||j==8||j==10)

{

k=1;

j++;

}

elseif(j==12)

{

k=1;

j=1;

i++;

}

else

{returnfalse;}

break;

}

case30:

{

if(j==4||j==6||j==9||j==11)

{

k=1;

j++;

}

elseif(j==2)

{returnfalse;}

else

{k++;}

break;

}

case29:

{

if(j==2&&((i%4==0&&i%100!

=0)||i%400==0))

{

k=1;

j++;

}

elseif(j!

=2)

{k++;}

else

{returnfalse;}

break;

}

case28:

{

if(j==2&&((i%4==0&&i%100!

=0)||i%400==0))

{

k++;

}

elseif(j!

=2)

{k++;}

else

{

k=1;

j++;

}

break;

}

}

}

}

else

{

returnfalse;

}

cout<

}

intmain()

{

intday,month,year;

while

(1)

{

cout<<"请输入年、月、日:

"<

cin>>year>>month>>day;

NextDate(year,month,day);

if(NextDate(year,month,day)==false)

{cout<<"不可能!

"<

}

system("pause");

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1