软件测试实验报告.docx

上传人:b****4 文档编号:4903211 上传时间:2022-12-11 格式:DOCX 页数:17 大小:80.30KB
下载 相关 举报
软件测试实验报告.docx_第1页
第1页 / 共17页
软件测试实验报告.docx_第2页
第2页 / 共17页
软件测试实验报告.docx_第3页
第3页 / 共17页
软件测试实验报告.docx_第4页
第4页 / 共17页
软件测试实验报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

软件测试实验报告.docx

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

软件测试实验报告.docx

软件测试实验报告

软件测试实验报告

姓名:

*******

专业:

*********************

班级:

***********

学号:

*************

日期:

2011-5-25

 

实验一:

黑盒测试

一、实验目的:

了解三角形问题的边界值分析测试用例。

二、实验要求:

在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。

在此,我们将三角形每边边长的取范围值设值为[1,100]。

在三角形问题中,有四种可能的输出:

等边三角形、等腰三角形、一般三角形和非三角形。

利用这些信息能够确定下列输出(值域)等价类。

R1={:

边为a,b,c的等边三角形}

R2={:

边为a,b,c的等腰三角形}

R3={:

边为a,b,c的一般三角形}

R4={:

边为a,b,c不能组成三角形}

三、实验程序:

#include"iostream.h"

voidmain()

{

inta,b,c;

cout<<"请输入1<=a<=100或1<=b<=100或1<=c<=100"<

cin>>a>>b>>c;

if((1<=a&&a<=100)&&(1<=b&&b<=100)&&(1<=c&&c<=100))

{

if(a+b>c&&a+c>b&&c+b>a)

{

if(a==b&&a==c&&c==b){cout<<"三角形为等边三角形"<

elseif(a==b||a==c||c==b)

{

cout<<"三角形为等腰三角形"<

}

elseif((a*a+b*b)==c*c||(c*c+b*b)==a*a||(a*a+c*c)==b*b)

{

cout<<"三角形为直角三角形"<

}

elsecout<<"a,b,c可组成三角形"<

}

elsecout<<"不存在a,b,c组成的三角形"<

}

elsecout<<"a或b或c的值不合法,无法判断"<

}

四、测试用列:

用列ID

a

b

c

预期输出

1

1

1

1

三角形为等边三角形

2

2

2

1

三角形为等腰三角形

3

3

4

5

三角形为直角三角形

4

2

2

2

三角形为等边三角形

5

2

3

3

三角形为等腰三角形

6

4

3

5

三角形为直角三角形

7

5

4

3

三角形为直角三角形

8

1

1

2

不存在a,b,c组成的三角形

9

4

2

2

不存在a,b,c组成的三角形

10

2

4

2

不存在a,b,c组成的三角形

11

4

2

5

不存在a,b,c组成的三角形

12

0

0

0

a或b或c的值不合法,无法判断

13

0

1

1

a或b或c的值不合法,无法判断

14

2

0

12

a或b或c的值不合法,无法判断

15

13

13

0

a或b或c的值不合法,无法判断

16

100

100

100

三角形为等边三角形

17

100

100

0

a或b或c的值不合法,无法判断

18

100

12

101

a或b或c的值不合法,无法判断

19

100

12

100

不存在a,b,c组成的三角形

20

90

90

80

三角形为等腰三角形

五、等价类划分:

输入条件

有效等价类

编号

无效等价类

编号

三角形

a+b>c&&a+c>b&&c+b>a&&a=b&&c=b

1

a<1,a>100,

b<1,b>100,

c<1,c>100

 

5

a+b>c&&a+c>b&&c+b>a&&a=b||c=b

2

a+b>c&&a+c>b&&c+b>a&&

3

非三角形

a+b

4

六、实验结论:

通过实验要求的条件编写的程序和测试用列的预期输出证明给该

程序是正确的

实验二:

黑盒测试

1.

一、实验目的:

了解xtDate函数的边界值分析测试用例。

二、实验要求:

程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:

1≤month≤12、1≤day≤31、1900≤year≤2050。

),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上第二天的日期。

例如,输入为2005年11月30日,则该程序的输出为2005年12月1日。

请用等价类测试和边界测试法设计测试用例。

三、实验程序:

#include"stdio.h"

intIsLeapYear(intYear);

intIsCurrentDate(intYear,intMonth,intDay);

intReturnNextDay(intYear,intMonth,intDay);

intLeapYear_Month_SumDay[12]={31,29,31,30,31,30,31,31,30,31,30,31};voidmain()

{intYear=0,Month=0,Day=0,NextDay=0;

printf("pleaceenterrightDate(example:

2005627):

\n");

scanf("%d%d%d",&Year,&Month,&Day);

NextDay=ReturnNextDay(Year,Month,Day);

switch(NextDay)

{case0:

printf("notacurrentdate\n");break;

case1:

if(Month==12)

{Year++;Month=1;}

else{Month++;}break;

}

if(NextDay!

=0)printf("Theyouinputnextdateis%d-%d-%d.\n",Year,Month,NextDay);

}

intIsLeapYear(intYear)

{if(Year%4==0)

{if(Year%400)return1;

else{if(Year%100==0)return0;

elsereturn1;

}}

else{return0;}

}

intIsCurrentDate(intYear,intMonth,intDay)

{if((Year<1900)&&(Year>2050)&&(Month>12)&&(Month<1)&&(Day<1)&&(Day>31))

printf("输入的数据有错,请重新输入!

");

elsereturn1;

}

intReturnNextDay(intYear,intMonth,intDay)

{intThisMonthSumDay;

if(IsCurrentDate(Year,Month,Day)==1)

{ThisMonthSumDay=LeapYear_Month_SumDay[Month-1];

if(Month==2)

{if(IsLeapYear(Year)==0)ThisMonthSumDay--;}

if(Day

else{if(Day==ThisMonthSumDay){return1;}

else{return0;}

}

}else{return0;}

}

四、实验用例:

用例ID

Year

Month

Day

预期输出

1

2000

1

1

2000-1-2

2

2000

2

31

不可能

3

2001

3

30

2001-3-31

4

1900

4

15

1900-4-16

5

2001

2

29

不可能

6

2004

2

28

2004-2-29

五、等价类划分:

输入条件

编号

有小等价类

编号

无效等价类

输入年份

1

1900<=n<=2050

7

n>2050||n<1900

输入月份

2

1<=y<=12

8

y>12||y>1

输入日期

3

1<=r<=31

9

r>31||r<1

闰年

4

1<=r<=29

10

r>29||r<1

非闰年

5

1<=r<=28

11

r>28||r<1

2.

一、实验目的:

了解找零钱组合的方法

二、实验要求:

假设商店货品价格(R)都不大于100元(且为整数),若顾客付款(P)在10元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。

假定此商店的货币面值只包括:

50元(N50)、10元(N10)、5元(N5)、1元(N1)四种。

请结合等价类划分法和边界值分析法为上述程序设计出相应的测试用例。

三、实验程序:

#include"iostream.h"

voidmain()

{chari;

inta,b;//a代表商品价钱,b代表顾客付的钱。

do

{cout<<"请输入商品价钱a(1—100):

";

cin>>a;

cout<<"请输入顾客付款b(1—100):

";

cin>>b;

cout<<"最佳找零方案:

"<

cout<<(b-a)/50<<"张50元"<

cout<<((b-a)%50)/10<<"张10元"<

cout<<((b-a)%10)/5<<"张5元"<

cout<<(b-a)%5<<"张1元\n"<

cout<<"你还要继续吗?

输入n表示结束"<

cin>>i;

}

while(i!

='n');}

四、等价类划分:

输入条件

有效等价类

编号

无效等价类

编号

付款金额

1<=b<=100

1

b>100||b<1

3

商品金额

1

2

a>=100||a<=1

4

五、测试用例:

测试用例

输入数据

预期输出

实际输出

b

a

最佳找钱路径

1

100

50

一张50

一张50

2

100

40

一张50、一张10

一张50、一张10

3

150

40

无法推算

无法推算

4

100

150

无法推算

无法推算

实验三:

白盒测试

一、实验目的:

根据流程图编写程序,并使用逻辑覆盖测试方法测试

二、实验要求:

语句1:

k=x*y-1;j=sqrt(k);

语句2:

j=x*y+10;

语句3:

j=j%3;

要求:

(1)画出该程序的控制流图。

(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径。

三、实验程序:

#include"stdio.h"

voidmain()

{intx=0,y=0,k=0;

floatj=5;

printf("请输入X,Y的值");

scanf("%d%d%d\n",&x,&y,&j);

if(x>8&&y>5)

{if(x>16||y>10){j=j%3;printf("%d\n",j);}

elsereturn0;

}

elseif(x>0||y>0)

{j=x*y+10;printf("%d\n",j);}

else{k=x*y-1;j=sqrt(k);printf("%d\n",j);}

四、控制流程图:

 

五、语句覆盖:

测试的路径为{x=10,y=6};程序执行的路径为:

137;

六、判定覆盖:

测试的路径为:

{x=17,y=11};{x=9,y=7};{x=7,y=6};{x=-1,y=-2};

(1)当测试路径为{x=17,y=11}时,程序执行的路径为:

1367;

(2)当测试路径为{x=9,y=7}时,程序执行的路径为:

137;

(3)当测试路径为{x=7,y=6}时,程序执行的路径为:

1257;

(4)当测试路径为{x=-1,y=-2}时,程序执行的路径为:

1247;

七、条件覆盖:

(1)第一个判定((x>8)&&(y>5)):

1、条件x>8取真值记为T1,取假值记为-T1

2、条件z<5取真值记为T2,取假值记为-T2

(2)第二个判定((x>0)||(y>0)):

1、条件x>0取真值记为T3,取假值记为-T3

2、条件y>0取真值记为T4,取假值记为-T4

(3)第三个判定((x>16)||(y>10)):

1、条件x>16取真值记为T5,取假值记为-T5

2、条件y>10取真值记为T6,取假值记为-T6

根据条件覆盖的基本思想,要使上述6个条件可能产生的12种情况至少满足一次,设计测试用例如下:

测试用例

执行路径

覆盖条件

覆盖分支

X=17,y=11

1-3-6-7

T1,T2,T3,T4,T5,T6

3-6-7

X=-1,y=-1

1-2-4-7

-T1,-T2,-T3,-T4,-T5,-T6

2-4-7

八、判定/条件覆盖:

根据判定/条件覆盖的基本思想,只需设计以下两个测试用例便可以覆盖6个条件的12种取值以及6个判定分支。

测试用例

执行路径

覆盖条件

覆盖分支

X=17,y=11

1-3-6-7

T1,T2,T3,T4,T5,T6

3-6-7

X=-1,y=-1

1-2-4-7

-T1,-T2,-T3,-T4,-T5,-T6

2-4-7

九、组合覆盖:

对函数中的各个判定的条件取值组合加以标记:

1、x>8,y>5记做T1T2,第一个判定的取真分支;

2、x>8,y<=5记做T1-T2,第一个判定的取假分支;

3、x<=8,y>5记做-T1T2,第一个判定的取假分支;

4、x<=8,y<5记做-T1-T2,第一个判定的取假分支;

5、x>0,y>0记做T3T4,第一个判定的取假分支和第二个判定的取真分支;

6、x>0,y<=0记做T3-T4,第一个判定的取假分支和第二个判定的取真分支;

7、x<=0,y>0记做-T3T4,第一个判定的取假分支和第二个判定的取真分支;

8、x<=0,y<=0记做-T3-T4,第一个判定的取假分支和第二个判定的取假分支;

9、x>16,y>10记做T5T6,第一个判定的取真分支和第三个判定的取真分支;

10、x>16,y<=10记做T5-T6,第一个判定的取真分支和第三个判定的取真分支;

11、x<=16,y>10记做-T5T6,第一个判定的取真分支和第三个判定的取真分支;

12、x>=16,y<10记做-T5-T6,第一个判定的取真分支和第三个判定的取假分支;

根据组合覆盖的基本思想,设计测试用例如下:

测试用例

执行路径

覆盖条件

覆盖组合号

x=17,y=11

1-3-6-7

T1,T2,T3,T4,T5,T6

1、5、9

x=9,y=-1

1-2-5-7

T1,-T2,T3,-T4,T5,-T6

2、6、10

x=9,y=6

1-2-5-8

T1,T2,T3,T4,-T5,-T6

3、7、11

X=-1,y=-1

1-2-4-7

-T1,-T2,-T3,-T4,-T5,-T6

4、8、12

十、路径覆盖:

根据路径覆盖的基本思想,在满足组合覆盖的测试用例中修改其中一个测试用例,则可以实现路径覆盖:

测试用例

执行路径

覆盖条件

x=9,y=6

1-3-7

T1,T2,T3,T4,-T5,-T6

X=17,y=6

1-3-6-7

T1,T2,T3,T4,T5,-T6

X=5,y=6

1-2-5-7

T1,T2,T3,T4,-T5,-T6

X=-1,y=-1

1-2-4-7

-T1,-T2,-T3,-T4,-T5,-T6

 

实验四:

白盒测试

一、实验目的:

计算生日是星期几

二、实验要求:

已知公元1年1月1日是星期一。

编写一个程序,只要输入年月日,就能回答那天是星期几。

应用逻辑覆盖方法和基本路径测试方法为上面的问题设计测试用例。

要求:

(1)画出该程序的控制流图;

(2)用基本路径测试方法给出测试路径;

(3)为各测试路径设计测试用例。

三、实验程序:

#include

voidmain()

{intyear,month,day;

intt=0,t1=0,a=0,b=2050,c=0;

cout<<"请输入year:

"<

cin>>year;

cout<<"请输入month:

"<

cin>>month;

cout<<"请输入day:

"<

cin>>day;

cout<

1for(year=1;year

{

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

=0)

||(year%400==0))

3{c=year/4;

t1=(year-1)*365+c-1;

switch(month)

{

case1:

a=day;break;

case2:

a=31+day;break;

case3:

a=60+day;break;

case4:

a=91+day;break;

case5:

a=121+day;break;

case6:

a=152+day;break;

case7:

a=182+day;break;

case8:

a=213+day;break;

case9:

a=244+day;break;

case10:

a=274+day;break;

case11:

a=305+day;break;

case12:

a=335+day;break;

}

}

4else

{c=(int)(year/4);

t1=(year-1)*365+c;

switch(month)

{case1:

a=day+;break;

case2:

a=31+day;break;

case3:

a=59+day;break;

case4:

a=90+day;break;

case5:

a=120+day;break;

case6:

a=151+day;break;

case7:

a=181+day;break;

case8:

a=212+day;break;

case9:

a=243+day;break;

case10:

a=273+day;break;

case11:

a=304+day;break;

case12:

a=334+day;break;

}

}

t=(t1+a)%7;

5switch(t)

{case1:

cout<<"星期一";break;

case2:

cout<<"星期二";break;

case3:

cout<<"星期三";break;

case4:

cout<<"星期四";break;

case5:

cout<<"星期五";break;

case6:

cout<<"星期六";break;

case0:

cout<<"星期日";break;

}

}

}

 

四、实验流程图:

 

 

 

五、基本测试路径:

六、

(1):

1235

(2):

1245

七、各测试路径设计测试用例:

测试用例

执行路径

预期输出

实际输出

2000年1月1日

1235

星期日

星期日

2001年5月15日

1245

星期三

星期三

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

当前位置:首页 > 求职职场 > 简历

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

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