软件测试 决策表
软件测试设计
软件测试设计设计测试用例即时贴程序程序功能便签的数量最多为50个标题字数最多40字节便签正文字数最多200个年份只能设置在1900-2100之间测试用例为实施测试面向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定集合解决要测什么,怎么测和如何衡量的问题测试用例的目的:执行测试,发现缺陷重复执行测试,重现缺陷管理测试过程回归测试、验证缺陷是否修复优点:使测试更加方便的执行;提高测试效率;节省测试时间;使测试更能按时间计划进行;使测试过程更方便管理准备工作收集资料需求文档设计文档遗留系统的相关文档与相关人员讨论探索性测试探索性测试与经过深思熟虑的、计划好的的测试过程有所不同,它依靠的是测试人员的知识水平和创造力。
可用于重现和分析缺陷、研究缺陷和程序其他模块的相关性是测试用例有利的补充具体问题具体分析测试用例的内容项目名称(版本)——模块名称——测试功能项项目人员——测试时间测试目的——预置条件——其他参考信息测试用例编号——相关用例用例说明——输入条件——执行方法预期结果测试结果缺陷编号常用的测试用例设计方法黑盒测试&白盒测试黑盒测试是对需求的所有输入条件进行测试定义:被称为功能测试或数据驱动测试,在测试时,把被测试程序视为一个黑盒,在不考虑程序内部结构和内部特性的情况下进行测试黑盒测试方法等价类划分分类每类中选取几个数值等价类划分步骤:划分等价类:不考虑程序的内部结构测试人员要对需求规格说明书的功能需求进行细致分析然后把程序的输入域划分成若干部分从每个部分中选取少数代表性数据当作测试用例,经过这种划分后,每一类的代表性数据在测试中的作用都等价于这一类的其他值。
建立等价类表确定等价类细化等价类划分等价类划分分为有效等价类和无效等价类合理的有意义的输入数据构成的集合就是有效等价类不合理的、无意义的输入数据构成的集合。
用来检查程序中功能的实现是否不符合规格说明要求。
就是无效等价类。
决策表
0
0
━
1
0
━
━
0
P
P
P
练习
根据输入3条边(a,b,c)边长的值来判 断是否构成一个构成一个三角形,如果 是三角形,继续判断是一般三角形、等 腰三角形还是等边三角形。假定a、b、c 只能输入大于零的数,不考虑a、b、c为 负数和取零的情况。
试构造其决策表
NextDate函数的决策表测试用例设计
根据所执行的操作,可列出NextDate函数的动 作桩:
a1: 不可能; a2: day加1; a3: day复位; a4: month加1; a5: month复位; a6: year加1
考虑到决策表的规模,条件使用month、day、 year变量的等价类,在以下等价类集合上建立决策 表: 对于month变量的取值:
解法如下:
确定规则的个数。对于本题有2个条件(销售、库存),每 个条件可以有两个取值,故有22=4种规则。
列出所有的条件桩和动作桩。
填入条件项。
填入动作项,得到初始决策表
规则
选项
1
2
3
4
条件:
C1:销售好?
T
T
F
F
C2:库存低?
T
F
T
F
动作:
a1:增加生产
√
a2:继续生产
√
√
a3:停止生产
适用于使用决策表设计测试用例的条件
规格说明以决策表形式给出,或较容易转换为决 策表。
条件的排列顺序不会也不应影响执行的操作。 规则的排列顺序不会也不应影响执行的操作。
当某一规则的条件已经满足,并确定要执行的操 作后,不必检验别的规则。
软件测试中的有限状态机与决策表
软件测试中的有限状态机与决策表在软件测试领域,有限状态机(Finite State Machine,简称FSM)和决策表(Decision Table)是常用的测试工具和技术。
它们能够帮助测试人员更好地设计和执行测试用例,提高测试效率和测试覆盖率。
本文将介绍有限状态机和决策表,并探讨它们在软件测试中的应用。
一、有限状态机(FSM)有限状态机是一种数学模型,用于描述系统在不同状态之间转换的行为。
它由一组状态、一组输入和一组转换规则组成。
在软件测试中,有限状态机可以帮助测试人员把系统的行为分解成一系列离散的状态,并定义系统在不同状态下接受的输入以及状态之间的转换规则。
在使用有限状态机进行软件测试时,测试人员需要首先确定系统的各个状态,然后定义每个状态下的输入和转换规则。
接下来,可以使用测试用例来模拟系统的运行,并通过观察系统在不同状态下的行为来验证系统的正确性。
有限状态机的优点是能够将系统行为分解成离散的状态,使得测试用例的设计和执行更加简单直观。
它能够帮助测试人员发现系统中可能存在的错误和异常行为,并提供可靠的测试覆盖度衡量指标。
然而,有限状态机在处理复杂系统时可能存在状态爆炸问题,即状态之间的转换规则过于复杂,导致测试用例数量庞大,增加测试的工作量。
二、决策表(Decision Table)决策表是一种以表格形式表示的测试工具,用于描述系统在不同条件下所做的决策和相应的行为。
决策表由一组条件列和一组动作列组成,每个条件列表示一个输入条件,每个动作列表示一个输出动作。
通过组合不同的条件和动作,可以设计出全面而高效的测试用例。
在使用决策表进行软件测试时,测试人员需要先确定系统可能的条件和动作,然后构建决策表模型。
之后,可以使用决策表来生成测试用例,并验证系统在不同条件下的决策是否符合预期。
决策表的优点是能够将系统的各种条件和动作组合形成一个易于理解和维护的模型。
它能够帮助测试人员快速生成全面且高效的测试用例,并发现系统在不同条件下可能出现的问题。
软件测试NextDate函数决策表测试法实验报告
软件测试NextDate函数决策表测试法实验报告一、实验目的:掌握黑盒测试中的决策表测试法,并对被测程序设计测试用例。
二、实验环境操作系统:Windows XP + SP2 /win7三、实验内容1、编写一个NextDate函数。
2、掌握黑盒测试中的决策表测试法的基本步骤。
3、使用决策表法设计测试用例,对编写的函数实施测试,总结分析测试结果。
四、实验步骤1、编写一个NextDate函数。
(C语言、C++)2、根据黑盒测试的决策表测试法设计测试用例。
3、根据测试用例实施测试,并记录测试结果。
五、实验代码#include using namespace std; int a,b,c,y,m,d; //判断是否为闰年bool Feb(int y){ if((2060-y)%4==0) return 1; elsereturn 0;} //年份的累加int NextYear(int y){ a=y+1;if(a>2060){cout<return a;} //月份的累加int NextMonth(int m){ b=m+1; if(b==13){ b=1;NextYear(y);} return b;} //天数的累加int NextDay(int d){ c=d+1;//大月满32天月份加1 if(c==32){if(m==1|m==3|m==5|m==7|m==8|m==10|m==12) {c=1;NextMonth(m);}}//小月满31天月份加1 if(c==31){if(m==4|m==6|m==9|m==11) {c=1;NextMonth(m);}}//若为闰年,2月满30天,月份加1 if(c==30){if(Feb(y)&&m==2){ c=1; b=3;}}//若不是闰年,2月满29天,月份加1 if(c==29){if(!Feb(y)&&m==2){ c=1; b=3;}} return c;} //NextDate函数int NextDate ( int y, int m, int d){ if(y<1900|y>2060|m<1|m>12|d<1|d>31){cout<if(m==4|m==6|m==9|m==11&&d==31) {cout<if(Feb(y)&&m==2&&d>29) {cout<if(!Feb(y)&&m==2&&d>28){cout<NextDay(d);cout<//main函数 int main() {while(1){cout << \请输入正确格式的日期.\cout << \年份范围是1960-2060\cout<>y; cout<>m;cout<>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月};感谢您的阅读,祝您生活愉快。
软件测试中的决策表技术
软件测试中的决策表技术在软件测试中,决策表技术是一种被广泛应用的测试方法。
决策表是一种以表格形式呈现的测试设计工具,能够清晰地表达系统的规则和条件,并帮助测试人员针对不同情况进行测试。
决策表技术的基本原理是,将系统的输入条件、输出结果以及各种规则和约束整理成一张表格,每一行代表一个测试用例,利用这些测试用例来检查系统的正确性。
以下是决策表技术的一般步骤:1. 确定系统的输入条件和输出结果:在进行软件测试之前,首先需要明确系统的输入条件和输出结果。
这些输入条件和输出结果可以是系统的功能需求、运行环境、用户需求等。
2. 列举所有可能的情况:根据系统的输入条件,列出所有可能的情况,并将它们归类。
每一列代表一种情况,每一行代表一种组合。
3. 确定规则和约束:在决策表中,每一列代表一种情况,每一行代表一种组合。
在表格中,可以使用逻辑运算符如AND、OR等来表示各种条件之间的关系,并用“是”和“否”来表示每一种情况下的输出结果。
4. 生成测试用例:根据决策表中的各种组合,生成相应的测试用例。
每一个测试用例都可以通过对应的行和列确定,并包含了系统的输入条件和预期的输出结果。
5. 执行测试用例:根据生成的测试用例,执行测试过程,并记录实际的输出结果。
6. 比较实际结果和预期结果:对于每一种情况,比较实际的输出结果和预期的输出结果。
如果两者一致,则说明系统在这种情况下的行为是正确的;如果不一致,则说明系统在这种情况下存在问题。
通过使用决策表技术,可以减少测试用例的数量,并覆盖系统中的各种情况。
同时,决策表技术还能够提高测试的可读性和可维护性,便于测试人员对测试用例的管理和维护。
然而,决策表技术也存在一些限制。
首先,对于复杂的系统,决策表可能会变得非常庞大,导致难以管理和维护。
其次,决策表技术只能检查系统是否符合规则,但不能检查是否存在其他不可预测的问题。
此外,决策表技术还需要测试人员具备一定的领域知识和逻辑思维能力,以确保生成的决策表正确和完整。
决策表
决策表
• 在所有的黑盒测试方法中,基于决策表(也称判定表)的 测试是最为严格、最具有逻辑性的测试方法。 • 决策表的概念:决策表是分析和表达多逻辑条件下执行不 同操作的情况的工具。 • 决策表的优点:能够将复杂的问题按照各种可能的情况全 部列举出来,简明并避免遗漏。因此,利用决策表能够设 计出完整的测试用例集合。 • 在一些数据处理问题当中,某些操作的实施依赖于多个逻 辑条件的组合,即:针对不同逻辑条件的组合值,分别执 行不同的操作。决策表很适合于处理这类问题。
2 Y Y N x
3 Y N Y X
4 Y N N X
5 N Y Y X
6 N Y N x
7 N N YLeabharlann X8 N N N xY Y Y x
判定表在功能测试中的应用
• 一些软件的功能需求可用判定表表达得非 常清楚,在检验程序的功能时判定表也就 成为一个不错的工具。
–如果一个软件的规格说明指出:
(1)当条件1和条件2满足,并且条件3和条件4不满足, 或者当条件1、3和条件4满足时,要执行操作1。 (2)在任一个条件都不满足时,要执行操作2。 (3)在条件1不满足,而条件4被满足时,要执行操作3。
根据规格说明得到如下判定表
这里,判定表只给出了16种规则中的8种。事实上,除这8 条以外的一些规则是指当不能满足指定的条件,执行3种 操作时,要执行1个默许的操作。在没必要时,判定表通 常可略去这些规则。但如果用判定表来设计测试用例, 就必须列出这些默许规则(如下表)。
规则 5 条件 1 条件 2 条件 3 条件 4 默许操作 Y N x 规则 6 N Y N N x 默许的规则 规则 7 Y Y N Y x 规则 8 Y N N x
• 解答:
软件测试基础(四)用例设计方法之判定表驱动法
软件测试基础(四)⽤例设计⽅法之判定表驱动法判定表也称为决策表,⽤于描述程序输⼊条件组合与相应的程序处理动作之间的对应关系。
等价类划分和边界值分析都没有考虑被测程序输⼊条件的组合情况,只是孤⽴地考虑各个输⼊条件的测试数据取值问题,对输⼊组合情况下产⽣可能产⽣的错误没有进⾏充分地测试。
判定表驱动法从多个输⼊条件组合的⾓度来满⾜测试的覆盖率要求,是⿊盒测试⽅法中最严格、最有逻辑的测试⽅法。
1.判定表的构造与化简判定表⼀般由上图4个部分构成(1)条件桩:列出了问题所包含的所有条件。
⼀般情况下,条件的排列书必须⽆关紧要。
(2)动作桩:列出了问题规定可能采取的操作。
对这些操作的排列顺序⼀般没什么要求。
(3)条件项:条件桩中每个条件可以取真值或者假植,条件项给出了这些条件取值的多种组合情况。
(4)动作项:列出了在各种条件取值情况下应当采取的相应动作。
判定表的构造过程⼀般包括5个步骤: ①列出所有的条件桩和动作桩 ②根据条件桩中的条件个数确定规则的个数 ③根据条件组合,填⼊条件取值,形成每⼀个条件项 ④填⼊相应的动作项,得到初始判定表 ⑤化简初始判定表,合并相似规则2.判定表构造实例 (1) 假设程序的规格说明要求:“对于各科成绩⾼于85分并且是优秀毕业⽣的⼈员,或总是成绩⼤于450的⼈员,应当优先录取,其他情况进⾏正常处理”。
从规格说明可知,条件桩由“各科成绩均⾼于85分”“优秀毕业⽣”和“总成绩⼤于450分”三个条件构成,动作桩由“优先录取”和“正常处理”两种动作构成。
因为由三个条件,所以有23=8个规则。
根据8种条件取值组合情况,可以得到如下表所⽰判定表序号12345678条件各科成绩⾼于85分Y Y Y Y N N N N 优秀毕业⽣Y Y N N Y Y N N 总成绩⼤于450Y N Y N Y N Y N动作优先录取√√√√√正常处理√√√ 化简之后的判定表如下序号1,23456条件各科成绩⾼于85分Y Y Y N N 优秀毕业⽣Y N N--总成绩⼤于450-Y N Y N动作优先录取√√√正常处理√√ (2) ⼀个函数根据A、B、C三条边的输⼊值怕段是否能够构成三⾓形,如果能够构成三⾓形,进⽽判断是等腰三⾓形还是等边三⾓形。
决策表法
第三章
预期输出 覆盖等价类
接受(有效) 1, 3, 4
接受(有效) 2, 3, 4
拒绝(无效)
5
拒绝(无效)
6
拒绝(无效)
7
拒绝(无效)
8
拒绝(无效)
9
拒绝(无效)
10
拒绝(无效)
11
拒绝(无效)
12
拒绝(无效)
13
拒绝(无效)
14
拒绝(无效)
15
黑盒测试及其用例的设计
习题
2、有一个处理单价为5角钱的饮料的自动售货机,相应规格说 明如下:
请选择适当的黑盒测试方法,写出选择该方法的原因, 并使用该方法的步骤,设计出相应的测试用例。
第三章 黑盒测试及其用例的设计
条件桩 条件项 动作桩 动作项
将任何一个条件组合的 特定取值及相应要执行 的动作称为一条规则。 在决策表中贯穿条件项 规 和动作项的一列就是一 则 条规则。
第三章 黑盒测试及其用例的设计
决策表的生成
• 构造决策表的5个步骤:
(1) 确定规则的个数。 有n个条件的决策表有2n个规则(每个条件取真、假值)。 (2) 列出所有的条件桩和动作桩。 (3) 填入条件项。 (4) 填入动作项,得到初始决策表。 (5) 简化决策表,合并相似规则。 若表中有两条以上规则具有相同的动作,并且在条件项之
D4: {day=29}
D5: {day=30} D6: {day=31}
• year变量的有效等价类:
Y1: {year是闰年}
Y2: {year不是闰年}
• 考虑各种有效的输入情况,程序中可能采取的操作有以下
六种:
a1: day+2
a2: day=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图形展示:实验总结:通过这些课时的实验,了解了一些软件测试的基本含义,学会了一些基本测试步骤的设计和用例的构造。
软件测试第四章--因果图
规则
1
选项
2
3
4
5
6
7
8
91011Fra bibliotek1213
14
15
16
11 5 6 7
E2 E3 E4
1 1 1 1
1 1 1 0
1 1 0 1
1 1 0 0
1 0 0
1 0 1 1
1 0 1 0
0 1 0
1 0 0 1
0 0 1
1 0 0 0
0 1 1 1
0 1 1 0
0 1 0 1
0 1 0 0
0 0 1 1
因果图法的简介(续)
因果图法是基于这样的一种思想:一些程序的功能可以用判 定表(或称决策表)的形式来表示,并根据输入条件的组合 情况规定相应的操作。 因果图法的定义:是一种利用图解法分析输入的各种组合情 况,从而设计测试用例的方法,它适合于检查程序输入条件 的各种组合情况。 采用因果图法设计测试用例的步骤: (1)根据程序规格说明书描述,分析并确定因(输入条件) 和果(输出结果或程序状态的改变),画出因果图。 (2)将得到的因果图转换为判定表。 (3)为判定表中每一列所表示的情况设计一个测试用例。
因果图
因果图中用来表示4种因果关系的基本符号:
c1
恒等
e1
c1
非
~
e1
c1 c2 c3
或
c1
∨
e1
∧
e1
c2
与
因果图(续)
因果图中的4种基本关系 在因果图的基本符号中,图中的左结点ci表示输入状态 (或称原因),右结点ei表示输出状态(或称结果)。ci 与 ei 取值0或1,0表示某状态不出现,1则表示某状态出现。 恒等:若 c1 是1,则 e1 也为1,否则 e1 为0。 非:若 c1 是1,则 e1 为0,否则e1为1。 或:若 c1 或 c2 或 c3 是1,则 e1 为1,否则 e1 为0。 与:若 c1 和 c2 都是1,则 e1 为1,否则 e1 为0。
软件测试中的决策表和状态转换测试
软件测试中的决策表和状态转换测试在软件开发中,测试是一个至关重要的环节,它确保软件的质量和稳定性。
在软件测试中,决策表和状态转换测试是两种常用的测试方法。
本文将介绍这两种方法的基本原理和应用场景。
一、决策表决策表是一种用于描述程序中各种条件组合和相应操作的表格。
它以清晰的形式展示了不同条件下的不同操作路径,以帮助测试人员找出软件中的潜在逻辑错误。
决策表包括四个主要的要素:条件、操作、规则和结果。
条件是一组逻辑条件,操作是与条件相对应的行为,规则是将条件和操作组合起来的规则集合,结果是每个规则所对应的操作结果。
决策表适用于有多个条件和多个操作的情况,它可以减少测试用例的数量,更加高效地进行测试。
通过设计决策表,测试人员可以覆盖软件中的各种条件组合,发现可能存在的逻辑错误。
二、状态转换测试状态转换测试是一种基于软件的状态和状态之间的转换进行测试的方法。
在软件中,存在着各种状态和状态之间的转换,通过对这些状态进行测试,可以检测出潜在的逻辑错误和错误操作。
状态转换测试包括五个主要的要素:初始状态、事件、操作、转换条件和目标状态。
初始状态是软件开始运行时的状态,事件是触发状态转换的动作,操作是与事件相关联的行为,转换条件是使得状态转换发生的条件,目标状态是状态转换后的状态。
状态转换测试适用于有多个状态和多个状态转换的情况,通过设计状态转换图,测试人员可以覆盖软件中各种状态转换的情况,找出潜在的逻辑错误和错误操作。
三、决策表与状态转换测试的应用场景决策表和状态转换测试都是针对复杂软件系统的测试方法,它们适用于以下情况:1. 多条件组合的测试场景:当软件存在多个条件,并且这些条件之间可能存在复杂的组合关系时,可以使用决策表来设计测试用例。
2. 多状态转换的测试场景:当软件存在多个状态,并且这些状态之间存在复杂的转换关系时,可以使用状态转换测试来设计测试用例。
3. 逻辑错误的发现:通过设计决策表和状态转换测试,可以发现软件中可能存在的逻辑错误和错误操作。
软件测试2.6 决策表方法概述
决策表的构成(续)
规则示例:阅读指南
1 C1:你觉得疲倦吗? 问题 C2:感兴趣吗? C3:糊涂吗? A1:重读 建议 A2:继续 A3:跳到下一章 A4:休息 √ √ √ √ Y Y Y 2 Y Y N 3 Y N Y 4 Y N N 5 N Y Y √ √ √ √ 6 N Y N 7 N N YFra bibliotek8 N N N
决策表的构成
阅读指南
1 C1:你觉得疲倦吗? 问题 C2:感兴趣吗? C3:糊涂吗? Y Y Y 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
A1:重读 建议
A2:继续 A3:跳到下一章
√
A4:休息
√
√
√
√
决策表的构成(续)
决策表的化简
• • 规则合并就是决策表的简化。 有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的
关系,就可以将规则合并。
条件项“—” 表示 与取值无关
决策表的化简(续)
阅读指南问题的简化后决策表 1-4 C1:你觉得疲倦吗? Y — — 5 N Y Y √ 6 N Y N √ √ √ 7-8 N N —
条件桩:列出了问题的所有条件。 条件项:针对条件桩给出的条件列出 所有可能的取值。
动作桩:给出了问题规定的可能采取的操作。
动作项:和条件项紧密相关,指出在条件项的各组取值情况下应采取的动作。
决策表的构成(续)
• 规则 任何一个条件组合的特定取值及其相应要执 行的操作称为规则;
在决策表中贯穿条件项和动作项的一列就是
埃德格伦侧步测试方法与步骤
埃德格伦侧步测试方法与步骤引言:软件测试是保证软件质量的重要手段之一,而在软件测试中,侧步测试作为一种常用的测试方法,被广泛应用于软件开发过程中。
埃德格伦侧步测试方法是一种基于决策表的测试方法,本文将详细介绍埃德格伦侧步测试方法的步骤和应用场景。
一、埃德格伦侧步测试方法概述埃德格伦侧步测试方法是一种基于决策表的测试方法,它能够有效地识别和测试软件中的各种条件组合。
该方法通过对软件系统的输入和输出条件进行分析,构建决策表,并根据决策表设计测试用例,从而全面覆盖软件系统的各种可能情况,提高测试效率和测试覆盖率。
二、埃德格伦侧步测试方法的步骤1. 确定决策表的输入条件和输出条件:根据软件系统的需求规格说明书或功能规约,确定决策表的输入条件和输出条件。
输入条件是指影响软件系统行为的各种条件,输出条件是指软件系统对输入条件作出的反应或结果。
2. 构建决策表:将确定的输入条件和输出条件以表格的形式表示出来,构建决策表。
决策表的列代表输入条件,行代表输出条件,每个单元格表示特定的输入条件和输出条件的组合情况。
3. 确定决策表的覆盖策略:根据软件系统的需求和测试目标,确定决策表的覆盖策略。
常见的覆盖策略包括全覆盖、边界值覆盖、错误推测覆盖等。
4. 设计测试用例:根据确定的决策表和覆盖策略,设计测试用例。
测试用例应覆盖决策表中的各种条件组合,包括正常情况、边界情况和异常情况。
5. 执行测试用例:按照设计的测试用例,执行测试用例,并记录测试结果。
6. 分析测试结果:根据测试结果,分析软件系统的行为是否符合预期,发现和修复软件系统中的缺陷。
三、埃德格伦侧步测试方法的应用场景埃德格伦侧步测试方法适用于以下情况:1. 输入条件和输出条件较多:当软件系统的输入条件和输出条件较多时,使用埃德格伦侧步测试方法能够有效地识别和测试各种条件组合,提高测试效率。
2. 输入条件和输出条件之间存在复杂的关系:当软件系统的输入条件和输出条件之间存在复杂的关系时,使用埃德格伦侧步测试方法能够全面覆盖各种可能情况,发现潜在的问题。
软件测试-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
软件测试中的决策表测试设计技术
软件测试中的决策表测试设计技术在软件开发的过程中,测试是保证软件质量的重要环节。
而测试设计是测试中的关键步骤之一。
决策表测试设计技术作为一种常用的测试设计方法,在软件测试中得到了广泛的应用。
本文将介绍决策表测试设计技术的基本原理和使用方法,并探讨其在软件测试中的优势和适用场景。
### 一、决策表测试设计技术的基本原理决策表测试设计技术是基于逻辑思维和分支覆盖的测试设计方法。
其基本原理是根据软件功能和规则,描述出一系列条件和动作,然后通过组合不同的条件取值,生成决策表,并针对决策表中的各种可能情况进行测试。
决策表由条件和动作组成,条件用于描述不同的输入和环境条件,动作用于描述系统的输出和行为。
### 二、决策表测试设计技术的使用方法1. 确定输入条件和输出动作:在进行决策表测试设计之前,首先需要明确被测试系统的功能和规则,确定需要测试的输入条件和输出动作。
2. 构建决策表:根据确定的输入条件和输出动作,构建决策表。
决策表通常采用表格的形式,每一行表示一种可能的情况,每一列表示一个条件或动作,通过填写条件和动作的取值,形成决策表。
3. 生成测试用例:根据决策表中的各种可能情况,生成相应的测试用例。
测试用例根据条件取值的组合来生成,每一种组合对应一个测试用例。
4. 执行测试用例:按照生成的测试用例,对被测试系统进行测试。
根据测试结果,判断系统的行为是否符合预期,是否满足规定的功能和规则。
5. 评估测试覆盖率:根据测试结果,评估测试的覆盖率。
决策表测试设计技术可以基于条件覆盖和动作覆盖进行评估,通过覆盖率的评估,可以判断测试用例的充分性和系统的测试质量。
### 三、决策表测试设计技术的优势决策表测试设计技术相比其他测试设计方法,具有以下几个优势:1. 覆盖全面:决策表测试设计技术可以覆盖到所有可能的情况,通过条件的组合生成测试用例,能够尽可能地覆盖所有的分支和路径。
2. 可读性强:决策表测试设计技术采用表格的形式进行设计,结构清晰,逻辑明确,易于阅读和理解。
NEXTDATE的决策表示例(软件测试技术实验报告)
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函数。
11种测试用例设计方法
11种测试用例设计方法在软件开发过程中,测试用例设计是一个非常重要的环节。
通过合理设计测试用例,可以全面覆盖软件的各种功能和场景,有效提高软件的质量和稳定性。
本文将介绍11种常用的测试用例设计方法,帮助开发人员和测试人员更好地进行测试工作。
一、等价类划分法等价类划分法是一种基于等价类的测试用例设计方法。
它将输入域划分为多个等价类,每个等价类代表了一组具有相同功能和特性的输入。
测试用例应该从每个等价类中选择一个合适的输入进行测试,以覆盖不同的情况和可能的错误。
二、边界值分析法边界值分析法是一种基于边界值的测试用例设计方法。
它将输入域的边界值作为测试用例,包括最小值、最大值以及接近边界的值。
通过测试这些边界值,可以检测到因边界条件引起的错误和异常。
三、错误推测法错误推测法是一种基于开发人员或测试人员经验的测试用例设计方法。
在这种方法中,通过预测可能出现的错误和异常情况,设计相应的测试用例来验证这些情况。
这需要开发人员和测试人员具备丰富的经验和对软件系统的深入了解。
四、因果图法因果图法是一种基于因果关系的测试用例设计方法。
通过分析系统的功能和组成部分之间的因果关系,构建因果图,找出潜在的错误和异常情况,并设计相应的测试用例进行验证。
五、决策表法决策表法是一种基于决策规则的测试用例设计方法。
通过将系统的各种可能的输入和条件组合列成表格,设计相应的测试用例来验证系统在不同条件下的行为和输出。
六、状态转换法状态转换法是一种基于系统状态的测试用例设计方法。
通过分析系统在不同状态下的行为和转换条件,设计相应的测试用例来验证系统在状态转换时的正确性和稳定性。
七、路径覆盖法路径覆盖法是一种基于程序执行路径的测试用例设计方法。
通过分析程序的控制流图,选择一组测试用例,能够覆盖程序中的每个执行路径,从而验证程序的各种场景和可能的错误。
八、接口测试法接口测试法是一种专注于系统接口的测试用例设计方法。
通过分析和设计针对系统接口的测试用例,包括输入输出接口、网络接口和外部接口等,验证不同接口之间的兼容性和一致性。
黑盒测试方法主要包括哪四种
黑盒测试方法主要包括哪四种在软件测试领域中,测试的方法可以分为黑盒测试和白盒测试两种。
黑盒测试是一种测试方法,测试人员在执行测试时只关注程序的功能和功能是否符合需求,而不考虑程序内部的实现细节。
在黑盒测试中,测试人员不需要了解程序的代码和结构,只需了解程序的输入和输出以及其功能。
黑盒测试方法主要包括以下四种:1. 等价类划分等价类划分是一种黑盒测试方法,它将输入数据划分为不同的等价类,以确保程序对每个等价类的处理是一致的。
在等价类划分测试中,只需从每个等价类中选择一组典型的测试数据进行测试,而不需要测试每个可能的输入值。
2. 边界值分析边界值分析是一种黑盒测试方法,它针对程序的边界情况进行测试。
在边界值分析测试中,测试人员会针对输入数据的边界值进行测试,以确保程序在边界值处能够正确处理输入。
通过测试边界值,可以有效地发现程序中可能存在的错误。
3. 因果图法因果图法是一种黑盒测试方法,它通过绘制因果图来分析程序中的输入和输出之间的因果关系。
在因果图法测试中,测试人员会根据程序的逻辑结构和功能特性绘制因果图,以帮助设计测试用例和确定测试的重点。
4. 决策表测试决策表测试是一种黑盒测试方法,它通过设计决策表来确定测试用例。
在决策表测试中,测试人员会分析程序的决策条件和动作,然后设计一个表格来表示这些条件和动作之间的关系。
通过设计决策表,可以有效地生成全面而有效的测试用例。
综上所述,黑盒测试方法主要包括等价类划分、边界值分析、因果图法和决策表测试四种方法。
这些方法结合起来可以帮助测试人员设计全面而高效的测试用例,确保软件程序的功能符合需求,并提高软件质量。
的决策表
√
决策表
➢ 条件项—针对条件桩给出的条件列出所有可能的取值 ➢ 动作桩—列出问题规定的可能采取的操作 ➢ 动作项—指出在条件项的各组取值情况下应采取的动作 ➢规则:任何一个条件组合的特定取值及其相应要执行的操作称为 规则
决策表生成
决策表化简
简化是以合并相似规则为目标 若表中有两条以上规则具有相同的动作,并
对于year变量的取值: Y1:{year:year是闰年}; Y2: {year:year不是闰年}
3、决策表的适用范围
决策表测试法适用于具有以下特征的应 用程序:
if-then-else逻辑突出; 输入变量之间存在逻辑关系; 涉及输入变量子集的计算; 输入与输出之间存在因果关系。
解法如下:
确定规则的个数。对于本题有2个条件(销售、库存),每 个条件可以有两个取值,故有22=4种规则。
列出所有的条件桩和动作桩。
填入条件项。
填入动作项,得到初始决策表
规则
选项
1
2
3
4
条件:
C1:销售好?
T
T
F
F
C2:库存低?
T
F
T
F
动作:
a1:增加生产
√
a2:继续生产
√
√
a3:停止生产
为了获得下一个日期,NextDate函数执行 如下操作
如果输入日期不是当月最后一天,则把day变量 的值加1;
如果输入日期是1~11月份中某月的最后一天, 则把day变量的值复位为1,month变量的值加1;
如果输入日期是12月的最后一天,则day变量和 month变量的值都复位为1,year变量的值加1
(1)列出所有的条件桩和动作桩。 (2) 确定规则的个数。 有n个条件的决策表有2n个规则(每个条件取真、 假值)。 (3) 填入条件项。 (4) 填入动作项,得到初始决策表。 (5) 简化决策表,合并相似规则。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
变量day复位操作;
变量month加1操作;
变量month复位操作;
变量year加1操作。
根据上述动作桩发现NextDate函数得求解关键就是日与月得问题,通常可以在下面等价类(条件桩)得基础上建立决策表:
M1={month:month有30天}
M2={month:month有31天,12月除外}
{
k=1;
j++;
}
else if(j==12)
(1)1≤month≤12
(2)1≤day≤31
(3)1912≤year≤2050
2、实验目得与要求
分别输入测试用例,判断期望输出与实际输出就是否相等
3、实验环境
操作系统 WIN10
测试工具 VS2010
测试语言 c++语言
4、设计思路分析(包括需求分析、整体设计思路、概要设计)
需求分析:
此函数得主要特点就是输入变量之间得逻辑关系比较复杂。复杂性得来源有两个:一个就是输入域得复杂性,另一个就是指闰年得规则。例如变量year与变量month取不同得值,对应得变量day会有不同得取值范围,day值得范围可能就是1~30或1~31,也可能就是1~28或1~29。
决策表共有22条规则:
第1~5条规则解决有30天得月份;
第6~10条规则解决有31天得月份(除12月份以外);
第11~15条规则解决12月份;
第16~22条规则解决2月份与闰年得问题。
不可能规则也在决策表中列出,比如第5条规则中在有30天得月份中也考虑了31日。
表1输入变量间存在大量逻辑关系得NextDate函数决策表
√
√
√
√
A3: day复位
√
√
√
A4: month加1
√
√
A5: month复位
√
A6:year加1
√
表2简化得NextDate函数决策表:
选项
规则
1,
2,
3
4
5
6,
7,
8,
9
10
11,
12,
13,
14
15
16
17
18
19
20
21,
22
条件:
C1: month在
M1
M1
M1
M2
M2
M3
M3
M4
M4
M4
√
A6:year加1
√
6、实验结果与分析
表3 NextDate函数得测试用例组
测试用例
Month
Day
Year
预期输出
实际输出
Test case 1-3
5
15
2015
2015年5月16日
Test case 4
5
30
2015
2015年5月31日
Test case 5
5
31
2015
2015年6月1日
Test case 6-9
软件测试
实验报告
题目:决策表法得使用
学号:
姓名:
教师:
东南大学成贤学院电子与计算机工程学院
2017年 9 月30 日
方案30%
设计30%
文字表述20%
分析与总结20%
总分
实验题目
1、实验内容
NextDate函数包含三个变量:month(月份)、day(日期)与year(年),函数得输出为输入日期前一天得日期。例如,输入为2007年9月9日,则函数得输出为2007年9月10日。要求输入变量month、day与year均为整数值,并且满足下列条件:
附录代码
#include "stdafx、h"
bool NextDate(int i,int j,int k)
{
if(i>=1960&&i<=2050&&j>=1&&j<=12&&k>=1&&k<=31)
{
if(k>=1&&k<=27)
{k++;}
else
{
switch(k)
{
case 31:
{
if(j==1||j==3||j==5||j==7||j==8||j==10)
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不就是闰年}
整体设计思路:
NextDate函数中包含了定义域各个变量之间得依赖问题。等价类划分法与边界值分析法只能“独立地”选取各个输入值,不能体现出多个变量得依赖关系。决策表法则就是根据变量间得逻辑依赖关系设计测试输入数据,排除不可能得数据组合,很好地解决了定义域得依赖问题。
5、详细设计
NextDate函数求解给定某个日期得下一个日期得可能操作(动作桩)如下:
√
√
A5: month复位
规则
17
18
19
20
21
22
条件:
C1: month在
M3
M3
M3
M3
M4
M4
M4
M4
M4
M4
M4
C2: day在
D2
D3
D4
D5
D1
D2
D2
D3
D3
D4
D5
C3: year在
-
-
-
-
-
Y1
Y2
Y1
Y2
-
-
动作:
A1:不可能
√
√
√
A2: day加1
√
4
15
2015
2015年4月16日
Test case 10
4
31
2015
2015年5月1日
Test case11-14
12
15
2015
2015年12月16日
Test case 15
12
31
2015
2016年1月1日
Test case 16
2
15
2015
2015年2月16日
Test case 17
2
28
M4
M4
M4
C2: day在
D1,
D2,
D3
D4
D5
D1,
D2,
D3,
D4
D5
D1,
D2,
D3,
D4
D5
D1
D2
D2
D3
D3
D4,D5
C3: year在
-
-
-
-
-
-
-
-
Y1
Y2
Y1
Y2
-
动作:
A1:不可能
√
√
√
A2: day加1
√
√
√
√
√
A3: day复位
√
√
√
√
√
A4: month加1
√
√
√
√
A5: month复位
规则
选项
1
2
3
4
5
6
7
8
9
10
11
条件:
C1: month在
M1
M1
M1
M1
M1
M2
M2
M2
M2
M2
M3
C2: day在
D1
D2
D3
D4
D5
D1
D2
D3
D4
D5
D1
C3: year在
-
-
-
-
-
-
-
-
-
-
-
动作:
A1:不可能
√
A2: day加1
√
√
√
√
√
√
√
√
A3: day复位
√
√
A4: month加1
2016
2016年2月29日
Test case 18
2
28
2015
2015年3月1日
Test case 19
2
29
2016
2016年3月1日
Test case 20
2
29
2015
不可能!
Testcase 21-22
2
30
2015
不可能!
7、实验体会与建议
程序得实际输出结果与预期结果不符合,但基本满足实验问题需求,基于决策表得测试对于某些应用程序(例如NextDate函数)很有效,但就是对另外一些简单得应用程序就不值得使用决策表了。