软件测试实验报告.docx
《软件测试实验报告.docx》由会员分享,可在线阅读,更多相关《软件测试实验报告.docx(5页珍藏版)》请在冰豆网上搜索。
软件测试实验报告
软件测试实验报告
桂林航天工业学院课程设计报告 课程名称:
软件测试 专 业:
软件技术学 号:
201102520xxx 姓 名:
指导教师:
实验一黑盒测试 一.实验目的 能熟练应用黑盒测试技术进行测试用例设计;对测试用例进行优化设计; 二.实验内容 1.三角形问题的边界值分析测试用例 在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。
在此,我们将三角形每边边长的取范围值设值为[1,100]。
在三角形问题中,有四种可能的输出:
等边三角形、等腰三角形、一般三角形和非三角形。
利用这些信息能够确定下列输出等价类。
R1={:
边为a,b,c的等边三角形} R2={:
边为a,b,c的等腰三角形} R3={:
边为a,b,c的一般三角形} R4={:
边为a,b,c不能组成三角形} 2.找零钱最佳组合 假设商店货品价格(R)都不大于100元,若顾客付款(P)在100元内, 现有一个程序能在每位顾客付款后给出找零钱的最佳组合。
假定此商店的货币面值只包括:
50元(N50)、10元(N10)、5元(N5)、1元(N1)四种。
请结合等价类划分法和边界值分析法为上述程序设计出相应的测试用例。
三、程序代码 1.三角形问题程序。
#includeintmain(void){ inta,b,c;//定义三个整数a,b,c printf(\请输入1到100的三个整数:
\scanf(\ if((a>=1&&a=1&&b=1&&b if((a+b>c)&&(a+c>b)&&(b+c>a))//判断是否构成三角形{ if(a==b&&b==c) printf(\等边三角形\\n\elseif(a==b||a==c||b==c) printf(\等腰三角形\\n\else printf(\一般三角形\\n\ }else printf(\不能组成三角形\\n\}else printf(\输入1到100的三个整数!
\\n\return0;} 2.找零钱最佳组合问题程序。
#include\ voidcalc(int);//计算找钱intmain(void){intR,P;while
(1){ printf(\请输入商品的价格:
\scanf(\if(0 printf(\请输入支付的金额:
\scanf(\if(0
R=P-R; if(R printf(\不够钱支付!
\\n\elseif(R==0) printf(\不用找零钱!
\\n\else printf(\ calc(R); printf(\}else printf(\支付金额大于0不大于100!
\\n\}else printf(\价格应大于0不大于100!
\\n\}return0;} voidcalc(intR){ intN50,N10,N5,N1; N50=N10=N5=N1=0; printf(\找零钱:
¥%d\\n\while(R-50>=0){N50+=1;R-=50;} while(R-10>=0){N10+=1;R-=10;} while(R-5>=0){N5+=1;R-=5;} while(R-1>=0){N1+=1;R-=1;} printf(\printf(\¥50x%d\\n\ printf(\¥10x%d\\n\printf(\¥5x%d\\n\printf(\¥1x%d\\n\printf(\ printf(\} 四、写出划分的等价类 1.三角形问题划分等价类有效等价类 ①a,b,c为整数。
②a,b,c的取值范围在[1,100]。
③任意两边的和大于第三边。
无效等价类 ⑦a,b,c的取值范围不在[1,100]。
⑧任意两边的和小于第三边。
2.找零钱最佳组合问题划分等价类有效等价类 ①0 ⑦R≤0⑧R>100 ④三条边相等。
⑤任意两边相等。
⑥一般三角形。
⑨不是整数 ④0≤N5≤1⑤0≤N10≤4⑥0≤N50≤1⑨P≤0⑩P>100 五、根据等价类设计的测试用例 三角形问题等价类测试用例:
输入的数据用例编号a1234567850503b50504c502511y@等边三角形等腰三角形一般三角形等边三角形等腰三角形一般三角形预期输出实际输出价类①?
?
③④①②③⑤①②⑥覆盖的等10123z!
2x*输入1到100的三个整数输入1到100的三个整数⑦不能组成三角形不能组成三角形①②⑧输入1到100的三个整数输入1到100的三个整数⑨输入1到100的三个整数输入1到100的三个整数⑨ 输入1到100的三个整数输入1到100的三个整数⑨找零钱最佳组合问题等价类测试用例:
输入的数据用例编号R123456151050432P210501001050N1=1N5=1N10=4N50=1N5=1,N1=1N10=1,N5=1,N1=3N1=1N5=1N10=4N50=1N5=1,N1=1N10=1,N5=1,N1=3⑤①②③④78910111234035100101100100250100N50=1,N10=1,N5=1,N1=1价格应大于0不大于100不够钱支付不用找零钱N50=1,N10=1,N5=1,N1=1⑤⑥价格应大于0不大于100不够钱支付不用找零钱②⑦①②①②预期输出实际输出价类①②③①②④①②⑤①②⑥①②③④①②③④覆盖的等支付金额大于0不大于100支付金额大于0不大于100①⑨价格应大于0不大于100价格应大于0不大于100②⑧
13100101支付金额大于0不大于100支付金额大于0不大于100①⑩六、根据边界值分析法设计测试用例 1.三角形问题边界值分析法测试用例:
根据输入值分析边界值:
①边界值为0②边界值为1 输入的数据用例编号a12345678910111213141516171801299b50505050c50输入1到100的三个整数输入1到100的三个整数50505050等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形预期输出实际输出界值①②③④⑤⑥①②③④⑤⑥①②③④⑤⑥③边界值为2④边界值为99 ⑤边界值为100⑥边界值为101 覆盖的边1005010150505050500129950输入1到100的三个整数输入1到100的三个整数50输入1到100的三个整数输入1到100的三个整数50505050等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形100505010150输入1到100的三个整数输入1到100的三个整数5050505050505050505001299输入1到100的三个整数输入1到100的三个整数等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形等腰三角形5010050101输入1到100的三个整数输入1到100的三个整数2.找零钱最佳组合问题边界值分析法测试用例:
根据输入值分析边界值:
a)R的边界值为0 b)R的边界值为1 c)R的边界值为-1 d)R的边界值为99e)R的边界值为100f)R的边界值为101根据输出值分析边界值:
①找50元1张②找10元4张③找10元3张④找10元2张 输入的数据用例编号R12341010-150P505050101100g)P的边界值为0h)P的边界值为1i)P的边界值为-1 j)P的边界值为99k)P的边界值为100l)P的边界值为101 ⑤找10元1张⑥找5元1张⑦找1元4张⑧找1元3张 ⑨找1元2张⑩找1元1张 覆盖的边预期输出实际输出界值价格应大于0不大于100价格应大于0不大于100f价格应大于0不大于100价格应大于0不大于100a价格应大于0不大于100价格应大于0不大于100c支付金额大于0不大于支付金额大于0不大于l100支付金额大于0不大于g100支付金额大于0不大于100支付金额大于0不大于i100100不够钱支付N1=4N5=1N5=1,N1=4N10=1N10=4,N5=1,N1=1N50=1N1=1N1=2N1=3ek⑦k⑥k⑥⑦k⑤k②⑥⑦k①b⑩b⑨k⑧不够钱支付N1=4N5=1N5=1,N1=4N10=1N10=4,N5=1,N1=4N50=1N1=1N1=2N1=3支付金额大于0不大于5500678910111213141516501009695919051501197-150100100100100100100231001718192021807060299100100100150N10=2N10=3N10=4不够钱支付不够钱支付N10=2N10=3N10=4不够钱支付不够钱支付k④k③k②hd黑盒测试实验二 一.实验目的 能熟练应用黑盒测试技术进行测试用例设计;对测试用例进行优化设计; 二.实验内容 1.NextDate函数的边界值分析测试用例 程序有三个输入变量month、day、year,分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上第二天的日期。
例如,输入为2005年11月30日,则该程序的输出为2005年12月1日。
请用等价类测试和边界测试法设计测试用例。
三、程序代码 #include\intmain(void){ intyear; intmonth; intday; printf(\请输入年份:
\scanf(\ while(!
(year>=1900&&year printf(\输入的年份不正确!
\\n\ return; } printf(\请输入月份:
\ scanf(\ while(month>12||month printf(\月份输入有误,请重新输入!
\\n\ return; } printf(\请输入日期号:
\scanf(\ if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)//判断31天 { while(day>31||day printf(\日期输入有误,请重新输入!
\\n\ return; } } if(month==4||month==6||month==9||month==11)//判断30天 { while(day>30||day printf(\日期输入有误,请重新输入!
\\n\ return; } } if((year%4==0&&year_0!
=0)||(year@0==0))//检查闰年; { if(month==2) { if(day>29) { printf(\本月是闰月,请在1-29之间重新输入日期!
\\n\ return; } else { if(day==29) { day=1; } elseday++; } } } else { if(month==2) { if(day>28) { printf(\本月是闰月,请在1-28之间从新输入日期!
\\n\return;} else{ if(day==28){ day=1; } elseday++; } } } switch(month)//计算当前日期的下一天{ case1:
case3:
case5:
case7:
case8:
case10:
if(day==31){ month++; day=1; printf(\明天是:
%d/%d/%d\\n\ break; } else{ day++; printf(\明天是:
%d/%d/%d\\n\ break; }case2:
if(day==1) { month++; printf(\明天是:
%d/%d/%d\\n\ break; } else{
printf(\明天是:
%d/%d/%d\\n\ break; } case4:
case6:
case9:
case11:
if(day==30) { month++; day=1; printf(\明天是:
%d/%d/%d\\n\ break; } else{ day++; printf(\明天是:
%d/%d/%d\\n\ break; } case12:
if(day==31) { year++; month=1; day=1; printf(\明天是:
%d/%d/%d\\n\ break; } else{ day++; printf(\明天是:
%d/%d/%d\\n\ break; } } } 四、写出划分的等价类 输入条件输入年份输入月份输入日期编号?
?
?
有效等价类19002050month12day31输入类型输入为闰年输入为平年?
?
?
输入为int型输入2月29日输入2月28日⑶⑷⑸除int型外的任意输入输入为闰年2月30日输入2月29日五、根据等价类设计的测试用例 用例编号123456789输入的数据1988/2/32000/2/292001/2/28100/1/232300/3/21912/0/31927/90/31956/3/-211972/3/43Dasd@#¥%asdasdasd&……?
gwgrwgrerhsxcvxfgdfg2000/2/30预期输出1988/2/42000/3/12001/3/1输入的年份不正确!
输入的年份不正确入!
月份输入有误,请重新输入!
月份输入有误,请重新输入!
日期输入有误,请重新输入!
日期输入有误,请重新输入!
实际输出1988/2/42000/3/12001/3/1输入的年份不正确!
输入的年份不正确!
月份输入有误,请重新输入!
月份输入有误,请重新输入!
日期输入有误,请重新输入!
日期输入有误,请重新输入!
覆盖的等价类?
?
?
?
?
?
?
?
?
?
⑴⑵10程序进入死循环程序进入死循环⑶11本月是闰月,请在1-29之间从新输入日期!
本月是闰月,请在1-28之间从新输入日期!
本月是闰月,请在1-29之间从新输入日期!
本月是闰月,请在1-28之间从新输入日期!
⑷122001/2/29⑸六、边界值分析法测试用例:
a.month=0b.month=1c.month=2d.month=11e.month=12f.month=13g.day=0 h.day=1i.day=2j.day=30k.day=31l.day=32m.year=1899n.year=1900 o.year=1901p.year=2049q.year=2050r.year=2051 输入的数据用例编号monthdayyear123456789101112131415161718666666666666012111213151899151900151901152049152050152051012197519751975输入的年份不正确!
输入的年份不正确!
日期输入有误,请重新输入!
输入的年份不正确!
输入的年份不正确!
日期输入有误,请重新输入!
日期输入有误,请重新输入!
日期输入有误,请重新输入!
月份输入有误,请重新输入!
月份输入有误,请重新输入!
mnopqrghijklabcdef预期输出实际输出覆盖的边界值301975日期输入有误,请311975重新输入!
日期输入有误,请321975重新输入!
月份输入有误,请151975重新输入!
151975151975151975151975 月份输入有误,请151975重新输入!
实验三 白盒测试实验 一.实验目的 能熟练应用白盒测试技术设计测试用例; 二.实验内容要求 1.根据流程图编写程序,并使用逻辑覆盖测试方法测试。
NX>8ANDY>5YX>0ORY>0NX=y+20YX=y/3NX>16ORY>10YX=2*y要求:
画出程序图。
分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖设计测试用例。
三、程序代码 #include\intmain(void){ floatx,y; printf(\请输入x,y:
\scanf(\if(x>8&&y>5){ } elseif(x>0||y>0){} else{x=y+20;} x=y/3; if(x>16||y>10){} elsereturn0; x=2*y; } printf(\return0; 四、画出程序图 21 74356 五、设计测试用例 T1:
x>8T2:
y>5T3:
x>0T4:
y>0T5:
X>16T6:
y>10A1,A2,A3语句覆盖 用例编号输入的数据预期的输出实际的输出执行路径条件覆盖判定结点覆盖-T1,-T2,1x=-1,y=-1x=x=1-2-4-7-T3,-T4,-T5,-T6-T1,-T2,2x=8,y=5x=y/3x=1-2-5-7T3,T4,-T5,-T6T1,T2,-T3x=17,y=10x=x=1-3-6-73,-T4,T5,-T6判定覆盖 A1,A3 -A1,A2-A1,-A2
012345 check()函数控制流图如下:
158910761112131415 五、写出基本路径 编号12345678910基本路径⑹⑺⒆(21)(24)(31)(33)⑹⒆(34)⑹⒆(21)(34)⑹⒆(21)(22)(34)⑹⒆(21)(23)(34)⑹⒆(21)(24)(34)⑹⒆(21)(31)(34)⑹⒆(21)(22)(33)⑹⒆(21)(23)(33)⑹⒆(21)(31)(33)编号基本路径1112131415161718(0)①(0)②③④⑤⑥⑦⑧(0)②④⑤⑦⑨(0)②④⑤⑦⑩(0)②④⑤⑦(11)(0)②④⑤⑦(12)(0)②④⑤⑦(13)(0)②④⑤⑦(14)六、设计测试用例条件:
编号T1T2T3T4T5T6T7T8T9T10T11T12条件month==1month==2month==13month==14sumday==0sumday==1sumday==2sumday==3sumday==4sumday==5sumday==6year%4==0编号T13T14T15T16T17T18T19T20T21T22T23T24year_0!
=0year_0!
=0year@0==0year31day>30leap==1leap==0day>29day>28编号T25T26T27T28T29T30T31T32T33T34T35条件month==2month==3month==4month==5month==6month==7month==8month==9month==10month==11month==12 测试用例用例输入的数据编号1234201221201231201246201255预期的输出WednesdayThurdayFridaySaturday实际的输出WednesdayThurdayFridaySaturday执行的路径(0)②③④⑤⑥⑦⑧(0)②④⑤⑦⑨(0)②④⑤⑦⑩(0)②④⑤⑦(11)覆盖的条件T12,T13,T25,T21,T2,T4,T7T12,T13,T26,T8T12,T13,T27,T9T12,T13,T28,T10567891011121314151617181920126320127302000815201293120132820130122013126201310332013113120122302013229201312312013630201321501212SundayMondayTuesday错误提示Wednesday错误提示Saturday错误提示错误提示错误提示错误提示SaturdaySundayFriday错误提示SundayMondayTuesday错误提示Wednesday错误提示Saturday错误提示错误提示错误提示错误提示SaturdaySundayFriday错误提示(0)②④⑤⑦(12)(0)②④⑤⑦(13)(0)②④⑤⑦(14)(0)①⑹⒆(34)⑹⒆(21)(34)⑹⒆(21)(22)(34)⑹⒆(21)(23)(34)⑹⒆(21)(24)(34)⑹⒆(21)(31)(34)⑹⒆(21)(22)(33)⑹⒆(21)(23)(33)⑹⒆(21)(24)(31)(33)⑹⒆(34)