实验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一般三角形!;}划分等价类:有效等价类号码无效等价类号码整数1一边为非整数a为非整数12b为非整数13c为非整数14两边为非整数a、b为非整数15a、c为非整数16输入条件输入三个整数b、c为非整数17三边都为非整数a、b、c都为非整数18输入三个数2只给一个数只给a19只给b20只给c21只给两个数只给a、b22只给a、c23只给b、c24三个数都没有给出a、b、c为空25非零3一边为0a为026b为027c为028两边为0a、b为029a、c为030b、c为031三边都为0a、b、c为032正数4一边小于0a小于033b小于034c小于035两边小于0a、b小于036a、c小于037b、c小于038测试用例1.覆盖有效类的测试用例用例IDabc预期输出覆盖等价类号码1345一般三角形1—72445等腰三角形1—7,83455等腰三角形1—7,94545等腰三角形1—7,105444等边三角形1—7,112.覆盖无效类的测试用例用例IDabc覆盖等价类号码预期输出用例IDabc覆盖等价类号码预期输出62.54512无效输入2300529无效输入734.5513无效输入2430030无效输入输出条件构成一个三角形a+bc5a+bc39a+b=ca+cb6a+cb40a+c=bb+ca7b+ca41b+c=a构成一个等腰三角形(且两边之和大于第三遍)a=b8a=c9b=c10构成一个等边三角形a=b=c118345.514无效输入2504031无效输入2600032无效输入93.54.5515无效输入27-34533无效输入1034.55.516无效输入283-4534无效输入113.545.517无效输入2934-535无效输入123.54.55.518无效输入13319无效输入30-3-4536无效输入14420无效输入31-34-537无效输入15521无效输入323-4-538无效输入33-3-4-539无效输入163422无效输入3431540非三角形174523无效输入3532541非三角形183524无效输入3631142非三角形1925无效输入3732143非三角形2004526无效输入3814244非三角形2130527无效输入3934145非三角形2234028无效输入缺陷报告:缺陷编号1用例编号40缺陷类型代码错误严重级别严重优先级优先缺陷状态New测试阶段□√单元□集成□系统□验收□其它()可重现性□√是□否BUG原因□需求分析□√基本设计□详细设计□设计式样理解□编程□数据库设计□环境配置□其它()缺陷描述程序无法正常执行预期结果程序能运行,并且有运行的结果重现步骤备注打开vc++6.0,运行以下源代码。#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一般三角形!;}发现错误,无法执行。以下部分由BUG修改人填写缺陷修改描述将if语句的“<>”改成“!=”测试人修正人确认人修正日期年月日缺陷编号2用例编号1缺陷类型代码错误严重级别严重优先级优先缺陷状态New测试阶段□√单元□集成□系统□验收□其它()可重现性□√是□否BUG原因□需求分析□√基本设计□详细设计□设计式样理解□编程□数据库设计□环境配置□其它()缺陷描述输入正确的三个数,不能进行正确的判断三角形的类型预期结果是一般三角形!重现步骤备注1、在VC++6.0中运行源程序输入数据如图所示:以下部分由BUG修改人填写缺陷修改描述将以下代码if(a+bc||a+cb||b+ca)couta,b,c的值不能构成三角形!;改成if(a+bc||a+cb||b+ca)couta,b,c的值不能构成三角形!;测试人修正人确认人修正日期年月日缺陷编号3用例编号2~4缺陷类型严重级别严重优先级优先缺陷状态New测试阶段□√单元□集成□系统□验收□其它()可重现性□√是□否BUG原因□需求分析□√基本设计□详细设计□设计式样理解□编程□数据库设计□环境配置□其它()缺陷描述输入正确的三个数,不能正确判断三角形的类型预期结果等腰三角形重现步骤备注在VC++6.0中运行源程序输入数据如图所以:以下部分由BUG修改人填写缺陷修改描述将以下代码:if(a==b&&b==c)cout是等边三角形!;改为:if((a==b&&b!=c)||(a==c&&c!=b)||(b==c&&a!=c))cout是等腰三角形!;测试人修正人确认人修正日期年月日缺陷编号4用例编号6~12,20~39缺陷类型严重级别严重优先级优先缺陷状态New测试阶段□√单元□集成□系统□验收□其它()可重现性□√是□否BUG原因□需求分析□√基本设计□详细设计□设计式样理解□编程□数据库设计□环境配置□其它()缺陷描述输入无效数据,不能判定能否构成三角形预期结果给出提示判断是否为有效的输入重现步骤备注在VC++6.0中运行源程序输入数据如图所示:以下部分由BUG修改人填写缺陷修改描述将以下代码:if(ab&&bc&&ca)cout一般三角形!;改为:if((a0&&a=100)&&(b0&&b=100)&&(c0&&c=100)){if(a!=b&&b!=c&&c!=a)cout一般三角形!;}测试人修正人确认人修正日期年月日缺陷编号5用例编号40~45缺陷类型严重级别严重优先级优先缺陷状态New测试阶段□√单元□集成□系统□验收□其它()可重现性□√是□否BUG原因□需求分析□√基本设计□详细设计□设计式样理解□编程□数据库设计□环境配置□其它()缺陷描述输入不能构成三角形的有效数据,不能判定是否为三角形预期结果不能构成三角形重现步骤备注在VC++6.0中运行源程序输入数据如图所示:以下部分由BUG修改人填写缺陷修改描述将以下代码:if(ab&&bc&&ca)cout一般三角形!;改为:if((a0&&a=100)&&(b0&&b=100)&&(c0&&c=100)){if((a!=b&&b!=c&&c!=a)&&(a+bc&&a+cb&&b+ca))cout一般三角形!;}测试人修正人确认人修正日期年月日缺陷编号6用例编号13~19缺陷类型严重级别严重优先级优先缺陷状态New测试阶段□√单元□集成□系统□验收□其它()可重现性□√是□否BUG原因□需求分析□√基本设计□详细设计□设计式样理解□编程□数据库设计□环境配置□其它()缺陷描述只输入三角形的一边或两边,程序进入等待的状态,没有提示。预期结果给出提示判断是否为有效的输入重现步骤备注在VC++6.0中运行源程序输入数据如图所示:以下部分由BUG修改人填写缺陷修改描述测试人修正人确认人修正日期年月日2、城市的电话号码由两部分组成。这两部分的名称和内容分别是:1)地区码:以0开头的三位或者四位数字(包括0);2)电话号码:以非0、非1开头的七位或者八位数字。假定被调试的程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码,就可用等价分类法来设计它的调试用例。等价类表:输入条件有效等价类号码无效等价类号码地区码0以0开头的3位数以0开头的4位数123非数字字符非0开头的3位数非0开头的4位数0开头且少于3位数字0开头且多于4位数字非0开头且少于3位数非0开头且多于4位数6789101112电话号码非0、非1开头的7位数非0、非1开头的8位数45有非数字字符少于7位数多于8位数起始位为0起始位为11314151617请按照上述等价类的划分为此程序设计测试用例,参考答案如下:序号测试数据期望结果覆盖范围实际输出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)电话号错误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请根据划分好的等价类设计测试用例。有效等价类:month变量的有效等价类:M1:{month=4,6,9,11}M2:{month=1,3,5,7,8,10}M3:{month=12}M4:{month=2}day变量的有效等价类:D1:{1≤day≤27}D2:{day=28}D3:{day=29}D4:{day=30}D5:{day=31}year变量的有效等价类:Y1:{year是闰年}Y2:{year不是闰年}无效等价类:M5={月份:月份1}M6={月份:月份12}D6={日期.:日期1}D7={日期:日期31}Y3={年:年1812}Y4={年:年2012}50等价类表有效等价类无效等价类year是闰年month=4、6、9、111≤day≤271month134day=282month135day=293day136day=304day3137month=1、3、5、7、8、101≤day≤275year181238day=28