软件测试---NextDate函数---测试用例详解
- 格式:ppt
- 大小:2.11 MB
- 文档页数:20
计算机三级考试软件测试技术编程题计算机三级考试软件测试技术编程题计算机三级考试软件测试技术编程题1、NextDate函数问题说明:输入一个日期,求从输入日期算起的第三天日期。
例如,输入为2023年8月8日,那么该程序的输出为2023年8月 10日。
NextDate函数包含三个整数变量month、day和year,并且满足以下条件:1≤month≤12、1≤day≤31和2000≤year≤2100。
分析^p 各种输入情况,列出为输入变量month、day、year划分的有效等价类:编程实现:〔1〕对每一个有效等价类,至少设计一个测试用例。
输入格式:输入〔yyyymmdd〕:输出格式:输出〔yyyy-mm-dd〕:覆盖等价类〔ID类型〕:闰年〔Y/N〕:例如:输入〔yyyymmdd〕20230105↙〔回车〕输出〔yyyy-mm-dd〕:2023-01-07覆盖等价类〔ID类型〕:1,8,11闰年〔Y/N〕:N〔2〕对每一个无效的month、day和year,分别输入一个无效等价类。
例如:输入〔yyyymmdd〕20231305↙〔回车〕输出〔yyyy-mm-dd〕:无效月份覆盖等价类〔ID类型〕:闰年〔Y/N〕:2、阅读下面的.一段程序:void Test1(int N,intI)1 {2int x=0;3int y=0;4while(N--》0)5{6if(I==0)7 x=y+2;8 else9 if(I==1)10 y=y+10;11 else12 x=y+20;13}//while14 }//Test1根据所给定的程序,确定该程序的独立途径如下:途径1:4→14途径2:4→6→7→14途径3:4→6→9→10→4→14途径4:4→6→9→12→4→14编程实现:对每一个独立途径,设计一个测试用例,并插入一条显示输出语句〔printf/cout〕,显示测试途径标号。
输入格式:输入〔N,I〕:输出格式:输出〔x,y〕:x= y=途径ID:例如:输入〔N,I〕:1,2↙〔回车〕输出〔x,y〕:x=20 y=0途径ID:测试途径4。
一、实验目的:掌握黑盒测试中的决策表测试法,并对被测程序设计测试用例。
二、实验环境操作系统:Windows XP + SP2 /win7三、实验内容1、编写一个NextDate函数。
2、掌握黑盒测试中的决策表测试法的基本步骤。
3、使用决策表法设计测试用例,对编写的函数实施测试,总结分析测试结果。
四、实验步骤1、编写一个NextDate函数。
(C语言、C++)2、根据黑盒测试的决策表测试法设计测试用例。
3、根据测试用例实施测试,并记录测试结果。
五、实验代码#include <iostream>using namespace std;int a,b,c,y,m,d;<<"/n";return 1;}elsereturn a;}<<b<<"."<<c<<"\n"<<"\n";return 0;}}<<"\n";cout << "年份范围是1960-2060"<<"\n";cout<<"年"<<"\n";cin >>y;cout<<"月"<<"\n";cin>>m;cout<<"日"<<"\n";cin>>d;a=y;b=m;c=d;NextDate ( y, m, d);}return 0;}六、测试用例表NxetDate函数求解给定某个日期的下一个日期的动作桩如下:变量day加1操作;变量day复位操作;变量month加1操作;变量month复位操作;变量year加1操作NxetDate函数的求解关键是日和月的问题,所以可以在下面的条件桩的基础上建立决策表M1={month:month有30天};M2={month:month有31天,12月除外};M3={month:month是12月};M4={month:month是2月};D1={day:1=<day<=27};D2={day:day=28};D3={day:day=29};D4={day:day=30};D5={day:day=31};Y1={year:year是闰年};Y2={year:year不是闰年}NxetDate函数决策表NxetDate函数的测试用例组七、测试用例执行结果1、Test Case 1~32、Test Case 43、Test Case 54、Test Case 6~95、Test Case 106、Test Case 11~147、Test Case 158、Test Case 169、Test Case 1710、Test Case 1811、Test Case 1912、Test Case 2013、Test Case 21~22八、实验总结1、通过本次实验,学会编写一个NextDate函数。
实验一案例实践一NextDate的第一次测试我们可以将软件缺陷的正式定义简单地归纳为以下三点:1.存在完全没有实现的功能,即软件做得不够2.基本实现了用户所需的功能,但运行时会出现一些功能或性能上的问题,即软件没有正确地去做3.实现了用户不需要的功能,即软件做得太多让我们根据上述简单规则,用下面的案例来亲自动手测试。
测试步骤:1.NextDate功能简述(1) 有效日期的正确计算功能名称:有效日期的正确计算功能编号:F01(2)无效日期的合理提示功能名称:无效日期的合理提示功能编号:F02(3) 无条件文本清除功能名称:无条件文本清除功能编号:F03(4) 无条件确定功能名称:无条件确定功能编号:F04(5)无条件取消功能名称:无条件取消功能编号:F052.开始测试根据缺陷定义的三个方面,我们需要考察需求规格说明中指明的所有功能是什么,其中每个功能是否是正确完成的,是否存在某些功能超出了需求规格说明指明的功能范围。
让我们依次来测试每个功能吧。
NextDate的第一次测试的测试用例集合如表1.1所示,表中“N/A”表示不需要输入任何数据表1.1 NextDate的第一次测试的测试用例集合从表1.1中我们可以看到,对于需要简述中的每一项功能,表中都有一个测试用例进行对应的测试,且从表中可以清晰地看出每个用例执行的结果。
结果表明,系统实现了每项功能,但针对无效输入和“确定”按钮测试失败,发现有缺陷存在。
3. 测试分析(1)测试的完整性和有效性对于每项功能,只有一个测试用例来对应,这显然是不彻底的。
以有效输入功能为例,有效的日期应该是从 1800年 1 月 1日到2050 年 12月 31日之间的所有日期,而我们目前只选择了其中的一个日期,我们面临的问题是:我们需要全部测试这些有效日期吗?如果不需要全部测试,我们又该如何从中挑选出最能够揭示系统潜在缺陷的日期?仅用少量日期来测试对软件交付造成的风险有多大?对于无效输入,将包含更多情况:第一,满足所有输入的数据类型要求,但不在有效取值范围内。
NextDate函数测试用例1.测试程序源代码#include\#includeuingnamepacetd;voidNe某tDate(intyear,intmonth,intday);voidmain(){intyear=0,month=0,day= 0;Ne某tDate(year,month,day);}voidNe某tDate(intyear,intmonth,intday){cout<>year;while(!(year>=1911&&ye ar<=2022)){cout<>year;}cout<>month;while(month>12||month<1){ }cout<>month;cout<>day;while(day>31||day<1){cout<>day;}inti=0;i=day-29;while(month==2&&i>0){cout<>day;}if(month==2&&day==29){month=3;day=1;}eleday++;} eleday++;//月底计算;witch(month){cae1:cae3:cae5:cae7:cae8:cae10:if(day==32){month++; day=1;cout<if(day==31){month++;day=1;cout<cout<break;cout<白盒测试1开始2输入年、月、日43日期是否合法?无效日期5闰年的2月29日或者非闰年的2月28日6明天为3月1日87大月的31号或者小月的30号下个月是否大于129下个月1号1011日期加11月1号12结束DD-路径情况1.由一个节点组成,内度=0情况2.由一个节点组成,外度=0情况3.由一个节点组成,内度>=2或外度>=2情况4.由一个节点组成,内度=1并且外度=1情况5.长度>=1的最大链情况2:节点6、节点9、节点10情况3:节点2、节点3、节点5、节点7、节点8情况4:节点4、节点11白盒测试对每条DD-路径测试用例用例说明输入正确的年、月、日输入错误的年、月、日输入错误的年、月、日输入错误的年、月、日输入闰年2月29日输入非闰年2月28日输入大月31日输入小月30日输入12月31日输入数据预期结果实际结果2022年6月15日2022年6月16日2022年6月16日2501年6月15日日期输入有误输入有误,重新输入2022年6月33日日期输入有误输入有误,重新输入2022年13月15日日期输入有误输入有误,重新输入2000年2月29日2000年3月1日2000年3月1日2001年2月28日2001年3月1日2001年3月31日2001年4月1日2001年4月30日2001年5月1日2004年12月31日2005年1月1日2001年3月1日2001年4月1日2001年5月1日2005年1月1日。
1、使用等价类划分法为NextDate函数设计测试用例:NextDate函数包含三个输入变量month、day和year(要求month、day和year 均为整数值,并且满足:1≤month≤12; 1≤day≤31;1912≤year≤2050),函数的输出为输入日期后一天的日期。
(1)列出输入域等价类表(包括有效和无效等价类)。
(2)根据(1)中的等价类,设计能覆盖所有等价类的测试用例,要求包括输入数据和预期输出,并指出各个测试用例所覆盖的等价类编号。
2、某城市电话号码由三部分组成,分别是:地区码——空白或者三位数字;前缀——非‘0’或‘1’开头的三位数字;后缀——4位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。
(1)列出输入域等价类表(包括有效和无效等价类)。
(2)根据(1)中的等价类表,设计能覆盖所有等价类的测试用例,要求包括输入数据和预期输出,并指出各个测试用例覆盖的等价类编号。
3、使用基本路径测试方法测试以下程序段:V oid sort(int irecordnum,int itype)1{2Int x = 0;3Int y = 0;4While( irecordnum -- >0 )5{6If( itype == 0)7Break;8Else9If(itype == 1)10x = x+10;11Else12y = y+20;13}14}说明:写在程序段某些行开头数字(1~14)是对每条语句的编号。
(1)画出程序的控制流程图(用题中给出的语句编号表示)。
(2)计算上述程序段的环形复杂度。
(3)导出基本路径集,列出程序的独立路径(用题中给出的语句编号表示)。
请根据(3)中的独立路径,设计测试用例的输入数据和预期输出。
4、使用基本路径测试方法测试以下程序段:Int IsGood( int grade ){① If (grade <= 100){② If( grade >= 80 ){③ If(year >= 90 )④ Result = 2; //优秀Else⑤ Result = 1; //良好}Else if(grade >= 0)⑥ Result = 0; //合格Else⑦ Result = -1; //分数为负数}Else⑦ Result = -1; //分数大于100⑧ Return Result;}说明:写在程序段某些行开头数字(①~⑧)是对应语句的编号。
软件测试:NextDate函数,函数返回输⼊⽇期后⾯的那个⽇期package Yr;import java.util.Scanner;public class MyDate {public static String getTomorrowday(String Today){ String Tow = "";String year = "", month = "", day = "";int y = 0, m = 0, d = 0;year = Today.substring(0, 4);month = Today.substring(4, 6);day = Today.substring(6, 8);y = Integer.parseInt(year);m = Integer.parseInt(month);d = Integer.parseInt(day);if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10) {if (d<31){d =d+1; }else if(d==31){d=1;m=m+1;}}if (m == 4 || m == 6 || m == 9|| m == 11) {if(d<30){d=d+1;}else if(d==30)d=1;m=m+1;}if(m==12){if(d<31){d=d+1;m=1;if (y==2012){System.out.print("2012 is over!");}else y=y+1;}}if(m==2){if (d<28){d=d+1;}else if(d==28){if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) // 如果是闰年{d=29;}else if ((y % 4 != 0 && y % 100 == 0) || (y % 400 != 0)){d=1;m=3;} else if(d==29){d=1;m=3;}else if(d!=29){ System.out.print("⼆⽉不存在29号");}}}year = String.valueOf(y); if (m < 10) month = "0" + String.valueOf(m); else month = String.valueOf(m);if (d < 10) day = "0" + String.valueOf(d);else day = String.valueOf(d); Tow = year + month + day;return Tow; }public static void main(String args[]){ //String tomorrowday = "20090505";Scanner s=new Scanner(System.in);System.out.print("按格式(20090905)请输⼊今天的⽇期:");String tomorrowday=s.next();System.out.println("今天是" + tomorrowday);tomorrowday = getTomorrowday(tomorrowday);System.out.println("明天是" + tomorrowday); } }。
NextDate软件项目系统测试报告2016/04/04目录1.引言 (2)2.测试参考文档 (2)3.测试设计简介 (2)3.1测试用例设计 (2)3.1.1黑盒测试用例 (2)3.1.2白盒测试用例 (2)3.2测试环境与配置 (2)3.3测试方法 (3)4.测试情况 (3)4.1测试执行情况 (3)4.1.1缺陷汇总和分析 (5)4.1.2缺陷汇总和分析 (6)4.2测试覆盖 (8)4.3缺陷的统计 (8)4.3.1缺陷汇总和分析 (8)4.3.2具体的测试缺陷 (8)5.测试结论和建议 (8)5.1结论 (8)1.引言本测试报告为COMMISION计算系统的测试报告,目的在于总结测试阶段的测试以及分析测试结果,检验系统是否符合需求,预期读者为项目布置者。
主要通过软件测试技术测试系统是否可行,大致包括以下几个方面:1.提交组件数量信息的时候,是否能够将信息存入以备日后查用2.输入信息有误时候,能否提示错误3.当信息修改后看修改后的信息能不能被系统接受并保存到数据库4.查询信息时候,能不能准确查找信息5.业务逻辑是否正确,且能产生无误的输出报告2.测试参考文档暂无3.测试设计简介3.1 测试用例设计3.1.1黑盒测试用例黑盒测试中主要采用如下几种测试用例的设计方法设计测试用例,基本可以满足系统测试需要:(1)边界值测试用例(2)特殊值测试用例(3)等价类测试用例(4)消极测试用例3.1.2白盒测试用例白盒测试中主要采用如下几种测试用例的设计方法设计测试用例,基本可以满足系统测试需要,并覆盖程序所有路径:(1)基本路径测试(2)自下而上测试3.2测试环境与配置测试环境:客户端:web浏览器(chrome 49.0.2623.110 m)操作系统:windows73.3测试方法本次测试采用白盒测试方法,对系统后台业务逻辑和数据库操作部分进行单元测试;采用黑盒测试方法对系统整体功能进行测试。
其中单元测试工具是jasmine。
软件测试-测试用例的经典例子一、等价类划分问:某程序规定:"输入三个整数 a、 b、 c分别作为三边的边长构成三角形。
通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算… "。
用等价类划分方法为该程序进行测试用例设计。
(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。
)解:分析题目中给出和隐含的对输入条件的要求:(1)整数(2)三个数(3)非零数(4)正数(5)两边之和大于第三边(6)等腰(7)等边如果 a、 b 、 c满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:1)如果不满足条件(5),则程序输出为 " 非三角形 " 。
2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形" 。
3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。
列出等价类表并编号覆盖有效等价类的测试用例:a b c覆盖等价类号码3 4 5(1)--(7)4 4 5(1)--(7),(8)4 5 5(1)--(7),(9)5 4 5(1)--(7),(10)4 4 4(1)--(7),(11)覆盖无效等价类的测试用例:二、边界值分析法NextDate函数的边界值分析测试用例在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050 。
三、错误推测法测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:I.输入的线性表为空表;II.表中只含有一个元素;III.输入表中所有元素已排好序;IV.输入表已按逆序排好;V.输入表中部分或全部元素相同。
NextData函数一、问题描述程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12、1≤day≤31、1900≤year ≤2050。
),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上下一天的日期。
例如,输入为2005年11月29日,则该程序的输出为2005年11月30日。
请用黑盒测试方法设计测试用例。
二、程序界面计算下一天的程序代码见附录。
三、设计测试用例1. 用边界值测试方法设计测试用例用健壮性测试法设计测试用例,按照下列步骤进行:(1)分析各变量的取值健壮性测试时,各变量分别取:略小于最小值、最小值、略高于最小值、正常值、略低于最大值、最大值和略大于最大值。
month:-1,1,2,6,11,12,13;day:-1,1,2,15,30,31,32year:1899,1900,1901,1975,2049,2050,2051;(2)测试用例数有n个变量的程序,其边界值分析会产生6n+1个测试用例。
这里有3个变量,因此会产生19个测试用例。
(3)设计测试用例,见表1-1。
NextDate函数的复杂性来源于两个方面:一是输入域的复杂性(即输入变量之间逻辑关系的复杂性),二是确定闰年的规则。
但是在进行健壮性测试时,没有考虑输入变量之间的逻辑关系,也没有考虑和闰年相关的问题,因此在设计测试用例时存在遗漏问题,比如和判断闰年相关的日期:2008.2.29、1999.2.28等。
表1-1NextDate函数测试用例2. 用基于判定表的方法设计测试用例(1)分析各种输入情况,列出为输入变量month、day、year划分的有效等价类。
month变量的有效等价类:M1 = { month = 4,6,9,11 }M2 = { month = 1,3,5,7,8,10 }M3 = { month = 12 }M4 = { month = 2 }day变量的有效等价类:D1={日期:1≤日期≤27}D2={日期:日期=28}D3={日期:日期=29}D4={日期:日期=30}D5={日期:日期=31}year变量的有效等价类:Y1 = { year是闰年}Y2 = { year不是闰年}(2)分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采取的操作(即列出所有的动作桩)。
NextDate函数测试用例选择NextDate函数,是因为它可以说明输入定义域中的依赖性问题,这使得这个例子成为基于决策表测试的一个完美例子,因为决策表可以突出这种依赖关系。
从前面对等价类测试的分析我们知道,等价类分析假设所有的变量都是独立的。
如果变量确实是独立的,则使用类的笛卡尔积是有意义的。
如果变量之间在输入定义域中存在逻辑依赖关系,则这些依赖关系在笛卡尔积中就会丢失(说抑制可能更确切)。
决策表格式通过使用“不可能动作”概念表示条件的不可能组合,使我们能够强调这种依赖关系。
下面将对NextDate函数的决策表描述做三次尝试。
第一次尝试标识合适的条件和动作,假设首先从分析等价类集合开始。
M1 = {月份:每月有30天};M2 = {月份:每月有31天};M3 = {月份:此月是2月}D1 = {日期:1≤日期≤28};D2 = {日期:日期=29};D3 = {日期=30};D4 = {日期=31}Y1 = {年:年是闰年};Y2 = {年:年不是闰年}如果我们希望突出不可能的组合,则可以建立具有以下条件和动作的有限项决策表。
(请注意,年变量对应的等价类收缩为下表的一个条件。
)这个决策表会有256条规则,其中很多是不可能的。
如果要显示为什么这些规则是不可能的,可将动作修改为:a1:月份中的天数太多;a2:不能出现在非闰年中;a3:计算NextDate。
第二次尝试如果我们将注意力集中到NextDate函数的闰年问题上,则可以修改已有的等价类集合。
为了说明另一种决策表表示方法,这一次采用扩展项决策表开发,并更仔细地研究动作桩。
在构建扩展项决策表时,必须保证等价类构成输入定义域的真划分。
如果规则项之间存在“重叠”,则会存在冗余情况,使得多个规则都能够满足。
这里,Y2是一组1812~2012之间的年份,并除以4,2000除外。
M1 = {月份:每月有30天};M2 = {月份:每月有31天};M3 = {月份:此月是2月}D1 = {日期:1≤日期≤28};D2 = {日期:日期=29};D3 = {日期=30};D4 = {日期=31}Y1 = {年:年=2000};Y2 = {年:年是闰年};Y3 = {年:年是平年}从某种意义上说,我们采用的是“灰盒”技术,因为更仔细地研究了NextDate函数。
软件测试-nextDate问题NextDate 函数包含三个变量:month 、 day 和 year ,函数的输出为输⼊⽇期后⼀天的⽇期。
例如,输⼊为 2006年3⽉ 7⽇,则函数的输出为 2006年3⽉8⽇。
要求输⼊变量 month 、 day 和 year 均为整数值,并且满⾜下列条件:①1≤month≤12②1≤day≤31③1920≤year≤20501)有效等价类为:M1={⽉份:1≤⽉份≤12}D1={⽇期:1≤⽇期≤31}Y1={年:1812≤年≤2012}2)若条件① ~ ③中任何⼀个条件失效,则 NextDate 函数都会产⽣⼀个输出,指明相应的变量超出取值范围,⽐如 "month 的值不在 1-12 范围当中 " 。
显然还存在着⼤量的 year 、 month 、 day 的⽆效组合, NextDate 函数将这些组合作统⼀的输出: " ⽆效输⼊⽇期 " 。
其⽆效等价类为:M2={⽉份:⽉份<1}M3={⽉份:⽉份>12}D2={⽇期:⽇期<1}D3={⽇期:⽇期>31}Y2={年:年<1812}Y3={年:年>2012}弱⼀般等价类测试⽤例⽉份⽇期年预期输出6 15 1912 1912年6⽉16⽇强⼀般等价类测试⽤例同弱⼀般等价类测试⽤例注:弱--有单缺陷假设;健壮--考虑了⽆效值(⼀)弱健壮等价类测试⽤例ID ⽉份⽇期年预期输出WR1 6 15 1912 1912年6⽉16⽇WR2 -1 15 1912 ⽉份不在1~12中WR3 13 15 1912 ⽉份不在1~12中WR4 6 -1 1912 ⽇期不在1~31中WR5 6 32 1912 ⽇期不在1~31中WR6 6 15 1811 年份不在1812~2012中WR7 6 15 2013 年份不在1812~2012中(⼆)强健壮等价类测试强健性等价类测试⽤例可以包含多个⽆效值,即含有多个缺陷假设。
Nextday测试⽤例
流程图
程序流程图
程序控制流图
计算其环形复杂度
E=15,N=11,V(G)=E-N+2=14-11+2=5 P=4,v(G)=P+1=4+1=5基本路径法的测试⽤例
(1) 1,2-3-4-12
(2)1,2-3—5-6-12
(3)1,2-3-5-7-8-10-12
(4)1,2-3-5-7-8-9-12
(5)1,2-3-5-7-11-12
语句覆盖
判定覆盖
条件覆盖
判定/条件覆盖
组合条件覆盖
1.⽇期合适?是标记T1,不是标记F1
2.闰年的2⽉29⽇或者⾮闰年的2⽉29⽇?是标记T2,不是标记F2
3.⼤⽉的31⽇或者⼩⽉的30⽇?是标记T3,不是标记F3
4.下个⽉是否⼤于12⽉?是标记T4,不是标记F4
条件间的可能组合关系
路径法的测试⽤例
1、语句覆盖
2、判定覆盖
也可以让测试⽤例测试路径P2和P3。
相应的两组输⼊数据如下:
3、条件覆盖
对于M:x>3取真时T1,取假时F1;
z<10取真时T2,取假时F2;
对于N:x=4取真时T3,取假时F3;
y>5取真时T4,取假时F4。
条件:x>3,z<10,x=4,y>5
条件:x<=3,z>=10,x!=4,y<=5
5、组合覆盖
1) X>3,Z<10 2)X>3,Z>=10
3)X<=3,Z<10 4)X<=3,Z>=10
5)X=4,Y>5 6)X=4,Y<=5
7)X≠4,Y>5 8)X≠4,Y<=5
6。
辽宁工程技术大学上机实验报告实验分析续效等价类。
(2)根据所列出的等价类表,设计能覆盖所有等价类的测试用例,以及输入和预期的输出。
划分的等价类表如表1-1所示。
表1-1 Nextdata函数程序的等价类表输入条件有效等类编号无效等价类编号年份1912~2050 1 年份<1912 11年份>2050 12 月份1、3、5、7、8、10 2 月份<1 134、6、9、11 32 4 月份>12 1412 5日期1~27 6 日期<1 1528 729 8日期>31 1630 931 10表1-2 Nextdata函数程序的等价类测试用例表测试用例年份月份日期预期结果1 19123 27 明天是1912年3月28日2 1899 4 28 年份超过界限,请重新运行3 2051 2 29 年份超过界限,请重新运行4 1912 4 28 明天是1912年4月28日5 1912 2 29 明天是1912年3月1日6 1912 12 30 明天是1912年12月31日7 1912 12 31 明天是1913年1月1日8 1912 -1 31 月份超过界限,请重新运行9 1912 13 30 月份超过界限,请重新运行10 1912 4 -1 日期超过界限,请重新运行11 1912 2 32 日期超过界限,请重新运行等价类测试测试用例运行结果截图:测试用例1图1-1测试用例2图1-2实验分析续测试用例3图1-3 测试用例4图1-4 测试用例5图1-5 测试用例6图1-6 测试用例7图1-7 测试用例8图1-8 测试用例9图1-9实验分析续测试用例10图1-10测试用例11图1-11NextDate函数程序的边界值测试2.边界值测试在Nextdata函数中,规定了变量“年份”、“月份”和“日期”,其相应的取值范围:1912<=年份<=2050,1912<=月份<=2050,1912<=日期<=2050。
第三章黑盒测试方法课后习题及答案1.黑盒测试中,测试人员和程序员应该相互独立。
解释其合理性。
答:黑盒测试是一种常见且常用的软件测试方法,它将被测软件看成是一个无法打开的黑盒,主要根据功能需求设计测试用例来完成软件的测试。
将测试人员与程序员相互独立可以以避免作者的偏见,并且通常更有效地发现缺陷和失败。
2.若测试机器学习程序,请设计出一些蜕变关系。
答:蜕变关系(Metamorphic Relation, MR)表示一组与模型算法中多对输入和输出相关的属性,3.如何识别等价类?运用示例给出解释。
答:识别等价类的六大原则:(1)如果一个输入条件规定了输入值的范围,那么可以得到3个等价类:一个有效等价类和两个无效等价类。
示例:规定输入值的范围是1〜99,如图所示,那么可以得到3个等价类:一个合法等价类{1,…,99};两个非法等价类{χ I x<l}和{x ∣x>99}oI 99无效等价类-* -一~ A —无效等价类图:输入值范围(2)如果输入条件规定了一个输入值集合,并且集合中的每个元素处理起来都不同,那么为集合中的每个元素生成一个有效等价类,为集合之外的所有元素生成一个无效等价类。
示例:如果从具有N个元素的集合中选择输入,那么得到N+1个等价类。
为每个元素生成一个有效等价类{Ml}{MN};生成一个包含集合之外所有元素的无效等价类{x∣x团{M1,...,MN}}.(3)如果处理每个有效输入的方式都不相同,那么为每个有效输入生成一个有效等价类。
示例:如果在一个菜单中选择菜单项作为输入,那么应该为每个菜单项定义—•个等价类。
(4)如果输入条件规定了有效输入的数量(假定为N),那么为正确的输入数量定义一个有效等价类,同时定义两个无效等价类。
(5)如果输入条件规定了必须满足的情形,那么生成两个等价类:一个为有效等价类;另一个为无效等价类。
示例:输入的第一个字符必须是一个数字,那么得到两个等价类一一个为有效等价类{s∣s的第一个字符是数字};另一个为无效等价类{s∣s的第一个字符不是数字}。