基于规格说明的测试技术软件动态测试.docx

上传人:b****8 文档编号:9141887 上传时间:2023-05-17 格式:DOCX 页数:27 大小:62.11KB
下载 相关 举报
基于规格说明的测试技术软件动态测试.docx_第1页
第1页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第2页
第2页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第3页
第3页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第4页
第4页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第5页
第5页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第6页
第6页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第7页
第7页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第8页
第8页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第9页
第9页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第10页
第10页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第11页
第11页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第12页
第12页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第13页
第13页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第14页
第14页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第15页
第15页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第16页
第16页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第17页
第17页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第18页
第18页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第19页
第19页 / 共27页
基于规格说明的测试技术软件动态测试.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于规格说明的测试技术软件动态测试.docx

《基于规格说明的测试技术软件动态测试.docx》由会员分享,可在线阅读,更多相关《基于规格说明的测试技术软件动态测试.docx(27页珍藏版)》请在冰点文库上搜索。

基于规格说明的测试技术软件动态测试.docx

基于规格说明的测试技术软件动态测试

辽宁工程技术大学上机实验报告

课程名称

软件测试与评估

实验题目

基于规格说明的测试技术

实验

目的

1.了解软件动态测试的相关知识。

2.能根据案例做出相应的图表。

3.掌握软件动态测试的基本方法。

4.针对案例,能够运用动态测试技术中的具体方法进行测试用例的设计。

实验

准备

1.计算机一台,有c与c++程序设计学习与实验系统的软件。

2.了解至少一门程序设计语言,并能熟练应用。

能够编写并运行有关实验的相关代码。

3.了解等价类划分与边界值分析的方法并能应用方法分析程序。

4.了解因果图和决策表的方法并能应用方法分析程序。

实验

进度

本次共有1个练习,完成1个。

实验

内容

1.根据NextDate函数问题进行编程,有三个变量mouth(月份),day(日期),year(年)。

函数的输出为输入日期后一天的日期。

要求输入变量month,day和year均为整数值。

并且满足下列条件:

1≤month≤12,1≤day≤31,1912≤year≤2050。

(此函数的主要特点是输入变量之间的逻辑关系比较复杂。

复杂性的来源有两个:

一个是输入域的复杂性,另一个是指闰年的规则。

2.对NextDate函数进行分析。

3.选用基于规格说明的测试技术中适合的方法为NextDate函数问题设计测试用例。

 

实验

分析

 

一.实验步骤

1.打开c与c++程序设计学习与实验系统平台,编译有关NextDate函数问题的相关程序。

2.对程序进行等价类测试。

3.对程序进行边界值分析。

4.对程序进行决策表测试。

5.进行用例设计。

选择上述设计中的一种方法进行测试用例,包括等价类、边界值、等价类边界值结合法、因果图和决策表法。

给出预定输入和输出,以及实际输出结果。

6.总结归纳。

二.程序分析

1.程序代码

#include

usingnamespacestd;

voidNextDate(intyear,intmonth,intday);

voidmain()

{

intyear=0,month=0,day=0;

NextDate(year,month,day);}

voidNextDate(intyear,intmonth,intday)

{

cout<<"请输入年份:

"<

cin>>year;

while(!

(year>=1912&&year<=2050))

{

cout<<"年份超过界限,请重新输入"<

cin>>year;

}

cout<<"请输入月份:

"<

cin>>month;

while(month>12||month<1)

{

cout<<"月份输入有误,请重新输入"<

cin>>month;

}

cout<<"请输入日期:

"<

cin>>day;

while(day>31||day<1)

{cout<<"日期输入有误,请重新输入"<

cin>>day;}

while(month==4&&day==31||month==6&&day==31||month==9&&day==31||month==11&&day==31)

{cout<<"小月没有31号"<

cin>>day;

}if((year%4==0&&year%100!

=0)||(year%400==0))//检查闰年;

{inti=0;

i=day-29;

while(month==2&&i>0)

{cout<<"本月是闰月,请在1-29之间从新输入日期"<

cin>>day;

}

if(month==2&&day==29)

{month=3;

day=1;

}

elseday++;

}

elseday++;

switch(month)

{

case1:

case3:

case5:

case7:

case8:

case10:

if(day==32)

{month++;

day=1;

cout<<"明天是:

"<

}

break;

case2:

if(day==29)

{month=3;

day=1;

cout<<"明天是:

"<

}

break;

case4:

case6:

case9:

case11:

if(day==31)

{month++;

day=1;

cout<<"明天是:

"<

break;

case12:

if(day==32)

{year++;

month=1;

day=1;

cout<<"明天是:

"<

}

break;

}

cout<<"明天是:

"<

}

2.分析

NextDate函数是输入日期,年,月份,函数根据输入的数据,输出输入日期后一天的日期。

具体为如果输入日期不是当月最后一天,则把day变量的值加1;如果输入日期是1~11月份中某月的最后一天,则把day变量的值复位为1,month变量的值加1;如果输入日期是12月的最后一天,则day变量和month变量的值都复位为1,year变量的值加1。

关于day的变量值:

如果是1,3,5,7,8,10,12月份,day变量值为31;如果是4,6,9,11月份,day变量值为30;如果是闰年的2月,day变量值为29;如果是非闰年的2月,day变量值为28。

三.等价类测试分析

1.划分简单等价类

(1)有效等价类:

M1={month:

1≤month≤12}

D1={day:

1≤day≤31}

Y1={year:

1912≤month≤2050}

(2)无效等价类

M2={month:

month<1}

M3={month:

month>12}

D2={day:

day<1}

D3={day:

day>31}

Y2={year:

year<1912}

Y3={year:

month>2050}

(3)测试用例

根据等价类得到等价类测试用例,如表1

表1普通等价类测试用例

测试

用例

输入

期望

输出

month

day

year

1

5

5

2000

2000年5月6日

2

0

5

2000

 month不在1~12中

3

13

5

2000

 month不在1~12中

4

5

0

2000

day不在1~31中

5

5

32

2000

day不在1~31中

6

5

5

1911

 year不在1912~2050中

7

5

5

2051

 year不在1912~2050中

2.划分改进等价类

在简单等价类划分测试NextDate函数中,没有考虑2月份的天数问题,也没有考虑闰年的问题,月份只包含了30天和31天两种情况。

在改进等价类划分测试NextDate函数中,要考虑2月份天数的问题及闰年问题。

(1)有效等价类

M1={month:

month有30天}

M2={month:

month有31天,除去12月}

M3={month:

month是2月}

M4={month:

month是12月}

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不是闰年}

(2)无效等价类

M5={month:

month<1}

M6={month:

month>12}

D6={day:

day<1}

D7={day:

day>31}

Y3={year:

year<1912}

Y4={year:

month>2050}

(3)测试用例

根据等价类得到等价类测试用例,如表2。

表2改进等价类测试用例

测试

用例

输入

期望

输出

month

day

year

1

4

30

2009

2009年4月31日

2

7

31

2009

2009年8月1日

3

2

27

2009

 2009年2月28日

4

2

28

2009

2009年3月1日

5

2

29

2000

2000年3月1日

6

12

31

2009

2010年1月1日

7

9

31

2009

 不可能的输入日期

8

2

29

2009

不可能的输入日期

9

2

30

2009

不可能的输入日期

10

15

8

2009

month不在1~12中

11

6

37

2007

day不在1~31中

12

6

6

2100

 year不在1912~2050中

四.边界值测试分析

1.变量month、day、year的取值范围:

M1={month:

1≤month≤12}

D1={day:

1≤day≤31}

Y1={year:

1912≤year≤2050}

2.测试用例

利用输入变量的最小值、略大于最小值、正常值、略小于最大值和最大值来设计测试用例。

如表3。

表3边界值测试用例

测试

用例

输入

期望

输出

month

day

year

1

-1

3

2000

month不在1~12中

2

0

3

2000

month不在1~12中

3

1

15

2000

 2000年2月16日

4

2

15

2000

2000年2月16日

5

11

15

2000

2000年11月16日

6

12

15

2000

2000年12月16日

7

13

15

2000

month不在1~12中 

8

6

-1

2000

day不在1~31中

9

6

0

2000

day不在1~31中

10

6

1

2000

2000年6月2日

11

6

2

2000

2000年6月3日

12

6

30

2000

2000年7月1日

13

6

31

2000

不可能的输入日期

14

6

32

2000

day不在1~31中

15

6

15

1911

year不在1912~2050中

16

6

15

1912

1912年6月16日

17

6

15

1913

1913年6月16日

18

6

15

2049

2049年6月16日

19

6

15

2050

2050年6月16日

20

6

15

2051

year不在1912~2050中

五.决策表测试分析

决策表中的条件就是规格说明书中的输入条件,动作就是输出结果,而规则就是贯穿条件项和动作项的一列,一条规则要对应设计一个测试用例。

1.动作桩

a1:

不可能;

a2:

day加1;

a3:

day复位;

a4:

month加1;

a5:

month复位;

a6:

year加1

2.条件桩

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不是闰年}

3.画出决策表,如表4。

表4决策表

规则

选项

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复位

A6:

year加1

规则

选项

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

决策表共有22条规则:

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

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

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

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

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

通过以上的决策表得出简化的决策表,如表5。

表5简化决策表

规则

 

选项

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

4.根据简化的决策表,设计如表所示的测试用例。

如表6。

表6决策表测试用例

测试用例

month

day

year

预期输出

1~3

6

15

2007

2007年6月16日

4

6

30

2007

2007年7月1日

5

6

31

2007

不可能的输入日期

6~9

1

15

2007

2007年1月16日

10

1

31

2007

2007年2月1日

11~14

12

15

2007

2007年12月16日

15

12

31

2007

2008年1月1日

16

2

15

2007

2007年2月16日

17

2

28

2000

2000年2月29日

18

2

28

2007

2007年3月1日

19

2

29

2000

2000年3月1日

20

2

29

2007

不可能的输入日期

22~22

2

30

2007

不可能的输入日期

六.测试用例截图

使用普通等价类划分法进行用例测试,参见表1。

1.测试用例1,如图1。

图1测试用例1

2.测试用例2,如图2。

图2测试用例2

3.测试用例3,如图3。

图3测试用例3

4.测试用例4,如图4。

图4测试用例4

5.测试用例5,如图5。

图5测试用例5

6.测试用例6,如图6。

图6测试用例6

7.测试用例7,如图7。

图7测试用例7

心得

体会

本次实验的目的是主要是了解软件动态测试。

包括对等价类测试,边界值测试和决策表测试。

在做实验之前,我已经了解了这三种测试的基础要点和重点。

做实验的时候相对轻松了很多。

等价类测试要掌握三个步骤,先要形成等价类表,每一等价类规定一个唯一的编号。

然后设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖。

最后设计一个新测试用例,使其只覆盖一个无效等价类,重复这一步骤直到所有无效等价类均被覆盖。

最主要的是等价类表,只有将等价类表总结出来,才能进行下面的工作,才能把测试用例做的全面,不遗漏。

边界值测试要掌握两个要点,一是每次保留程序中一个变量,让其余的变量取正常值,被保留的变量依次取输入变量的最小值、正常值、略小于最大值和最大值作为有效边界值;依次取略小于最小值和略大于最大值作为无效边界值。

第二是对程序中的每个变量重复第一步。

只要找出正确的取值范围,做出相应的测试用例,就能很好的完成测试。

在这一方面完成的较好。

决策表测试主要是找到条件桩和动作桩,决策表中的条件就是规格说明书中的输入条件,动作就是输出结果,而规则就是贯穿条件项和动作项的一列,一条规则要对应设计一个测试用例。

根据这些画出决策表。

决策表虽然复杂,但测试的比较全面。

而且还要学会简化决策表。

这样可以使问题简化,使程序更加容易理解。

通过这次实验,使我对这门学科有了更深入的了解。

对动态测试更加熟悉。

可以更快的完成边界值测试,等价类测试和决策表测试。

这次的实验内容很多。

但基本都是课上讲过的内容。

虽然麻烦点,但理解起来很容易。

做完这个实验,我对边界值测试,决策表测试和等价类测试有了更深一步的了解。

在以后的学习中,我会更加仔细认真。

在做实验的时候发现不懂的地方。

要及时解决,才能实验发挥到最大的作用。

要学会总结归纳,简化内容,例如决策表的简化。

使实验更加简洁顺利。

相信在以后的实验中,我能更快更高效的完成实验。

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

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2