
一、实验目的
通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯。熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。
二、实验内容
背景:
被测测试程序功能:计算被输入日期是星期几;
程序定义:已知公元1年1月1日是星期一,只要输入年月日,能自动回复当天是星期几;
测试环境:Windows vista、Dev C++;
说明:本次测试采用插装测试法,由于程序简单,手动输入测试用例。
程序说明:
A程序思路:计算输入日期与公元1年1月1日所相差的天数,具体如下:总天数=公元1年到输入日期上一年年底天数+输入年份的1月到上月月底天数+输入日期的天数
B闰年满足条件(year%4==0)&&(year%100!=0)||(year%400==0)
(1)分析各种输入情况,结合程序输出结果,进行等价类划分,并给出详细测试用例;
(2)根据(1)所划分的等价类,进行边界值分析,并给出具体的测试用例;
(3)决策表测试法;
①列出输入变量month、 day、 year的有效等价类;(条件桩)
②分析程序的规格说明,给出问题规定的可能采取操作;(动作桩)
③画出决策表(简化);
④根据决策表,给出详细测试用例。
代码:(被测部分为while循环内部语句)
#include using namespace std; int main() { int x=1,year, month, day; while(x) { 1.int i, num=0,total, total1, total2; 2.cout<<"请输入年份: "; 3.cin>>year; 4.cout<<"请输入月份: "; 5.cin>>month; 6.cout<<"请输入日期: "; 7.cin>>day; //求得输入年份之前一年末的总天数 8.for(i=1; 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) { case 1:total2 = 0;break; case 2:total2 = 31;break; case 3:total2 = 60;break; case 4:total2 = 91;break; case 5:total2 = 121;break; case 6:total2 = 152;break; case 7:total2 = 182;break; case 8:total2 = 213;break; case 9:total2 = 244;break; case 10:total2 = 274;break; case 11:total2 = 305;break; case 12:total2 = 335;break; } } else { 14.switch(month) { case 1:total2 = 0;break; case 2:total2 = 31;break; case 3:total2 = 59;break; case 4:total2 = 90;break; case 5:total2 = 120;break; case 6:total2 = 151;break; case 7:total2 = 181;break; case 8:total2 = 212;break; case 9:total2 = 243;break; case 10:total2 = 273;break; case 11:total2 = 304;break; case 12:total2 = 334;break; } } //在加上输入的日,求其总和可得到从公元1年1月1日到输入日期当天的总天数 15.total = total1 + total2 + day; 16.int week; 17. week = total % 7; 18.cout<<"您输入的日期是"; 19.switch(week) { case 0:cout<<"星期天"< cout<<"**********退出程序请输入0,否则任一输入继续**********"< } } 2、测试用例设计 1)控制流图 2)环路复杂度计算 因为控制流图非强连通图,所以不能用公式:V(G)=e-n+2;从图可知环路有六条,故环路复杂度为六。 3)基本路径集设计 基本路径集为: (1)1、2、3、4、5、6、7、8、11、12、14、15、16、17、18、19 (2)1、2、3、4、5、6、7、8、9、11、12、14、15、16、17、18、19 (3)1、2、3、4、5、6、7、8、9、10、11、12、13、15、16、17、18、19 (4)1、2、3、4、5、6、7、8、9、10、11、12、14、15、16、17、18、19 注:由源程序代码可知,未走路径10则必定不通过路径13,故省去两条检测路径。 4)测试用例集设计 测试用例集为: (1)路径:1-2-19 预期输出:星期一 (2)路径:2-2-9 预期输出:星期六 (3)路径:2008-8-8 预期输出:星期五 (4)路径:2012-5-21 预期输出:星期一 3、插装后源程序清单与判定覆盖率分析结果(代码详见:冉维2009213998(白盒测试插装后源程序代码).cpp) 分析结果见结果截图 三、总结与体会 总结:①通过这次简单程序白盒测试,我熟悉了该测试过程,对软件测试路径有了初步了解;②熟练掌握了如何运用基路径测试方法进行测试用例设计;③初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。 体会:感觉白盒测试比黑盒测试要难,尤其是要撰写更多的代码,以及更多时间去关注内部结构! 四、附录 注:测试结果截图
