您好,欢迎访问三七文档
实验二:白盒软件测试一、实验目的通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯。熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。二、实验内容背景:被测测试程序功能:计算被输入日期是星期几;程序定义:已知公元1年1月1日是星期一,只要输入年月日,能自动回复当天是星期几;测试环境:Windowsvista、DevC++;说明:本次测试采用插装测试法,由于程序简单,手动输入测试用例。程序说明:A程序思路:计算输入日期与公元1年1月1日所相差的天数,具体如下:总天数=公元1年到输入日期上一年年底天数+输入年份的1月到上月月底天数+输入日期的天数B闰年满足条件(year%4==0)&&(year%100!=0)||(year%400==0)(1)分析各种输入情况,结合程序输出结果,进行等价类划分,并给出详细测试用例;(2)根据(1)所划分的等价类,进行边界值分析,并给出具体的测试用例;(3)决策表测试法;①列出输入变量month、day、year的有效等价类;(条件桩)②分析程序的规格说明,给出问题规定的可能采取操作;(动作桩)③画出决策表(简化);④根据决策表,给出详细测试用例。代码:(被测部分为while循环内部语句)#includeiostreamusingnamespacestd;intmain(){intx=1,year,month,day;while(x){1.inti,num=0,total,total1,total2;2.cout请输入年份:;3.cinyear;4.cout请输入月份:;5.cinmonth;6.cout请输入日期:;7.cinday;//求得输入年份之前一年末的总天数8.for(i=1;iyear;i++){9.if((i%4==0)&&(i%100!=0)||(i%400==0))10.num++;}11.total1=365*(year-num-1)+366*num;//求得输入年份的总天数12.if((year%4==0)&&(year%100!=0)||(year%400==0)){//求得输入月份之前一月末的总天数13.switch(month){case1:total2=0;break;case2:total2=31;break;case3:total2=60;break;case4:total2=91;break;case5:total2=121;break;case6:total2=152;break;case7:total2=182;break;case8:total2=213;break;case9:total2=244;break;case10:total2=274;break;case11:total2=305;break;case12:total2=335;break;}}else{14.switch(month){case1:total2=0;break;case2:total2=31;break;case3:total2=59;break;case4:total2=90;break;case5:total2=120;break;case6:total2=151;break;case7:total2=181;break;case8:total2=212;break;case9:total2=243;break;case10:total2=273;break;case11:total2=304;break;case12:total2=334;break;}}//在加上输入的日,求其总和可得到从公元1年1月1日到输入日期当天的总天数15.total=total1+total2+day;16.intweek;17.week=total%7;18.cout您输入的日期是;19.switch(week){case0:cout星期天endl;break;case1:cout星期一endl;break;case2:cout星期二endl;break;case3:cout星期三endl;break;case4:cout星期四endl;break;case5:cout星期五endl;break;case6:cout星期六endl;break;}cout**********退出程序请输入0,否则任一输入继续**********endl;cinx;}}2、测试用例设计1)控制流图2)环路复杂度计算由图可知,图中的环路有六条,故环路复杂度为六。3)基本路径集设计基本路径集为:A.1、2、3、4、5、6、7、8、11、12、14、15、16、17、18、19B.1、2、3、4、5、6、7、8、9、11、12、14、15、16、17、18、19C.1、2、3、4、5、6、7、8、9、10、11、12、13、15、16、17、18、19D.1、2、3、4、5、6、7、8、9、10、11、12、14、15、16、17、18、19注:由源程序代码可知,未走路径10则必定不通过路径13,故省去两条检测路径。4)测试用例集设计测试用例集为:A路径:1-2-26预期输出:星期一B路径:2-2-2预期输出:星期六C路径:2010-11-16预期输出:星期二D路径:2008-8-6预期输出:星期三3、插装后源程序清单与判定覆盖率分析结果#includeiostreamusingnamespacestd;intmain(){intx=1,year,month,day;intm1=0,m2=0,m3=0,m4=0,m=15,n=0,f=0;while(x){n++;cout=====请输入测试用例=====endl;inti,num=0,total,total1,total2,qw;cout请输入年份:;cinyear;cout请输入月份:;cinmonth;cout请输入日期:;cinday;cout请输入预期输出结果(星期一到星期天,对应输入1~7):;cinqw;cout程序运行路径:1-2-3-4-5-6-7-8;for(i=1;iyear;i++){if((i%4==0)&&(i%100!=0)||(i%400==0))num++;}if(i1){cout-9;if(m1==0){m++;m1=1;}}if(num0){cout-10;if(m2==0){m++;m2=1;}}total1=365*(year-num-1)+366*num;cout-11-12;if((year%4==0)&&(year%100!=0)||(year%400==0)){cout-13;if(m3==0){m++;m3=1;}switch(month){case1:total2=0;break;case2:total2=31;break;case3:total2=60;break;case4:total2=91;break;case5:total2=121;break;case6:total2=152;break;case7:total2=182;break;case8:total2=213;break;case9:total2=244;break;case10:total2=274;break;case11:total2=305;break;case12:total2=335;break;}}else{cout-14;if(m4==0){m++;m4=1;}switch(month){case1:total2=0;break;case2:total2=31;break;case3:total2=59;break;case4:total2=90;break;case5:total2=120;break;case6:total2=151;break;case7:total2=181;break;case8:total2=212;break;case9:total2=243;break;case10:total2=273;break;case11:total2=304;break;case12:total2=334;break;}}cout-15-16-17-18-19endl;total=total1+total2+day;intweek;week=total%7;cout-----该测试用例测试结果-----endl;coutendl;cout测试用例n:输入year.month.day,预期输出为:;switch(qw%7){case0:cout星期天,;break;case1:cout星期一,;break;case2:cout星期二,;break;case3:cout星期三,;break;case4:cout星期四,;break;case5:cout星期五,;break;case6:cout星期六,;break;}cout实际输出为:;switch(week){case0:cout星期天,;break;case1:cout星期一,;break;case2:cout星期二,;break;case3:cout星期三,;break;case4:cout星期四,;break;case5:cout星期五,;break;case6:cout星期六,;break;}if(week==qw%7)cout成功!endl;else{cout失败!endl;f++;}coutendl;cout=====本次测试用例测试已结束,退出测试请输入0,否则任一输入继续测试=====endl;cinx;}cout最终对main函数中while内循环语句单元测试结果统计:endl;;cout共执行n个测试用例,总的路径覆盖率:m*100/19%,其中通过n-f个,失败f个endl;}测试截图见附录三、总结与体会实验中对于路径测试有了更深的理解,可以更好、更迅速的去划分路径,设计测试用例。通过实验,我对软件测试有了进一步的认识和学习,对白盒测试流程有了较清楚的了解,收获很多。四、附录
本文标题:白盒测试实验报告
链接地址:https://www.777doc.com/doc-5344861 .html