软件测试2_黑盒测试 (下)
软件测试中黑盒测试的测试用例设计方法软件测试的14种类型

软件测试中黑盒测试的测试用例设计方法/软件测试的14种类型发布: 2010-7-09 09:05 | 作者: 网络转载 | 来源: 领测软件测试网采编 | 查看: 204次 | 进入软件测试论坛讨论软件测试中黑盒测试的测试用例设计方法/软件测试的14种类型等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.该方法是一种重要的,常用的黑盒测试用例设计方法.1) 划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合.利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能.无效等价类:与有效等价类的定义恰巧相反.设计测试用例时,要同时考虑这两种等价类.因为,软件不仅要能接收合理的数据,也要能经受意外的考验.这样的测试才能确保软件具有更高的可靠性.2)划分等价类的方法:下面给出六条确定等价类的原则.①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类.②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类.③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类.④在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类.⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则).⑥在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类.3)设计测试用例:在确立了等价类后,可建立等价类表,列出所有划分出的等价类:输入条件有效等价类无效等价类... ... ...... ... ...然后从划分出的等价类中按以下三个原则设计测试用例:①为每一个等价类规定一个唯一的编号.②设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步.直到所有的有效等价类都被覆盖为止.③设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步.直到所有的无效等价类都被覆盖为止.边界值分析法边界值分析方法是对等价类划分方法的补充.(1)边界值分析方法的考虑:长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.(2)基于边界值分析方法选择测试用例的原则:1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据.2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据.3)根据规格说明的每个输出条件,使用前面的原则1).4)根据规格说明的每个输出条件,应用前面的原则2).5)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例.6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例.7)分析规格说明,找出其它可能的边界条件.错误推测法基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例.因果图方法前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型).因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.利用因果图生成测试用例的基本步骤:(1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符.(2) 分析软件规格说明描述中的语义.找出原因与结果之间, 原因与原因之间对应的关系. 根据这些关系,画出因果图.(3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现. 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件.(4) 把因果图转换为判定表.(5) 把判定表的每一列拿出来作为依据,设计测试用例.从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加.前面因果图方法中已经用到了判定表.判定表(Decision Table)是分析和表达多逻辑条件下执行不同操作的情况下的工具.在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了.由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确.判定表通常由四个部分组成.条件桩(Condition Stub):列出了问题得所有条件.通常认为列出得条件的次序无关紧要.动作桩(Action Stub):列出了问题规定可能采取的操作.这些操作的排列顺序没有约束.条件项(Condition Entry):列出针对它左列条件的取值.在所有可能情况下的真假值.动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作.规则:任何一个条件组合的特定取值及其相应要执行的操作.在判定表中贯穿条件项和动作项的一列就是一条规则.显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列.判定表的建立步骤:(根据软件规格说明)①确定规则的个数.假如有n个条件.每个条件有两个取值(0,1),故有种规则.②列出所有的条件桩和动作桩.③填入条件项.④填入动作项.等到初始判定表.⑤简化.合并相似规则(相同动作).B. Beizer 指出了适合使用判定表设计测试用例的条件:①规格说明以判定表形式给出,或很容易转换成判定表.②条件的排列顺序不会也不影响执行哪些操作.③规则的排列顺序不会也不影响执行哪些操作.④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则.⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要.软件测试的14种类型作者:啄木鸟(Sawin网站)软件测试是指使用人工或者自动的手段来运行或测定某个软件产品系统的过程,其目的是在于检验是否满足规定的需求或者弄清预期的结果与实际结果的区别。
实验二 黑盒测试

实验二黑盒测试一、实验目的1、掌握黑盒测试的基本方法;2、掌握黑盒测试用例的编写。
二、实验要求1、根据给出的程序分别使用等价类划分法、边界值分析法、判定表方法、因果图法、正交试验法、功能图法、错误推测法来设计相应的测试用例。
2、输入数据进行测试,填写测试用例。
三、实验内容1、等价类划分法测试练习——创建腾讯QQ号黑盒测试问题QQ用户登录框测试,我们要从两个方面去考虑:一是QQ帐号,二是QQ密码。
1)划分等价类并编号,在下表内填写等价类划分的结果2)设计测试用例,覆盖所有的有效等价类2、因果法测试用例设计练习——自动售货机软件测试用例设计问题有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。
其规格说明如下:若投入5角钱或1元钱的硬币,按下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。
若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并按下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。
分析说明,列出原因和结果:原因:1、售货机有零钱找2、投入1元硬币3、投入5角硬币4、按下橙汁按钮5、按下啤酒按钮结果:6、售货机〖零钱找完〗灯亮当售货机中没有零钱的时候就有红灯亮7、退还1元硬币当投入1元,而且售票机中没有零钱可找的时候8、退还5角硬币当投入1元,而且售货机中有零钱可找的时候9、送出橙汁饮料10、送出啤酒饮料画出因果图:如下图1所示,所有原因结点在左边,所有结果结点在右边,建立中间结点,表示处理的中间状态,中间结果有:11、投入1元硬币并且按下饮料按钮,12、按下〖橙汁〗或〖啤酒〗的按钮13、应当找5角零钱并且售货机有零钱找14、钱已付清1售货机有零钱 6 零钱找完,灯亮2投入1元硬币7 退出1元硬币11 该找5角13 可以找5角3投入5角硬币8退出5角硬币12 按下按钮14 钱付清4 按下橙汁按钮9送出橙汁饮料5按下啤酒按钮10送出啤酒饮料图1 售货机因果图转换成判定表:四、实验步骤1、依次按照每种方法的步骤来写出测试用例2、测试,得出结果。
软件测试第二次作业

软件测试第⼆次作业第2章⿊盒测试⼀、填空题1、等价类划分就是将输⼊数据按照输⼊需求划分为若⼲个⼦集,这些⼦集称为_等价类_______。
2、等价类划分法可将输⼊数据划分为__有效等价类______和____⽆效等价类____。
3、___边界值分析法_____通常作为等价类划分法的补充。
4、因果图中的___恒等_____关系要求程序有⼀个输⼊和⼀个输出,输出与输⼊保持⼀致。
5、因果图的多个输⼊之间的约束包括__E(互斥)______、___O_(唯⼀)____、__R(要求)______、______I_(包括)_四种。
6、决策表通常由_条件桩_______、___条件项_____、___动作桩_____、__动作项______四部分组成。
⼆、判断题1、有效等价类可以捕获程序中的缺陷,⽽⽆效等价类不能捕获缺陷。
(× )2、如果程序要求输⼊值是⼀个有限区间的值,可以划分为⼀个有效等价类(取值范围)和⼀个⽆效等价类(取值范围之外)。
(× )3、使⽤边界值⽅法测试时,只取边界两个值即可完成边界测试。
(× )4、因果图考虑了程序输⼊、输出之间的各种组合情况。
( √)5、决策表法是由因果图演变⽽来的。
( √)6、正交实验设计法⽐较适合复杂的⼤型项⽬。
( √)三、单选题1、下列选项中,哪⼀项不是因果图输⼊与输⼊之间的关系。
( A)A、恒等B、或C、要求D、唯⼀2、下列选项中,哪⼀项是因果图输出之间的约束关系。
(C )A、异B、或C、强制D、要求3、下列选项中,哪⼀项不是正交实验法的关键因素。
( D)A、指标B、因⼦C、因⼦状态D、正交表四、简答题1、请简述⼀下等价类划分法的原则。
(1)如果程序要求输⼊值是⼀个有限区间的值,则可以将输⼊数据划分为⼀个有效等价类和两个⽆效等价类,有效等价类为指定的取值区间,两个⽆效等价类分别为有限区间两边的值。
(2)如果程序要求输⼊的值是⼀个“必须成⽴”的情况,则可以将输⼊数据划分为⼀个有效等价类和⼀个⽆效等价类。
黑盒测试法是什么意思方法有哪些

黑盒测试法是什么意思方法有哪些黑盒测试是指那些使用基于规格说明方法和准则的测试活动,根据程序需求和产品规格说明来发现程序错误。
那么你对黑盒测试了解多少呢?以下是由店铺整理关于什么是黑盒测试法的内容,希望大家喜欢!黑盒测试法的介绍黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试又称基于规格说明的测试,它是指那些使用基于规格说明方法和准则的测试活动,根据程序需求和产品规格说明来发现程序错误。
黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。
黑盒测试法的特点“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。
“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。
实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
黑盒测试方法采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。
黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。
黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。
黑盒测试主要发现以下类型的错误:1)基于规格说明的功能错误2)基于规格说明的构件或系统行为错误3)基于规格说明的性能错误4)面向用户的使用错误5)黑盒接口错误黑盒测试法的优点1、基本上不用人管着,如果程序停止运行了一般就是被测试程序CRASh了2、设计完测试例之后,下来的工作就是爽了,当然更苦闷的是确定crash(崩溃)原因3、对比较大的代码单元来说,黑盒测试比白盒测试效率要高;4、测试人员不需要了解实现的细节,包括特定的编程语言;5、测试人员和编码人员是彼此独立的;6、从用户的视角进行测试,很容易被理解和接受;7、有助于暴露任何规格不一致或者有歧义的问题;8、测试用例可以在规格完成之后马上执行。
(完整word版)黑盒测试习题02

习题020501 用等价类划分法设计8位长数字类型用户名登录操作的测试用例,应该分成()个等价区间.A。
2 B. 3 C。
4 D. 6输入数据预期结果12345678合法1234567位数不足123456789位数过长abcdefgh非法字符0502输入数据预期结果!@#$%^&()合法(无字符)位数过短12736…2179(共256位)位数过长/?|\非法字符0503输入数据预期结果20合法13年龄小于范围41年龄大于范围abcd非法字符0504 某工厂招工,规定报名者年龄应在20周岁——39周岁之间,即出生年月不得早于1960年7月,不晚于1979年6月。
报名程序具有自动检验输入数据的功能,如果出生年月不属于上述范围将拒绝接受,并显示“年龄不合格”等出错信息。
输入数据预期结果1966。
06合法1960。
06时间过早1980.01时间过晚一九六五年七月非数字19777少于6位1977777多余6位197713大于12197700小于10505 新浪邮箱名,其输入要求如下:1. 4~16个字符2。
支持英文小写、数字、下划线3。
不支持全部为数字或下划线输入数据预期结果qq_fhg409522817合法0506用等价类划分法设计下面的测试用例:有一个报表系统,要求用户输入要处理的报表的日期,假设日期的范围为2000年1月到2020年12月。
如果用户输入的日期不在这个范围内,则显示错误码信息,并且此系统规定日期由年月六位数字组成,前4为代表年,后两位代表月。
1)请列出等价类表(包括有效和无效的等价类)2)根据1)中的等价类表,设计能覆盖所有等价类的测试用例。
要求包括输入数据和预期输出,并指出各个测试用例所能符合的等价类编号0507 NextDate 函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天的日期。
例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日。
软件测试报告黑盒测试

软件测试实验报告实验一:人民币数字大写转换1引言1.1系统概述本软件的用途是实现人民币数字大写转化。
如¥6007.14,应写成:人民币陆仟零柒元壹角肆分。
1.2文档概述本文档将给出测试设计、测试用例、测试结果及其对该软件的评价。
1.3测试环境与配置操作系统:windows 7 旗舰版CPU: Intel(R) Core(TM)2 Duo CPU T6500IDE:(Integrated Development Environment) Myeclipse内存:2G1.4测试方法手工利用黑盒测试中的等价类划分法进行测试,主要测试目标为检验函数是否符合题目所给要求。
即:输入是否符合规定条件,及程序的鲁棒性。
2测试用例的设计2.1等价类划分1)有效等价类是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。
利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
2)无效等价类与有效等价类的定义恰巧相反。
无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。
对于具体的问题,无效等价类至少应有一个,也可能有多个。
设计测试用例时要同时考虑这两种等价类。
因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。
针对本次测试,等价类可划分如下:表2-1人民币数字大写转化等价类表有效等价类测试用例设计:(尽可能多的覆盖有效等价类)表2-2 有效等价类测试用例无效等价类测试用例设计:(仅覆盖一个无效等价类)表2-2 无效等价类测试用例2.2边界值分析法测试用例边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。
边界值分析是一种补充等价划分的测试用例设计技术,它不是选择等价类的任意元素,而是选择等价类边界的测试用例。
实践证明,为检验边界附近的处理专门设计测试用例,常常取得良好的测试效果。
边界值分析法不仅重视输入条件边界,而且也适用于输出域测试用例。
软件测试实验报告(测试计划+黑盒测试+白盒测试)

break;
case 12:
if(day==32)
{
year++;
month=1;
day=1;
cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;
}
break;
}
cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;
对于选题,使用黑盒测试技术,测试内容包括等价类划分测试、边界值分析测试、决策表方法使用。
使用白盒测试技术,测试内容包括语句覆盖测试、分支覆盖测试、条件覆盖测试、分支/条件覆盖测试、条件组合覆盖测试及基本路径测试。
1.5
1.软件测试与维护基础教程,机械工业出版社,黄武
2.软件测试技术基础教程,电子工业出版社,顾海花
1/3/2001
19
2
29
2004
1/3/2004
20
2
29
2001
不可能
21~22
2
30
2004
不可能
2.2.1
if(n1<n2)//使得n1为较大的数,n2为较小的数
{
temp=n1;
n1=n2;
n2=temp;
}
p=n1*n2;//p为两个数的乘积
while(n2!=0)//求两个数的最大公约数
NextDate(year,month,day);
2.黑盒测试:边界值及测试用例设计

20 15 —20 16 学年第 2 学期软件测试技术课程实验报告学院:计算机科学技术专业:软件工程班级:软件二班姓名:吴德宁学号:041340217任课教师:刘玉宝实验日期:2016年 5 月9 日实验题目实验2、黑盒测试:边界值分析方法及设计测试案例实验目的1、掌握边界值的概念2、掌握边界值分析法的测试用例设计方法。
实验内容1、对于找零钱最佳组合问题运用边界值分析法设计测试用例,并执行测试,撰写实验报告。
实验步骤:假设商品总价为T,顾客付款为P①分析边界值。
分析输入情形:1.T无效:T<=02.T有效:T>0此种情况下考虑P:2_1.P无效:P<T (款不够支付)2_2.P有效:P>=T分析输出情形:考虑输出—找零个数这里是有效数据,关于“找给顾客值最少钱币张数”的有效值50:0/110:0/1/2/3/45 :0/11 :0/1/2/3/4分析规格中每一个决策情形:无效输入(不找零):T<=0(商品总价小于等于0错误)T>0 P<T(付款不够支付)输出相应错误有效输入(找零)T>0 P>T此时考虑的输出(Change=P-T假设计算正确,不考虑这种情况的无效输出)0<=Change<45<= Change <1010<= Change <5050<= ChangeChange:0、1、4、5、9、10、49、50、99②运用健壮性边界条件法设计测试用例,得到测试用例表(测试用例表格式同实验1)。
付款总价余额预期输出T1 -1 50 超出范围T2 0 50 不可能T3 100 50 50 1T4 101 50 超出范围T5 50 -1 超出范围T6 50 0 50 1T7 50 100 不可能T8 50 101 超出范围T9 50 51 不可能T10 60 59 1 1T11 72 23 49 9T12 85 75 10 1T13 80 71 9 5T14 95 90 5 1T15 55 51 4 4T16 60 60 0 0③执行测试,填写软件缺陷报告(软件缺陷报告格式同实验1)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
举例:维修机器问题(续)
(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)
列出条件桩的取值
动作项(Action Entity )
列出条件项各种取值下应该
采取的动作
规则
任何一个条件组合的特定取值及其相应要 执行的操作称为规则; 在判定表中贯穿条件项和动作项的一列就 是一条规则; 判定表中列出多少组条件取值,也就有多 少条规则,即条件项和动作项有多少列。
— — — T — — — T
C6:b = c? — — —其中包含了另外的25- F T F T F T F T a1: 非三角形 √ √ √1+24-1+23-1=53个组 合 a2: 不等边三角形 √ a3: 等腰三角形 √ √ √ a4: 等边三角形 √
二、设计测试用例
用例ID
DT1 DT2 DT3 DT4 DT5 DT6 DT7 DT8 DT9 DT10 DT11
第一次尝试
M1={月份:每月有30天}
M2={月份:每月有31天} M3={月份:此月是2月} D1={日期:1≤日期≤28} D2={日期:日期=29}
D3={日期:日期=30}
D4={日期:日期=31} Y1={年:年是闰年} Y2={年:年是平年}
有256条规则的第一次尝试
在一些数据处理问题当中,某些操作的实施依赖于多个逻辑 条件的组合,即:针对不同逻辑条件的组合值,分别执行不 同的操作。判定表很适合于处理这类问题。
在程序设计发展的初期,判定表被当作编写程序
的辅助工具。
在所有的黑盒测试方法中,基于判定表的测试 是最为严格、最具有逻辑性的测试方法。
2.判定表的组成
根据软件规格说明 ①列出所有的条件桩和动作桩; ②确定规则的个数; 假如有n个条件,每个条件有两个取值(0,1), 则有2n 种规则; ③填入条件项; ④填入动作项,得到初始决策表; ⑤简化,合并相似规则(相同动作)。
举例:维修机器问题
问题描述:
“……对于功率大于50马力的机器
,并且维修记录不全或已运行10年 以上的机器,应给予优先的维修处理 ……”
7 M2 D2 —
8 M2 D3 —
9 M2 D4 —
10 M2 D5 —
X
X
X X X
X
X
X
X X X
此月是12月Leabharlann 此月是2月此年是闰年
c1:月份在 c2:日期在 c3:年在 行为 a1:不可能 a2:日期增1 a3:日期复位 a4:月份增1 a5:月份复位 a6:年增1
11 M3 D1 —
12 M3 D2 —
T T T T
等边三角形 不可能
一、设计判定表(续)
1 a, b, c构成三角 F
形 条 a = b? 件
(4)
填 写 判 定 表
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ F F F F F F F F F F F T F T T T F F T F T F T T F T F F T T F T
a
4 1 1 5 ? ? 2 ? 2 3 3
b
1 4 2 5 ? ? 2 ? 3 2 4
c
2 2 4 5 ? ? 3 ? 2 2 5
预期输出
非三角形 非三角形 非三角形 等边三角形 不可能 不可能 等腰三角形 不可能 等腰三角形 等腰三角形 不等边三角形
a=b, a=c, b≠c
课后练习
登陆功能说明书:(用户输入和密码输入) 1)管理员用户名为“admin”,密码为“123456”,正 常登陆 2)用户名和密码输入为空,提示 “用户和密码不允 许为空” 在用户名和密码非空的情况下: 3)要求用户名必须输入字母,否则提示“输入非法 ” 4)要求密码必须输入数字,否则提示 “输入非法” 在输入合法的情况下: 5)用户名错误,提示 “用户名和密码输入错误”, 用户名和密码清空 6)用户名正确,密码错误,提示 “用户名和密码输 入错误”,用户名保留,密码清空
13 M3 D3 —
14 M3 D4 —
15 M3 D5 —
16 M4 D1 —
17 M4 D2 Y1
18 M4 D2 Y2
19 M4 D3 Y1
20 M4 D3 Y2 X
21 M4 D4 — X
22 M4 D5 — X
X
X
X
X X X X
X
X X X X X
NextDate函数的精简判定表
1~3 M1 D1,D2,D3 — 4 M1 D4 — 5 M1 D5 — X X X X X X X 6~9 M2 D1,D2,D3,D4 — 10 M2 D5 —
NextDate函数的判定表
每月30天 每月31天,12月除外
c1:月份在 c2:日期在 c3:年在 行为 a1:不可能 a2:日期增1 a3:日期复位 a4:月份增1 a5:月份复位 a6:年增1
1 M1 D1 —
2 M1 D2 —
3 M1 D3 —
4 M1 D4 —
5 M1 D5 — X
6 M2 D1 —
条件 c1:月份在M1中? T c2:月份在M2中? c3:月份在M3中? c4:日期在D1中? c5:日期在D2中? c6:日期在D3中? c7:日期在D4中? c8:年在Y1中? a1:不可能 a2:NextDate
T T
年变量对应的等价类收缩为表中的一个条件
第二次尝试(重点考虑闰年)
M1={月份:每月有30天} M2={月份:每月有31天} M3={月份:此月是2月} D1={日期:1≤日期≤28} D2={日期:日期=29} D3={日期:日期=30} D4={日期:日期=31} Y1={年:年是平年} Y2={年:年是闰年}
案例: NextDate函数
问题描述
程序有三个输入变量month、day、year,并 且满足:1≤month≤12、1≤day≤31、1900≤ year ≤2050。它们分别作为输入日期的月份 、日、年份,通过程序可以输出该输入日期 在日历上下一天的日期。例如,输入为2011 年8月8日,则该程序的输出为2011年8月9 日。
c1:月份在 c2:日期在 c3:年在
行为
a1:不可能 a2:日期增1 a3:日期复位 a4:月份增1 a5:月份复位 a6:年增1
NextDate函数的测试用例
用例ID 月份 日期 1~3 4 15 4 4 30 5 4 31 6~9 1 15 10 1 31 11~14 12 15 15 12 31 16 2 15 17 2 28 18 2 28 19 2 29 20 2 29 21,22 2 30 年 2001 2001 2001 2001 2001 2001 2001 2001 2004 2001 2004 2001 2001 预期输出 2001年4月16日 2001年5月1日 不可能 2001年1月16日 2001年2月1日 2001年12月16日 2002年1月1日 2001年2月16日 2004年2月29日 2001年3月1日 2004年3月1日 不可能 不可能
请建立判定表。
举例:维修机器问题(续) (1)列出所有的条件桩和动作桩
• 条件桩 • C1:功率大于50马力吗? • C2:维修记录不全吗? • C3:运行超过10年吗? • 动作桩 • A1:进行优先处理 • A2:作其他处理
举例:维修机器问题(续)
(2)确定规则个数
• 输入条件个数:3; • 每个条件的取值:“是”或“否”; • 规则个数:2*2*2 =8;
规则示例:三角形问题
规则合并
规则合并
规则合并就是判定表的简化。
有两条或多条规则具有相同的动作,并且
其条件项之间存在着极为相似的关系,就 可以将规则合并。
(1)两条规则合并成一条
条件项“—” 表示与取值 无关。
(2)两条规则的进一步合并
条件项“—”在 逻辑上包含其 它的条件。
3. 判定表建立步骤
案例:三角形问题
问题描述
输入三个正整数a、b、c,分别作为三角形
的三条边,通过程序判断三条边是否能构成