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函数测试用例详解
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函数黑盒测试设计测试用例
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_黑盒测试 (下)
举例:维修机器问题(续)
(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 函数的黑盒测试一、实验目的:掌握黑盒测试中的决策表测试法,并对被测程序设计测试用例。
二、实验环境操作系统: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 年以上
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)分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采取的操作(即列出所有的动作桩)。
软件测试实验报告(测试用例 代码 截图)
软件测试实验报告(测试用例代码截图)计算机软件测试技术实验报告系别电子信息系专业计算机科学与技术班级学号姓名指导教师万聪2010年12月19月实验一黑盒测试用例设计一(实验内容:1( 三角形问题的等价类测试和边界值分析测试2( NextDate()函数决策表法测试二(实验要求:给出测试用例和测试结果三(实验步骤及结果:3.1(三角形)实验代码(c)#include<stdio.h> #include<stdlib.h>int a=0,b=0,c=0;void shuru();void panduan(int a1,int b1,int c1);void main(){char se;shuru();panduan(a,b,c);while(1){printf("是否要继续y or n :");scanf("%c",&se);if(se=='\n') scanf("%c",&se);switch(se){case 'y':shuru();panduan(a,b,c);break;case 'n':return;}}}void shuru(){printf("Please enter 三角形三边 (a,b,c)\n"); scanf("%d,%d,%d",&a,&b,&c);while((a<1||a>100)||(b<1||b>100)||(c<1||c>100)){if(a==0||b==0||c==0) printf("边长不能为0\n");else if(a<0||b<0||c<0) printf("边长不能为负\n");else printf("Please enter 1-100之间的整数\n");scanf("%d,%d,%d",&a,&b,&c);}}void panduan(int a1,int b1,int c1) {int m1=a1+b1;int m2=a1+c1;int m3=b1+c1;if(a1>=m3||b1>=m2||c1>=m1) printf("非三角形\n");else if(a1!=b1&&a1!=c1&&b1!=c1) printf("一般三角形\n");else if((a1==b1&&b1!=c1)||(a1==c1&&a1!=b1)||(c1==b1&&a1!=c1)) printf("等腰三角形\n");else if(a1==b1&&b1==c1) printf("等边三角形\n"); }3.2测试用例和结果(反映在图中)测试用例输入a,b,c 输出1 4,5,6 一般三角形2 2,3,6 非三角形3 4,4,7 等腰三角形4 6,6,6 等边三角形5 4,0,6 边长不能为06 4,-5,6 边长不能为负7 101,101,101 请输入1-100之间的整数图形结果:3.3(NextDate())实验代码(c)#include<stdio.h>#include<stdlib.h>#include<time.h>void main(){int year;int month,day;int leap;//标志是闰年还是平年,为1时是闰年,为2时是平年time_t t;//本来以下是用来判断格式输入是否正确的,但是结果不理想struct tm stm;//Awhile(1){//循环测试printf("请输入年(yyyy)/月(mm)/日(dd)\n");scanf("%d/%d/%d",&stm.tm_year,&stm.tm_mon,&stm.tm_mday);//B year=stm.tm_year;month=stm.tm_mon;day=stm.tm_mday;//Ct=mktime(&stm);//Dprintf("*****输出结果*****\n");if(t!=-1)//E有问题,不管输入格式是什么,t永远是-1{printf("输入的日期时间格式出错!\n");continue;}if(year%4==0)//年份判断{if(year%100==0){if(year%400==0){leap=1;printf("%ld年%d月%d日是闰年\n",year,month,day);}else{leap=2;printf("%ld年%d月%d日是平年\n",year,month,day); }}else{leap=1;printf("%ld年%d月%d日是闰年\n",year,month,day); }}else{leap=2;printf("%ld年%d月%d日是平年\n",year,month,day); }if(month==2){if(leap==1){printf("该月有29天\n");if(day>29){printf("对不起!您输入的日期超出该月范围\n"); continue;}else if(day==29){month=month+1;day=1;}else day=day+1;}if(leap==2){printf("该月有28天\n");if(day>28){printf("对不起!您输入的日期超出该月范围\n"); continue;}else if(day==28){month=month+1;day=1;}else day=day+1;}}else if(month==4||month==6||month==9||month==11){printf("该月有30天\n");if(day>30){printf("对不起!您输入的日期超出该月范围\n"); continue;}else if(day==30){month=month+1;day=1;}else day=day+1;}else{printf("该月有31天\n");if(day>31){printf("对不起~超出该月范围\n");continue;}else if(day==31){if(month==12&&day==31){year=year+1;month=1;day=1;}else{month=month+1;day=1;}}else day=day+1;}printf("NEXT日期:%ld年%d月%d日\n",year,month,day); }}3.4测试用例和结果(反映在图中)决策表测试用例 month day year 预期输出Test1~3 6 16 2001 2001/6/17Test4 6 30 2001 2001/7/1Test5 6 31 2001 对不起~超出该月范围Test6~9 1 17 2010 2010/1/18Test10 1 31 2013 2013/2/1Test 11~14 12 31 2010 2010/1/1Test15 2 28 2004 2004/2/29Test16 2 29 2004 2004/3/1Test17 2 28 2001 2001/3/1Test18 2 30 2001 对不起~超出该月范围界面效果:实验二白盒测试用例设计一(实验内容:求解一元二次方程程序控制流测试二(实验要求:给出控制流测试用例和测试结果三(实验步骤及结果:3.1实验代码(c)#include<stdio.h>#include<stdlib.h>#include<math.h>void main(){float a,b,c,x,y;float mid,x1,x2;y=a*x*x+b*x+c;printf("*************************************\n"); printf("二元一次方程的求解问题\n");printf("**************************************\n"); while(1){printf("请输入y方程中参数a,b,c: \n");scanf("%f,%f,%f",&a,&b,&c);if(a!=0){mid=b*b-4*a*c;if(mid>0){x1=(-b+sqrt(mid))/(2*a);x1=(-b-sqrt(mid))/(2*a);printf("该方程有两个解:x1=%f,x2=%f\n",x1,x2);//printf("y=(%f*%f*%f)+(%f*%f)+(%f)\n",a,x1,x1,b,x1,c);//printf("y=(%f*%f*%f)+(%f*%f)+(%f)\n",a,x2,x2,b,x1,c);}if(mid==0){x1=-b/(2*a);x2=x1;printf("该方程两个解相同:x1=x2=%f\n",x2);printf("y=(%f*%f*%f)+(%f*%f)+(%f)\n",a,x1,x1,b,x1,c);}if(mid<0){printf("该方程没有解\n");}}else printf("该方程不是二元方程,可能是一元一次方程\n");}}3.2测试用例和结果(反映在图中)测试用例 x,y,z a!=0 mid>0 mid==0 输出结果1 2,5,3 真真假该方程有两个解2 1,2,1 真假真该方程有两个相同解3 4,2,1 真假假该方程没有解4 0,2,1 假该方程不是二元方程,可能是一元一次方程图形结果:实验三基于缺陷模式的软件测试一(实验内容:C++语言、Java语言缺陷模式测试 (2学时) 二(实验要求:给出测试用例和测试结果三(实验步骤及结果:3.1实验代码(java)package hl.fengye.tt;public class base{//没必要的方法调用,System.exit()是没有必要的,应该抛出异常public String square(String x){try{int y=Integer.parseInt(x.toLowerCase());return y*y+"";}catch(NumberFormatException e){e.printStackTrace();System.exit(1);return "";}}//显示垃圾回收(缺陷)public String multiply(String x,int n){if(n<=0) return "";StringBuffer buf=new StringBuffer();while(n-->0){buf.append(x);}return buf.toString();}public String multiplyGc(String x,int n){ System.gc();//显示运行结果return multiply(x,n);}//字符串的低效操作(连接)public void connection(){String filed="东北大学秦皇岛分校 4080420 黄磊"; //this is badString s="";//System.out.print(s);//Startfor(int i=0;i<filed.length();++i){s=s+filed.charAt(i);//追加}System.out.print(s+'\n');//Stop1}public void connection2(){String filed="东北大学秦皇岛分校 4080420 黄磊";//this is betterString s="";StringBuffer buf=new StringBuffer();for(int i=0;i<filed.length();++i){buf.append(filed.charAt(i));}String ss=buf.toString();System.out.print(ss+'\n');//Stop2}public static void main(String[] args) {String h;base pp=new base();h=pp.square("100");System.out.print(h+"\n");String s="hello word!";h=pp.multiply(s, 2);//System.out.print(h+"\n");h=pp.multiplyGc(s,2);System.out.print(h+"\n");//以纳秒为单位计算的:long startTime = System.nanoTime();//获取当前时间pp.connection();long endTime = System.nanoTime();System.out.println("程序运行时间:"+(endTime-startTime)+"ms");long startTime2 = System.nanoTime();//获取当前时间pp.connection2();long endTime2 = System.nanoTime();System.out.println("程序运行时间:"+(endTime2-startTime2)+"ms"); }}3.2测试用例和结果(反映在图中)显示垃圾回收部分:测试用例输入String s ,int n 输出结果1 hello word !,2 hello word! hello word!2 ni hao ,1 ni hao3 love you ,0 (null)图形显示:低效字符串操作部分:测试用例输入String s 输出时间bad(ms) good(ms)1 hl 441694 271302 hello word 477785 378673 东北大学秦皇岛分校 4080420 黄磊 456245 392444 (空格) 313135 51604部分图形展示:实验四系统测试一(实验内容:数据库应用系统性能测试二(实验要求:给出响应时间、吞吐量测试用例和结果三(实验步骤及结果:3.1实验代码(java)import java.sql.Connection;import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement;public class huanglei {/*** @param args* @throws Exception*/public void execute() throws Exception{Class.forName("com.mysql.jdbc.Driver");Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");con.setAutoCommit(false);Statement st = con.createStatement();//st.execute("create table city (name varchar(20) not null)");for(int i = 100;i>0;i--){String str = "insert into city values('city"+i+"','huangeli','hebei')";System.out.println(str);st.addBatch(str);}//rs='select * from city';st.executeBatch();mit();}public static void main(String[] args) {// TODO Auto-generated method stubtry {new Luncher().execute();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}3.2测试用例和结果(反映在图中)测试用例线程数循环次数响应时间(seconds)吞吐结果1 100 10 1 592.002/minute2 50 5 1 293.232/minute1 100 102 586.61/minute图形展示:实验总结:通过这些课时的实验,了解了一些软件测试的基本含义,学会了一些基本测试步骤的设计和用例的构造。
软件测试-NextDate函数
2
15 9 9
30
9 35 9
Page 11
2007
2007 2007 2100
不可能的输入日期
变量month无效 变量day无效 变量year无效 制作者:
边界值分析法
边界值分析法设计测试用例
在NextDate函数中,规定了变量month、day、year的相应 取值范围。在上面等价类法设计测试用例中已经提过,具 体如下: M1={month:1≤month≤12} D1={day:1≤day≤31} Y1={year:1912≤year≤2050}
决策表共有22条规则: 第1~5条规则解决有30天的月份; 第6~10条规则解决有31天的月份(除12月份以外); 第11~15条规则解决12月份; 第16~22条规则解决2月份和闰年的问题。 不可能规则也在决策表中列出,比如第5条规则中在有30天的 月份中也考虑了31日。
制作者:
Page 16
决策表法
NextDate函数的用例设计方法
主讲:黄老师
授课班级:软件设计班
制作者:
NextDate函数的用例设计方法
黑盒测试
等价类划分法
边界值分析法
因果图法 决策表法
制作者:
Page 2
等价类划分法——以输入域划分等价类
NextDate 函数包含三个变量:month(月份)、day(日期) 和 year(年),函数的输出为输入日期后一天的日期。 例如, 输入为 2007年9月 9日,则函数的输出为 2007年9月10日 。 要求输入变量 month 、 day 和 year 均为整数值,并且满足 下列条件: (1)1≤month≤12 (2)1≤day≤31 (3)1912≤year≤2050 此函数的主要特点是输入变量之间的逻辑关系比较复杂。复杂 性的来源有两个:一个是输入域的复杂性,另一个是指闰年 的规则。例如变量year和变量month取不同的值,对应的变 量day会有不同的取值范围,day值的范围可能是1~30或1~ 31,也可能是1~28或1~29。
软件测试-7黑盒测试决策表法
√
√ √√
√√ √ √
√
√
√
√
√
选项 12 13 14 15 16 17 18 19 20 21 22
规则
条件:
c1:month
M3 M3 M3 M3 M4 M4 M4 M4 M4 M4 M4
c2:day c3:year
D2 D3 D4 D5 D1 D2 D2 D3 D3 D4 D5 - - - - - Y1 Y2 Y1 Y2 - -
动作:
a1:不可能
√√√
a2:day加1
√√√
√√
a3:day复位
√
√√
a4:month加1
√√
a5:month复位
√
a6:year加1
√
简化NextDate函数决策表
规则1、2、3都涉及有30天的月份day类 D1、D2和D3,并且它们的动作项都是 day加1,因此可以将规则1、2、3合并。
类似地,有31天的月份day类D1、D2、 D3和D4也可合并,2月的D4和D5也可合 并。
不可能 17/8/2004 1/9/2001 17/12/2004 1/1/2002 17/2/2004 29/2/2004 1/3/2001 1/3/2001
不可能 不可能
决策表测试的适用范围
if-else逻辑突出;
• 恒等: IF A THEN B • 非: IF (NOT A) THEN B • 或: IF (A OR B) THEN C • 与:IF (A AND B) THEN C
后,不必检验别的规则. 如果某一规则的条件要执行多个操作任务,这些操
作的执行顺序无关紧要.
2024/6/22
24
NextDate函数测试用例
1.测试程序源代码#include"stdafx。
h"#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>=1911 && 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;}while(month==4&&day==31||month==6&&day==31||month==9&&day==31||month==11&&day==31) {cout〈<”小月没有31号”〈<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;}白盒测试7DD-路径情况1. 由一个节点组成,内度=0情况2。
黑盒测试——等价类划分法
实验二: 黑盒测试——等价类划分法【实验环境】Windows 10 操作系统,C,C++,C#、Java或Python语言开发环境(IDE)。
【实验类型】设计型【实验目的】1.认识黑盒测试方法中等价类划分测试方法原理2.掌握黑盒测试方法中等价类划分测试方法过程【实验内容】【实验材料】1.三角形问题问题描述:三角形问题接受三个整数,a、b和c作为输入,用作三角形的边。
程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。
作为输入:三角形的三条边必须满足如下条件:C1:1<=a<=100C2:1<=b<=100C3:1<=c<=100C4:a<b+cC5:b<a+cC6:c<a+b2.NextDate函数问题描述:NextDate是一个由三个变量(月份、日期和年份)的函数。
函数返回输入日期后边的那个日期。
作为输入:变量月份、日期和年都具有整数值,满足以下条件。
C1:1<=月份<=12C2:1<=日期<=31C3:1912<=年<=20503.佣金问题问题描述:前亚利桑那洲境内的一位步枪销售商销售密苏里州制造商制造的步枪机(lock)、枪托(stock)和枪管(barrel)。
枪机卖45美元,枪托卖30美元,枪管卖25美元。
销售商每月至少要售出一支完整的步枪,且生产限额是大多数销售商在一个月内可销售70个枪机、80个枪托和90个枪管。
每访问一个镇子后,销售商都给密苏里州步枪制造商发出一份很短的电报,通知几个枪机被售出。
这样步枪制造商就知道当月的销售情况,并计算销售商的佣金如下:不到(含)1000美元的部分为10%;1000(不含)~1800(含)美元的部分为15%;超过1800美元的部分为20%。
佣金程序生成月份销售报告,汇总售出的枪机、枪托和枪管总数,销售商的总销售额以及佣金。
NextDate测试报告案例
2001.2.16
2001.11.16
2001.12.16
Mouth超出边界
14
15
16
17
18
19
20
21
2001
2001
2001
2001
2001
2001
2001
2001
6
6
6
6
6
6
6
6
-1
0
1
2
29
30
31
32
Day超出边界
Day超出边界
2001.6.2
2001.6.3
2001.6.30
No such a year has -1 months.
Press any key to continue
与预期结果一致
8
Please input date (year month day):2001 0 15
No such a year has months.
Press any key to continue
Press any key to continue
与预期结果一致
14
Please input date (year month day):2001 6 -1
The month 2001.6 have no -1 days.
Press any key to continue
与预期结果一致
15
Please input date (year month day):2001 6 0
Press any key to continue
与预期结果一致
6
Please input date (year month day):2051 6 15
黑盒测试用例设计方法总结
测试用例的设计方法(全)等价类划分方法:一.方法简介1.定义是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
该方法是一种重要的,常用的黑盒测试用例设计方法。
2.划分等价类:等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。
等价类划分可有两种不同的情况:有效等价类和无效等价类。
1)有效等价类是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。
利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
2)无效等价类与有效等价类的定义恰巧相反。
无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。
对于具体的问题,无效等价类至少应有一个,也可能有多个。
设计测试用例时,要同时考虑这两种等价类。
因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。
3.划分等价类的标准:1)完备测试、避免冗余;2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;3)并是整个集合:完备性;4)子集互不相交:保证一种形式的无冗余性;5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径"。
4.划分等价类的方法1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
如:输入值是学生成绩,范围是0~100;2)在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类;3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
第3章黑盒测试方法2-边界值分析法-文档资料
数组元素的第一个和最后一个
循环的第 0 次、第 1 次和倒数第 2 次、最后一次
边界值分析法的原则
1)如果输入条件规定了值的范围,则应取刚达到这 个范围的边界的值,以及刚刚超越这个范围边界的 值作为测试输入数据。 例如,如果程序的规格说明中规定:"重量在10公 斤至50公斤范围内的邮件,其邮费计算公式为 ……"。作为测试用例,我们应取10及50,还应取 10.01,49.99,9.99及50.01等。
有两个变量x、y的程序的输入域
Y
c
d a b
X
有两个变量x、y的程序的输入域
<xnom,ymin>;
有两个输入变量的程序 F的边界值分 <xmin+,ynom>; <xnom,ymax>; 析(标准性测试)测试用例: <xmax,ynom>;
<xnom,ymin+>;
<xmin,ynom>;
<xnom,ymax->;
1
2 11 12 14
15
15 15 15 15
2001
2001 2001 2001 2001
2001.1.16
2001.2.16 2001.11.16 2001.12.16 month超出[1,12]
常见的边界值
对16-bit 的整数而言 32767 和 -32768 是边界
屏幕上光标在最左上、最右下位置 报表的第一行和最后一行
<xmin,ynom>;
<xnom,ymax>;
<xnom,ymax->; <xnom,ymax+>
sxy6-第14章黑盒测试方法
计算机软件测试
佣金问题的输入域等价类划分
输入变量有效类: L1 = {枪机:1≤枪机≤70} L2 = {枪机:枪机 = -1} S1 = {枪托:1≤枪托≤80} B1 = {枪管:1≤枪管≤90}
输入变量无效类: L3 = {枪机:枪机=0或枪机<-1} L4 = {枪机:枪机>70} S2 = {枪托:枪托<1} S3 = {枪托:枪托>80} B2 = {枪管:枪管<1} B3 = {枪管:枪管>90}
R4={<a,b,c>:三条边a、b和c不构成三角形}
第二步:选取测试用例
测试用例 WN1 WN2 WN3 WN4 a 5 2 3 4 b 5 2 4 1 c 5 3 5 2 预期输出 等边三角形 等腰三角形 三角形 非三角形
计算机软件测试
三角形问题的弱健壮等价类测试用例
改进版本:边长范围在1~200
三角形问题的另一种等价类划分
D1 = {<a,b,c>: D2 = {<a,b,c>: D3 = {<a,b,c>: D4 = {<a,b,c>: D5 = {<a,b,c>: a a a c b = = = = ≠ b = c } b,a≠c } c,a≠b } b,a≠c } a≠c}
D6 = {<a,b,c>:a≥b+c } D7 = {<a,b,c>:b≥a+c } D8 = {<a,b,c>:c≥a+b }
计算机软件测试
佣金问题
前亚利桑那州境内的一位步枪销售商销售密苏里州制 造商制造的步枪机lock、枪托stock和枪管barrel。枪机 卖45美元,枪托卖30美元,枪管卖25美元。 销售商每月至少要售出一支完整的步枪,且生产限额 是大多数销售商在一个月内可销售70个枪机、80个枪托和 90个枪管。每访问一个镇子之后,销售商都给密苏里州步 枪制造商发出电报,说明在该镇售出的枪机、枪托和枪管 数量。到了月末,销售商要发出一封特殊的电报,通知-1 个枪机被售出,这样制造商就知道当月的销售情况。 销售商的佣金如下计算:销售额不到(含)1000美元 的部分为10%,1000(不含)到1800(含)美元的部分为 15%,超过1800美元的部分为20%。佣金程序生成月份销 售报告,汇总售出的枪机、枪托和枪管总数,销售商的总 销售额以及佣金。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四 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、在实验中遇到了困难,经过查资料后得到了解决。