您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 墨盒测试法——等价类划分法(有答案)
实验3墨盒测试法——等价类划分法实验目的:1.掌握等价类划分的方法2.掌握按等价类测试用例实验内容:1、请用等价类划分法为三角形问题划分等价类,并设计相应的测试用例,测试下面三角形问题程序,找出缺陷并改正。#includeiostream.hvoidmain(){inta,b,c;cout请输入三角形的三条边(界于1-100之间)endl;cinabc;if(a=1||a=100)couta的值超过允许的范围!;if(b=1||b=100)coutb的值超过允许的范围!;if(c=1||c=100)coutc的值超过允许的范围!;if(a+bc||a+cb||b+ca)couta,b,c的值不能构成三角形!;if(a==b&&b==c)cout是等边三角形!;if(a==b||b==c||a==c)cout是等腰三角形!;if(ab&&bc&&ca)cout一般三角形!;}#includeiostream.hvoidmain(){inta,b,c;cout请输入三角形的三条边(界于1-100之间)endl;cinabc;if(a=1||a=100)couta的值超过允许的范围!;if(b=1||b=100)coutb的值超过允许的范围!;if(c=1||c=100)coutc的值超过允许的范围!;if(a+bc||a+cb||b+ca)couta,b,c的值不能构成三角形!;if(a==b&&b==c)cout是等边三角形!;if((a==b&&b!=c)||(a==c&&c!=b)||(b==c&&a!=c))cout是等腰三角形!;if(a!=b&&b!=c&&c!=a)cout一般三角形!;}等价类:输入条件有效等价类无效等价类是否是三角形(1)a+bc(2)a+cb(3)b+ca(4)a0(5)b0(6)c0(11)a+b=c(12)a+c=b(13)b+c=a(14)a=0(15)b=0(16)c=0是否是等边三角形(7)a=bandb=c(17)a!=b是否是等腰三角形(8)a=b(9)a=c(10)b=c(18)a!=bandb!=candc!=a测试用例序号测试数据覆盖范围输出13,4,51,2,3,4,5,6一般三角形22,2,34,5,6,8等腰三角形33,3,34,5,6,7等边三角形42,3,74,5,6,11不能形成三角形55,6,71,2,3,4,5,6一般三角形63,3,44,5,6,8等腰三角形改正:1测试有1错误:if(ab&&bc&&ca)cout一般三角形!;应该把所有改!=2.更改后测试没错误,运行时发现结果不匹配:问题出现在:if(a+bc||a+cb||b+ca)couta,b,c的值不能构成三角形!;和if(a==b||b==c||a==c)cout是等腰三角形!;这两处代码有问题,应依次改为:if(a+bc||a+cb||b+ca)couta,b,c的值不能构成三角形!;if((a==b&&b!=c)||(a==c&&c!=b)||(b==c&&a!=c))cout是等腰三角形!;2、城市的电话号码由两部分组成。这两部分的名称和内容分别是:1)地区码:以0开头的三位或者四位数字(包括0);2)电话号码:以非0、非1开头的七位或者八位数字。假定被调试的程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码,就可用等价分类法来设计它的调试用例。输入数据有效等价类无效等价类地区码(1)以0开头的3位数串(2)以0开头的4位数串(3)以0开头的含有非数字字符的串(4)以0开头的小于3位的数串(5)以0开头的大于4位的数串(6)以非0开头的数串电话号码(7)以非0、非1开头的7位数串(8)以非0、非1开头的8位数串(9)以0开头的数串(10)以1开头的数串(11)以非0、非1开头的含有非法字符7或者8位数串(12)以非0、非1开头的小于7位数串(13)以非0、非1开头的大于8位数串请按照上述等价类的划分为此程序设计测试用例,参考答案如下:序号测试数据期望结果覆盖范围实际输出101023145678显示有效输入(1)、(8)无反应20232234567显示有效输入(1)、(7)无反应308513456789显示有效输入(2)、(7)无反应4085123145678显示有效输入(2)、(8)无反应50a3423456789显示无效输入(3)无反应60523456789显示无效输入(4)区号错误70123423456789显示无效输入(5)区号错误8234123456789显示无效输入(6)区号错误902801234567显示无效输入(9)电话号错误1002812345678显示无效输入(10)电话号错误11028qw123456显示无效输入(11)无反应12028623456显示无效输入(12)电话号错误13028886234569显示无效输入(13)电话号错误测试用例序号测试数据期望结果覆盖范围实际输出101023148578显示有效输入(1)、(8)无反应20232237577显示有效输入(1)、(7)无反应3085123135678显示有效输入(2)、(8)无反应40a3423445789显示无效输入(3)无反应50523487639显示无效输入(4)区号错误60123423336789显示无效输入(5)区号错误702801289567显示无效输入(9)电话号错误802812368677显示无效输入(10)电话号错误9028qw125756显示无效输入(11)无反应10028886230569显示无效输入(13)电话号错误3.NextDate问题NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一天的日期。例如,输入为1989年5月16日,则函数的输出为1989年5月17日。要求输入变量month、day和year均为整数值,并且满足下列条件,也就是有效等价类:1≤month≤121≤day≤311812≤year≤2012若条件(1)~(3)中任何一个条件失效,则NextDate函数都会产生一个输出,指明相应的变量超出取值范围,比如“month的值不在1-12范围当中”。显然还存在着大量的year、month、day的无效组合,我们可以给出下列无效等价类:month1month12day1day31year1812year2012请根据划分好的等价类设计测试用例。测试用例:序号测试数据覆盖范围输出11994,8,121,2,31994,8,1321988,12,327day的值不在1-31范围当中31954,13,225month的值不在1-12范围当中42013,8,249year的值不在1812-2012范围当中51955,5,211,2,31955,5,2261810,8,327,8day的值不在1-31范围当中year的值不在1812-2012范围当中71777,0,04,6,8day的值不在1-31范围当中month的值不在1-12范围当中year的值不在1812-2012范围当中#includeiostreamusingnamespacestd;voidNextDate(intyear,intmonth,intday);voidmain(){intyear=0,month=0,day=0;NextDate(year,month,day);}voidNextDate(intyear,intmonth,intday){cout请输入年份:endl;cinyear;while(!(year=1811&&year=2013)){cout年份超过界限,请重新输入endl;cinyear;}cout请输入月份:endl;cinmonth;while(month12||month1){cout月份输入有误,请重新输入endl;cinmonth;}cout请输入日期:endl;cinday;while(day31||day1){cout日期输入有误,请重新输入endl;cinday;}if((year%4==0&&year%100!=0)||(year%400==0))//检查闰年;{inti=0;i=day-29;while(month==2&&i0){cout本月是闰月,请在1-29之间从新输入日期endl;cinday;}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明天是:year'/'month'/'dayendl;}break;case2:if(day==29){month=3;day=1;}break;case4:case6:case9:case11:if(day==31){month++;day=1;cout明天是:year'/'month'/'dayendl;}break;case12:if(day==32){year++;month=1;day=1;cout明天是:year'/'month'/'dayendl;}break;}cout明天是:year'/'month'/'dayendl;}
本文标题:墨盒测试法——等价类划分法(有答案)
链接地址:https://www.777doc.com/doc-4558733 .html