Nextdate 函数的黑盒测试

实验四 Nextdate 函数的黑盒测试
一、实验目的:
掌握黑盒测试中的决策表测试法,并对被测程序设计测试用例。

二、实验环境
操作系统:Windows XP + SP2 /win7
三、实验内容
1、编写一个NextDate函数。

2、掌握黑盒测试中的决策表测试法的基本步骤。

3、使用决策表法设计测试用例,对编写的函数实施测试,总结分析测试结果。

四、实验步骤
1、编写一个NextDate函数,代码如下:
#include <stdio.h>
int chk(int y,int m,int d)
{
if (d<1||d>31) {
return 0;
}
else if (m<1||m>12) {
return 0;
}
else if (y<1912||y>2500) {
return 0;
} return 1;
}
int isy(int y)
{
return (y%4==0&&y%100||y%400);
}
int ilm(int m )
{
return (m==4||m==6||m==9||m==11);
}
int ihm(int m)
{
return (m==1||m==3||m==5||m==7||m==8||m==10||m==12);
}
int main(int argc, char* argv[])
{
int year,month,day;
printf("Year=");
scanf("%d",&year);
printf("Month=");
scanf("%d",&month);
printf("Day=");
scanf("%d",&day);
if (chk(year,month,day)) {
if ((day==28&&month==2&&!isy(year))||(day==29&&month==2&&isy(year))) { day=1;
month=3;
}
e lse i
f (day==30&&ilm(month)||day==31&&ihm(month)) {
day=1;
month++;
}
else day++;
if (month>12) {
month=1;
++year;
}
printf("Next date:%d-%d-%d\n",year,month,day);
}
else printf("日期不合法");
return 0;
2、}根据黑盒测试的决策表法设计测试用例。

动作桩如下:
变量day加1操作;
变量day复位操作;
变量month加1操作;
变量month复位操作;
变量year加1操作;
条件桩如下:
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不是闰年};
3
Test case 16 2 15 2009 2009年2月
16日 2009年2月16日
Test case 17 2 28 2012 2012年2月
29日 2012年2月29日
Test case 18 2 28 2009 2009年3月
1日 2009年2月29日
Test case 19 2 29 201
2
2012年3
月1日
2012年3
月1日
Test case 20 2 29 200
9
不可能的
输入日期
2009年3
月1日
Testcase 21-22 2 30 200
9
不可能的
输入日期
2009年2
月31日
五、实验结果
六、实验总结
1、通过动手实验,对基于决策表法的测试更加了解,理解更加深刻。

2、在实验过程中复习了c语言的知识。

3、在实验中遇到了困难,经过查资料后得到了解决。

合集下载

软件测试-NextDate函数

软件测试-NextDate函数

边界值分析法
输入 测试用例 month Test Case 1 Test Case 2 Test Case 3 Test Case 4 Test Case 5 Test Case 6 Test Case 7 Test Case 8 Test Case 9 Test Case 10 Test Case 11 Test Case 12 Test Case 13 Test Case 14 Test Case 15 Test Case 16 Test Case 17 Test Case 18 Test Case 19 Test Case 20 -1 0 1 2 11 12 13 6 6 6 6 6 6 6 6 6 6 6 6 6 day 15 15 15 15 15 15 15 -1 0 1 2 30 31 32 15 15 15 15 15 15 year 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 1911 1912 1913 2049 2050 2051 month不在1~12中 month不在1~12中 2000年1月16日 2000年2月16日 2000年11月16日 2000年12月16日 month不在1~12中 day不在1~31中 day不在1~31中 2000年6月2日 2000年6月3日 2000年7月1日 不可能的输入日期 day不在1~31中 year不在1912~2050中 1912年6月16日 1913年6月16日 2049年6月16日 2050年6月16日 year不在1912~2050中 期望输出
返回
Test Case 5
Test Case 6 Test Case 7 Test Case 8

软件测试NextDate函数测试用例详解

软件测试NextDate函数测试用例详解
12
15
2007
2007年12月16日
Test Case 15
12
31
2007
2008年1月1日
Test Case 16
2
15
2007
2007年2月16日
Test Case 17
2
28
2000
2000年2月29日
Test Case 18
2
28
2007
2007年3月1日
Test Case 19
2
29
动作:
A1: 不可能
√
√
√
A2: day加1
√
√
√
√
√
A3: day复位
√
√
√
A4: month加1
√
√
A5: month复位
√
A6:year加1
√
决策表法
表5-8 简化的NextDate函数决策表
选项 规则
1, 2, 3
4
5
6, 7, 8, 9
10
11, 12, 13, 14
15
等价类划分法——以输入域划分等价类
等价类划分法——以输入域划分等价类
改进等价类划分测试NextDate函数如表5-5所示。 表5-5 改进等价类划分法测试用例
测试用例
输入
期望输出
month
day
year
Test Case 1
6
30
2007
2007年7月1日
Test Case 2
8
31
2007
2007年9月1日
弱强健等价类测试 弱强健等价类测试中的有效测试用例使用每个有效等价类中的一个值。弱强健等价类测试中的无效测试用例那么只包含一个无效值,其他都是有效值,即含有单缺陷假设。如表5-3所示。

NextDate函数黑盒测试设计测试用例

NextDate函数黑盒测试设计测试用例

N e x t D a t e函数黑盒测试设计测试用例(总4页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--实验一 NextDate函数一、实验目的使用合适的黑盒测试的测试用例设计方法为NextDate函数设计测试用例。

二、实验准备掌握软件测试的内容,熟悉了解常用的黑盒测试的测试用例设计方法,明确不同方法的区别,上网查找其他软件测试的方法。

三、实验性质本实验为设计性实验。

四、实验内容根据实验的目的和我所掌握的黑盒测试的测试用例设计方法,最后我选择用决策表测试法完成了对NextDate函数测试用例的设计。

设计如下:(1)month、day、year的有效等价类:M1:{month:month有30天}M2:{month:month有31天,12月除外}M3:{month:month是12月}M4:{month:month是2月}D1:{day:1≤da y≤27}D2:{day:day=28}D3:{day:day=29}D4:{day:day=30}D5:{day:day=31}Y1:{year:year是闰年} Y2:{year:year不是闰年}(2)根据各种有效的输入情况,程序中可能采取的操作有以下六种:a1:不可能 a2:day加1 a3:day复位a4:month加1 a5:month复位 a6:year加1(3)NextDate函数的决策表表4-1 NextDate函数的决策表(4)简化后的NextDate函数的决策表表4-2简化后的NextDate函数的决策表(5)根据简化后的决策表设计的测试用例表4-3测试用例表。

黑盒测试实验二

黑盒测试实验二

黑盒测试实验二1.NextDate函数的边界值分析测试用例程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12、1≤day≤31、1900≤ year ≤2050。

),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上第二天的日期。

例如,输入为2005年11月30日,则该程序的输出为2005年12月1日。

请用等价类测试和边界测试法设计测试用例。

等价类测试法:有效等价类month、day、year、均为整数值,且1≤month≤12、1≤day≤31、1900≤ year ≤2050。

测试用例为:5 month,10 day,2010 year 预期输出为:5 month,11 day,2010 year 无效等价类1、month、day、year、不为整数值,1≤month≤12、1≤day≤31、1900≤ year ≤2050测试用例为:5.4 month,10 day,2010 year 预期输出为:无效输入2、month、day、year、均为整数值,不满足1≤month≤12、1≤day≤31、1900≤ year ≤2050三个条件中其中一个。

测试用例为:13 month,10 day,2010 year 预期输出为:无效输入边界测试法:测试用例为:1 month,1 day,1900 year 12 month,31 day,2050 year预期输出为:1 month,2 day,1900 year 预期输出为:无效输入0 month,1 day,1900 year 13 month,10 day,1900 year预期输出为:无效输入预期输出为:无效输入5 month,0 day,1902 year 5 month,32 day,1903 year预期输出为:无效输入预期输出为:无效输入7 month,5 day,1899 year 7 month,5 day,2051 year预期输出为:无效输入预期输出为:无效输入实验代码:#include<stdio.h>void con(){int a,b,c;printf("年份:");scanf("%d",&a);printf("月份:");scanf("%d",&b);printf("日:");scanf("%d",&c);if(a>=1900 && a<=2050){if(b>0 && b<=12){if(b==2){if(a%4==0){if(c>0 && c<=29){if(c==29){printf("输入的日期是:%d年%d月%d日\n",a,b,c);c=1;b=b+1;printf("第二天的日期是:%d年%d月%d日\n",a,b,c);}else{printf("输入的日期是:%d年%d月%d日\n",a,b,c);printf("第二天的日期是:%d年%d月%d日\n",a,b,c);}}else{printf("输入的天数不在--29之间!\n");}}if(a%4!=0){if(c>0 && c<=28){if(c==28){printf("输入的日期是:%d年%d月%d日\n",a,b,c);c=1;b=b+1;printf("第二天的日期是:%d年%d月%d日\n",a,b,c);}else{printf("输入的日期是:%d年%d月%d日\n",a,b,c);printf("第二天的日期是:%d年%d月%d日\n",a,b,c);}}else{printf("输入的天数不在--28之间!\n");}}}else{if( b==4 || b==6|| b==9 || b==11){if(c>0 && c<=30){printf("输入的日期是:%d年%d月%d日\n",a,b,c);c=c+1;if(c>30){c=1;b=b+1;printf("第二天的日期是:%d年%d月%d日\n",a,b,c);}else{printf("第二天的日期是:%d年%d月%d日\n",a,b,c);}}else{printf("输入的天数不在--30之间!\n");}}else{if(c>0 && c<=31){printf("输入的日期是:%d年%d月%d日\n",a,b,c);c=c+1;if(c>31){c=1;b=b+1;if(b>12){b=1;a=a+1;if(a>2050){printf("第二天的日期不在到范围之内!\n");}else{printf("第二天的日期是:%d年%d月%d日\n",a,b,c);}}else{printf("第二天的日期是:%d年%d月%d日\n",a,b,c);}}else{printf("第二天的日期是:%d年%d月%d日\n",a,b,c);}}else{printf("输入的天数不在--31之间!\n");}}}}else{printf("输入的月份不在--12之间!\n");}}else{printf("输入的年份不在到范围之内!\n");}}void main(){con();printf("是否继续(Y|N)?");char x;scanf("%s",&x);if(x=='Y' || x=='y')printf("\n");main();}。

软件测试2_黑盒测试 (下)

软件测试2_黑盒测试 (下)
功率大于50马力吗 维修记录不全吗 运行超过10年吗

举例:维修机器问题(续)
(3)填入条件项;
1 2
Y Y N
3
Y N Y
4
Y N N
5
N Y Y
6
N Y N
7
N N Y
8
N N N
功率大于50马吗?
Y Y Y
条 维修记录不全吗? 件
运行超过10年吗?
动 进行优先处理 作 作其他处理

利用集合的笛卡尔积计算条件项的取值
举例:维修机器问题(续)
(4)填入动作项;
1 2 Y Y N 3 Y N Y 4 Y N N 5 N Y Y 6 N Y N 7 N N Y 8 N N N
功率大于50马力吗?
Y Y Y
条 维修记录不全吗? 件 动 进行优先处理 作 作其他处理

运行超过10年吗?








1,2合并,5,7合并,6,8合并
举例:维修机器问题(续)
(5)化简;
(1) 功率大于50马力吗? Y Y — (2) Y N Y (3) Y N N (4) N — Y (5) N — N
条 维修记录不全吗? 件
动 作 作其他处理
进行优先处理
运行超过10年吗?



基于判定表的测试
根据输入输出绘制 判定表;
设计测试用例覆盖 判定表中每条规则;
条件桩(Condition Stub )
列出问题的所有条件
动作桩(Action Stub )
列出可能采取的操作
条件项(Condition Entity)
列出条件桩的取值

Nextdate 函数的黑盒测试

Nextdate 函数的黑盒测试

实验四 Nextdate 函数的黑盒测试一、实验目的:掌握黑盒测试中的决策表测试法,并对被测程序设计测试用例。

二、实验环境操作系统:Windows XP + SP2 /win7三、实验内容1、编写一个NextDate函数。

2、掌握黑盒测试中的决策表测试法的基本步骤。

3、使用决策表法设计测试用例,对编写的函数实施测试,总结分析测试结果。

四、实验步骤1、编写一个NextDate函数,代码如下:#include <stdio.h>int chk(int y,int m,int d){if (d<1||d>31) {return 0;}else if (m<1||m>12) {return 0;}else if (y<1912||y>2500) {return 0;} return 1;}int isy(int y){return (y%4==0&&y%100||y%400);}int ilm(int m ){return (m==4||m==6||m==9||m==11);}int ihm(int m){return (m==1||m==3||m==5||m==7||m==8||m==10||m==12);}int main(int argc, char* argv[]){int year,month,day;printf("Year=");scanf("%d",&year);printf("Month=");scanf("%d",&month);printf("Day=");scanf("%d",&day);if (chk(year,month,day)) {if ((day==28&&month==2&&!isy(year))||(day==29&&month==2&&isy(year))) { day=1;month=3;}e lse if (day==30&&ilm(month)||day==31&&ihm(month)) {day=1;month++;}else day++;if (month>12) {month=1;++year;}printf("Next date:%d-%d-%d\n",year,month,day);}else printf("日期不合法");return 0;2、}根据黑盒测试的决策表法设计测试用例。

黑盒测试——精选推荐

⿊盒测试⿊盒测试⼀第⼀课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是⼀个有三个变量(⽉份、⽇期和年)的函数。

使用等价类划分法为NextDate函数设计测试用例

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;}说明:写在程序段某些行开头数字(①~⑧)是对应语句的编号。

next-date-系统测试报告

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。

习题解答1_v2.0


4
(
13
123
23 233 拒绝(无效) 15
4
45
(2)上述方法设计出的测试用例已经相当完善,无须补充。 8、有一个处理单价为 5 角钱的饮料的自动售货机,相应规格说明如下:
若投入 5 角钱或 1 元钱的硬币,按下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就 送出来。(每次只投入一个硬币,只押下一种饮料的按钮)
15
a.首先为等价类表中的每一 个等价类分别规定一个唯一 的编号。 b.设计一个新的测试用例,使 它能够尽量覆盖尚未覆盖的 有效等价类。重复这个步骤, 直到所有的有效等价类均被 测试用例所覆盖。
@
c.设计一个新的测试用例, 使它仅覆盖一个尚未覆盖的 无效等价类。重复这一步骤, 直到所有的无效等价类均被 测试用例所覆盖。
2060
9
2030 14 5 无法推算
10
[
2 30 无法推算
2000
2、找零钱最佳组合(P47) 假设商店货品价格(R) 都不大于 100 元(且为整数),若顾客付款(P)在 100 元内,现有
一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。 假定此商 店的货币面值只包括:50 元(N50)、10 元(N10)、 5 元(N5)、1 元(N1) 四种。
“……对于功率大于 50 马力的机器或者维修记录不全的或已经运行 10 年以上的 机器应予以优先的维修处理……”。
这里假定“维修记录不全”和“优先维修处理”有严格的定义。 请建立该需求的决策表,并绘制出化简(合并规则)后的决策表。
解答: 根据题目意思,得到本题有三个条件: C1:功率大于 50 马力 C2:维修记录不全 C3:已经运行 10 年以上
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档