NextDate函数黑盒测试
大连东软信息学院软件测试黑盒测试方法习题及答案讲解

⼤连东软信息学院软件测试⿊盒测试⽅法习题及答案讲解/1.现有⼀个⼩程序,能够求出三个在-10000到+10000间整数中的最⼤者,程序界⾯如图所⽰,⽤等价类划分法设计测试⽤例。
答案:(1)进⾏等价类划分,如下:(3)根据等价类表设计测试⽤例,如下表所⽰。
分数:10题型:解答题操作题类型:Word难度:32. NextDate函数有三个变量month,day,year的函数,输出为输⼊⽇期下⼀天的⽇期。
如:输⼊为2007年7⽉19⽇,输出为2007年7⽉20⽇。
要求三个变量都为整数,且满⾜:条件1:1 ≤month ≤12条件2:1 ≤day ≤31条件3:1912 ≤year ≤2050⽤等价类划分法设计NextDate函数的弱健壮等价类测试⽤例。
答案: NextDate函数的弱健壮等价类测试⽤例如下表所⽰。
3.⼀个程序根据输⼊三个整数作为三边的边长,判断所构成的三⾓形。
当此三⾓形为⼀般三⾓形、等腰三⾓形、等边三⾓形时,分别作计算。
⽤等价类划分⽅法为该程序设计测试⽤例。
答案:率其中,保险费率依点数不同⽽有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;⽽点数⼜是由投保⼈的年龄、性别、婚姻状况和抚养⼈数来决答案:(1)分析程序规格说明中给出和隐含的对输⼊条件的要求,列出等价类表(包5.某城市的电话号码由三部分组成。
这三部分的名称和内容分别是:地区码:空⽩或三位数字;前缀:⾮’0’或’1’开头的三位数;后缀:四位数字。
假定被调试的程序能接受⼀切符合上述规定的电话号码,拒绝所有不符合规定的号码,⽤等价分类法来设计它的测试⽤例。
答案:划分等价类,包括4个有效等价类,11个⽆效等价类。
6.针对以下问题:某⼀种8位计算机,其⼗六进制常数的定义是以0x或0X开头的⼗六进制整数,其取值范围为-7f~7f(不区分⼤⼩写字母),如0x13、0x6A、-0x3c。
请采⽤等价类划分的⽅法设计测试⽤例。
实验黑盒测试用例设计

实验1 黑盒测试用例设计1、实验目的1、掌握黑盒测试用例的设计方法。
2、综合运用所学的黑盒测试方法设计测试用例。
2、实验准备…1、黑盒测试用例的设计方法。
2、测试用例模板。
3、实验内容基本训练实验一:假设现有以下的三角形分类程序。
该程序的功能是,读入代表三角形边长的3个整数,判定它们能否组成三角形。
如果能够,则输出三角形是等边、等腰或任意三角形的分类信息。
图1显示了该程序的流程图和程序图。
为以上的三角形分类程序设计一组测试用例。
@图1实验二:为自动售货机设计黑盒测试用例有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。
其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。
若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。
|扩展训练题目1:利用因果图法编写测试用例。
某奖金计算软件实现功能如下:1该软件可以计算某公司的年终奖,该公司员工分为普通员工和管理人员。
2员工表现分为普通、优秀和特殊贡献(普通和优秀员工都可以有特殊贡献,普通员工表现普通和管理人员表现普通拿的工资是不同的)。
}3 根据员工的分类和表现,将奖金分为1类奖金,2类奖金——。
具体分析:输入条件:员工类别:普通员工A1、管理人员A2员工表现:普通B1、优秀B2、特殊贡献B3输出条件:奖金类别:1类奖金C1、2类奖金C2——…其中:A1和A2是互斥的,B1和B2是互斥的,B1和B3,B2和B3可以同时满足。
普通员工:A1+B1—>C1A1+B2 —〉C2A1+B1+B3—〉C3A1+B2+B3—〉C4】管理人员:A2+B1—〉C5A2+B2—〉C6A2+B1+B3—〉C7A2+B2+B3—〉C84、实验步骤~基本训练实验一步骤:第一步:确定测试策略。
NextData函数

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 (int month, int day, int year)函数规定:输入三个整数:month、day和year,函数的输出为输入日期后一天的日期。
例如,输入为2006年3月7日,则函数的输出为2006年3月8日,year满足1920≤year≤2050。
步骤如下:
1)构造决策表
●M1={月份:30天/月},
M2={月份: 31天/月,12月除外},
M3={月份: 12月},M4={月份: 2月}
●D1={日期:1<=日<=27},
D2={日期:日=28},
D3={日期:日=29} ,
D4={日期:日=30},
D5={日期:日=31}
●Y1={年:闰年},Y2={年:平年}
注:二月:平年28天,闰年29天
条件桩:
●C1:月份在{M1,M2,M3,M4}中之一
●C2:日期在{D1,D2,D3,D4 ,D5}中之一
●C3:年在{Y1,Y2}中之一
动作桩:
●A1:不可能
●A2:日期增1
●A3:日期复位(置1)
●A4:月份增1
●A5:月份复位(置1)
●A6:年增1。
第三章 黑盒测试

无效等价类
无效等价类是指对程序规格说明, 是不合理或无意义的输入数据所构成的 集合。 利用无效等价类,可以检查程序功 能和性能的实现是 否有不符合规格说 明要求的地方。 对于具体的问题,无效等价类至少应有 一个,也可能有多个。
等价类划分
根据已列出的等价类表,按以下步骤确 定测试用例: 1)为每个等价类规定一个唯一的编号。 2) 设计一个新的测试用例,尽可能多地覆盖 尚未被覆盖的有效等价类,重复这一步,直 到测试用例覆盖了所有的有效等价类。 3) 设计一个新的测试用例,使其覆盖并且只 覆盖一个还没有被覆盖的无效等价类。重复 这一步,直至测试用例覆盖了所有的无效等 价类。
对闰年问题 给予更多的注意
标准等价类测试用例:
测试用例
Test1 Test2 Test3 Test4
Month
4 5 2 4
Day
15 29 30 31
Year
2000 1996 2002 2000
预期输出
4/16/2000 5/30/1996 2/31/2002(不可能的日期) 5/1/2000(不可能的输入日期)
健壮性等价类测试用例
等价类划分测试举例
1. 三角形问题的等价类测试用例
(1)传统等价类划分测试用例设计
在三角形问题中,输入条件要求:
● 整数; ● 三个数; ● 取值在1到100之间
仔细分析三角形问题,可得出其等价类表。
1
三角形问题的等价类
号码 无效等价类 号码
有效等价类
整数
1
一边为非整数 二边为非整数 三边均为非整数
因此,变量x1和x2,的无效值分别为: x1<a,x1>d 无效等价类 和 x2<e,x2>g
黑盒测试方法习题及答案

//模板说明//凡是用//开头的行都是注释行,不会作为试题内容导入到题库中//每个试题间用空行隔开//试题的开头行是题干,前面不能有注释行并列在上面,否则这个试题都无效;如要注释则在注释后再加一空行隔开/题干、内容、答案、分数、难度、试题分类和题型是一个试题必须项,其它的都是可选的,可选的属性可以不写//试题开头可以有序号,格式为"序号.", 后接题干内容;也可以不写序号,系统会自动加上序号以便区分试题//作为格式用的符号如":","."是不分半角全角的,半角全角都有效//可选项直接在题干后以字母和点开头,如A.、B.并且要求大写。
//编号可以不要。
没有编号是新增,有编号则是修改现有试题,例子中给出的都没有给出编号//可用的题型有:单选题、多选题、判断题、填空题、问答题、组合题、解答题//解答题需要给出操作题类型,如操作题类型:Word//填空题的空位处用三个或三个以上的"_",即"___"来表示,用"|"来分隔多个空的答案,如果一个空有多个标准答案请用"&"隔开//答题时间格式为00:00:00,即 "小时:分钟:秒"//可用的状态有:正常、禁用,如果没有,则默认为正常//可用的操作题类型有:Word、Excel、PowerPoint、Visio,默认为Word//如果试题内容里有换行,则必需要在这段内容前后分别用”{回车换行....回车换行}”括起来。
//如果试题内容中包含有'{'或'}',请用'\'把它们转义为: '\{'或'\}'。
//如果试题内容中包括有'<'或'>',表示为尖号时请分别用'< '、'> '替换;表示为大于或小于时,请用全角格式下的'<'或'>'来表示;表示为标签时,请'<'与'>'对称使用。
黑盒测试——精选推荐

⿊盒测试⿊盒测试⼀第⼀课1. 实验⽬的理解墨盒测试的基本⽅法,掌握等价类划分法、边界值分析等测试⽤例的设计⽅法。
2.实验内容(1) 等价类划分⽅法1) 三⾓形问题等价类划分设计测试⽤例2) NextDate问题,对它的输⼊进⾏分析,划分等价类,然后根据等价类设计测试⽤例。
(2) 边界值和因果图1)NextDate问题⽤边界值分析法设计测试⽤例分析NextDate问题中的逻辑,⽤边界值分析法的思想设计测试⽤例。
2) 有⼀个处理单价为5⾓钱的饮料的⾃动售货机软件测试⽤例的设计。
其规格说明如下:若投⼊5⾓钱或1元钱的硬币,押下[橙汁]或[啤酒]的按钮,则相应的饮料酒送出来。
若售货机没有零钱找,则⼀个显⽰[零钱找完]的红灯亮,这时再投⼊1元硬币并押下按钮后,饮料不送出来⽽且1元硬币也退出来;若有零钱找,则显⽰[零钱找完]的红灯灭,在送出饮料的同时退还5⾓硬币。
⽤因果图法对⾃动售货机设计测试⽤例。
要求:(1) 1)必做(1) 2)与(2)1)2)选做其⼀3.实验准备(1)主流PC机⼀套,要求安装windows操作系统、Virtul Studio6.0、C++Test、java等⼯具;(1)理解等价类划分法、边界值分析法的思想,划分依据;(2)熟悉上述⽅法测试⽤例设计的理论4.实验步骤(1)三⾓形问题1) if (!(a+b<=c||a+c<=b||b+c<=a)&&(a>=1&&a<=100)&&(b>=1&&b<=100)&&(c>=1&&c<=100)) {if (a==b && a==c)MessageBox("等边三⾓形");else if (a==b || a==c || b==c)MessageBox("等腰三⾓形");elseM essageBox("⼀般三⾓形");}else {if(a<1||a>100)MessageBox("a不在范围内,不满⾜条件1,不能构成三⾓形");else if(b<1||b>100)MessageBox("b不在范围内,不满⾜条件2,不能构成三⾓形"); else if(c<1||c>100)MessageBox("c不在范围内,不满⾜条件3,不能构成三⾓形"); else if(a>=b+c)MessageBox("不满⾜aelse if(b>=a+c)MessageBox("不满⾜belse if(c>=b+a)MessageBox("不满⾜c}M essageBox("判断结束!");}2) 实验的输⼊和输出样式3) 测试⽤例设计⽤等价类分析法设计测试⽤例,按照下列步骤进⾏:⑴分析题⽬中给出的条件和隐含的输⼊要求,输⼊条件如下:①正整数②三个数③构成⼀般三⾓形④构成等腰三⾓形⑤构成等边三⾓形⑥不能构成三⾓形⑵根据输⼊条件的要求划分等价类,列出等价类表并编号,如下表:⑶设计测试⽤例,覆盖上表中的等价类,如下表:注:提⽰1(输⼊不符合要求)提⽰2(请输⼊数据)(2)(2) (2) NextDate问题⽤边界值分析法设计测试⽤例1)对于NextDate问题,分析它的输⼊限制;NextDate是⼀个有三个变量(⽉份、⽇期和年)的函数。
NextData函数

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)分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采取的操作(即列出所有的动作桩)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NextDate函数黑盒测试
1测试程序源代码
#include <iostream>
using namespace std;
void NextDate(int year,int month,int day);
void main()
{
int year=0,month=0,day=0;
NextDate(year,month,day);
}
void NextDate(int year,int month,int day)
{
cout<<"请输入年份:"<<endl;
cin>>year;
while(!(year>=1811 && year<=2013))
{
cout<<"年份超过界限,请重新输入"<<endl;
cin>>year;
}
cout<<"请输入月份:"<<endl;
cin>>month;
while (month>12||month<1)
{
cout<<"月份输入有误,请重新输入"<<endl;
cin>>month;
}
cout<<"请输入日期:"<<endl;
cin>>day;
while (day>31||day<1)
{
cout<<"日期输入有误,请重新输入"<<endl;
cin>>day;
}
if((year%4==0 && year%100!=0) || (year%400==0)) //检查闰年;
{
int i=0;
i=day-29;
while(month==2&&i>0)
{
cout<<"本月是闰月,请在1-29之间从新输入日期"<<endl;
cin>>day;
}
if(month==2&&day==29)
{
month=3;
day=1;
}
else day++;
}
else day++;
//月底计算;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
if (day==32)
{
month++;
day=1;
cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;
}
break;
case 2:
if(day==29)
{
month=3;
day=1;
cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;
}
break;
case 4:
case 6:
case 9:
case 11:
if(day==31)
{
month++;
day=1;
cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;
}
break;
case 12:
if(day==32)
{
year++;
month=1;
day=1;
cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;
}
break;
}
cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;
}
2测试用例设计。