《黑盒测试方法详解.pdf》由会员分享,可在线阅读,更多相关《黑盒测试方法详解.pdf(100页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、黑盒测试黑盒测试 o 黑盒测试的概念o 黑盒测试的实施过程o 黑盒测试的数学知识 o 测试用例设计技术黑盒测试黑盒测试o 黑盒测试的概念 n什么是黑盒测试?黑盒测试又称功能测试、数据驱动测试或基于规格说明书的测试,是一种从用户观点出发的测试。黑盒测试示意图 测试人员把被测程序当作一个黑盒子。黑盒测试黑盒测试n黑盒测试主要测试的错误类型有:不正确或遗漏的功能;接口、界面错误;性能错误;数据结构或外部数据访问错误;初始化或终止条件错误等等。黑盒测试黑盒测试n 黑盒测试用于回答以下问题:1)如何测试功能的有效性?2)何种类型的输入会产生好的测试用例?3)系统是否对特定的输入值尤其敏感?4)如何分隔数
2、据类的边界?5)系统能够承受何种数据率和数据量?6)特定类型的数据组合会对系统产生何种影响?黑盒测试黑盒测试n 运用黑盒测试方法,可以导出满足以下标准的测试用例集:1)所设计的测试用例能够减少达到合理测试所需的附加测试用例数;2)所设计的测试用例能够告知某些类型错误的存在或不存在,而不是仅仅与特定测试相关的错误。黑盒测试黑盒测试n 用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。但这是不可能的,因为穷举测试数量太大,无法完成。黑盒测试黑盒测试假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑
3、盒方法进行穷举测试:可能采用的测试数据组:232232264如果测试一 组数据需要1毫秒,一年工作365 24小时,完成所有测试需5亿年。因此,我们只能在大量可能的数据中,选取其中一部分作为测试用例。黑盒测试黑盒测试o 黑盒测试的实施过程(1)测试计划阶段(2)测试设计阶段依据程序需求规格说明书或用户手册,按照一定规范化的方法进行软件功能划分和设计测试用例。(3)测试执行阶段按照设计的测试用例执行测试;自由测试(作为测试用例测试的补充)。(4)测试总结阶段测试人员的数学知识o集合论1 集合与成员 M30=4月,6月,9月,11月2 集合的定义 列出集合元素 如M30 给出集合元素判定规则 如
4、Y=年|1900年100100 无效等价类无效等价类 成绩成绩00等价类划分在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。等价类划分n 3)划分等价类的方法在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。等价类划分在规定了输入数据必须遵守的规则的情况下,可确
5、立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。等价类划分n4)设计测试用例在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件 有效等价类 无效等价类.然后从划分出的等价类中按以下三个原则设计测试用例:为每一个等价类规定一个唯一的编号。设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。等价类划
6、分o 举例n 例1:某程序规定:“输入三个整数 a、b、c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 ”。用等价类划分方法为该程序进行测试用例设计。(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。)等价类划分分析题目中给出和隐含的对输入条件的要求:(1)整数 (2)三个数 (3)非零数(4)正数 (5)两边之和大于第三边(6)等腰 (7)等边 如果 a、b、c 满足条件(1)(4),则输出下列四种情况之一:1.如果不满足条件(5),则程序输出为“非三角形”。2.如果三条边相等即满足条件(7),则程序输出
7、为“等边三角形”。3.如果只有两条边相等、即满足条件(6),则程序输出为“等腰三角形”。4.如果三条边都不相等,则程序输出为“一般三角形”。列出等价类表并编号 等价类划分等价类表并编号(续上表)边等价类划分覆盖有效等价类的测试用例:a b c 覆盖等价类号码3 4 5 (1)-(7)4 4 5 (1)-(7),(8)4 5 5 (1)-(7),(9)5 4 5 (1)-(7),(10)4 4 4 (1)-(7),(11)无效等价类覆盖无效等价类的测试用例:等价类划分o 例2:设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月2049年12月,并规定日期由6位数字字
8、符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的“日期检查功能”。等价类划分1)划分等价类并编号下表等价类划分的结果输入等价类有效等价类无效等价类日期的类型及长度6位数字字符有非数字字符少于6位数字字符多于6位数字字符年份范围在19902049之间小于1990大于2049月份范围在0112之间等于00大于12等价类划分2)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为、,设计的测试用例如下:测试数据 期望结果 覆盖的有效等价类200211 输入有效 、无效等价类3)为每一个无效等价类设计一个测试用例,设计结果如下:测试数据 期望结果
9、覆盖的无效等价类95June 无效输入 20036 无效输入 2001006 无效输入 198912 无效输入 200401 无效输入 200100 无效输入 200113 无效输入 NextDate 函数等价类测试用例n NextDate 函数包含三个变量:month、day 和 year,函数的输出为输入日期后一天的日期。例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日。要求输入变量 month、day 和 year 均为整数值,并且满足下列条件:(1)1month12(2)1day31(3)1920year2050 NextDate 函数等价类测试用例o有效等价类为
10、:M1月份:1月份12D1日期:1日期31Y1年:1812年2012o若条件(1)(3)中任何一个条件失效,则 NextDate 函数都会产生一个输出,指明相应的变量超出取值范围,比如“month 的值不在 1-12 范围当中”。显然还存在着大量的 year、month、day 的无效组合,NextDate 函数将这些组合作统一的输出:“无效输入日期”。其无效等价类为:M2月份:月份12D2日期:日期31Y2年:年2012NextDate 函数等价类测试用例弱一般等价类测试用例月份 日期 年 预期输出 6 15 1912 1912年6月16日强一般等价类测试用例同弱一般等价类测试用例注:弱有单
11、缺陷假设 健壮考虑了无效值 NextDate 函数等价类测试用例弱健壮等价类测试用例ID 月份 日期 年 预期输出WR1 6 15 1912 1912年6月16日WR2 1 15 1912 月份不在112中WR3 13 15 1912 月份不在112中WR4 6 1 1912 日期不在131中WR5 6 32 1912 日期不在131中WR6 6 15 1811 年份不在18122012中WR7 6 15 2013 年份不在18122012中NextDate 函数等价类测试用例o 强健壮等价类测试用例ID 月份 日期 年 预期输出SR1 1 15 1912 月份不在112中SR2 6 1 19
12、12 日期不在131中SR3 6 15 1811 年份不在18122012中SR4 1 1 1912 两个无效一个有效SR5 6 1 1811 两个无效一个有效SR6 1 15 1811 两个无效一个有效SR7 1 1 1811 三个无效佣金问题等价类测试用例它是根据佣金函数的输出值域定义等价类,来改进测试用例集合输出销售额1000元 佣金1010001800 佣金=220+(销售额-1800)*20%测试用例 枪机(45)枪托(30)枪管(25)销售额 佣金 1 5 5 5 500 50 2 15 15 15 1500 175 3 25 25 25 2500 360 根据输出域选择输入值,使
13、落在输出域等价类内,可以结合弱健壮测试用例结合。问题讨论问题:给出下面的有效和无效等价类输入条件:“统计全国各省、市、自治区的人口”输入条件:“标识符应以字母开头”输入条件:长度为1-20的字符串输入条件:数据库中的值域,CHAR(20),NOT NULL边界值分析法 o 边界值分析方法是对等价类划分方法的补充.1)边界值分析方法的考虑:长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误。使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况
14、.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.边界值分析法n 与等价划分的区别o 边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。o 边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。边界值分析法(2)基于边界值分析方法选择测试用例的原则1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。例如,如果程序的规格说明中规定:“重量在10公斤至50公斤范围内的邮件,其邮费计算公式为”。作为测试用例,我们应取10及50,还应取10.
15、01,49.99,9.99及50.01等。边界值分析法2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。比如,一个输入文件应包括1255个记录,则测试用例可取1和255,还应取0及256等。边界值分析法3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。例如,某程序的规格说明要求计算出“每月保险金扣除额为0至1165.25元”,其测试用例可取0.00及1165.24、还可取一0.01及116526等。再如一程序属于情报检索系统,要求每次”最少显示1条、最多显示4条情报摘要”,这时我们应考虑的测试用例包括1和4,
16、还应包括0和5等。边界值分析法5)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。7)分析规格说明,找出其它可能的边界条件。边界值分析法-举例(3)例3现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如右图所示,所有记录分为3组:边界值分析法-举例 标题:这一组只有一个记录,其内容为输出成绩报告的名字。边界值分析法-举例试卷各题标准答案记录:每个记录均在第80个字符处标以数字“2”。该组的
17、第一个记录的第1至第3个字符为题目编 号(取 值 为 1 一999)。第10至第59个字符给出第1至第50题的答案(每个合法字符表示一个答案)。该组的第2,第3个记录相应为第51至第1 0 0,第 1 0 1 至 第150,题的答案。边界值分析法-举例每个学生的答卷描述:该组中每个记录的第80个字符均为数字“3”。每个学生的答卷在若干个记录中给出。如甲的首记录第1至第9字符给出学生姓名及学号,第10至第59字符列出的是甲所做的第1至第50题的答案。若试题数超过50,则第2,第3纪录分别给出他的第51至第100,第101至第150题的解答。然后是学生乙的答卷记录。学生人数不超过200,试题数不超
18、过999。边界值分析法-举例程序的输出有4个报告:a)按学号排列的成绩单,列出每个学生的成绩、名次。b)按学生成绩排序的成绩单。c)平均分数及标准偏差的报告。d)试题分析报告。按试题号排序,列出各题学生答对的百分比。解答:分别考虑输入条件和输出条件,以及边界条件。给出下表所示的输入条件及相应的测试用例。边界值分析法-举例边界值分析法-举例边界值分析法-举例右表为输出条件及相应的测试用例表。错误推测法 o 错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。o 错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试
19、用例。n 例如,输入数据和输出数据为0的情况;输入表格为空格或输入表格只有一行.这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例。错误推测法o 例如,针对例3,采用错误推测法还可补充设计一些测试用例:1、程序是否把空格作为回答2、在回答记录中混有标准答案记录3、除了标题记录外,还有一些的记录最后一个字符即不是2也不是34、有两个学生的学号相同5、试题数是负数。错误推测法o 再如,测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:1)输入的线性表为空表;2)表中只含有一个元素;3)输入表中所有元素已排好序;4)输入表已按逆序排好;5)输入表中部分或全
20、部元素相同。因果图方法 o前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等。o考虑输入条件之间的相互组合,可能会产生一些新的情况.但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多.因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。这就需要利用因果图(Cause一Effect Graphics)方法。o采用因果图方法能够帮助我们按一定步骤,高效率地选择测试用例,同时还能为我们指出,程序规格说明描述中存在着什么问题。因果图介绍o 4种符号分别表示了规格
21、说明中向4种因果关系。因果图介绍o 因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。o Ci表示原因,通常置于图的左部;ei表示结果,通常在图的右部。ci和ei均可取值0或1,0表示某状态不出现,1表示某状态出现。因果图概念o 关系恒等:若ci是1,则ei也是1;否则ei为0。非:若ci是1,则ei是0;否则ei是1。或:若c1或c2或c3是1,则ei是1;否则ei为0。“或”可有任意个输入。与:若c1和c2都是1,则ei为1;否则ei为0。“与”也可有任意个输入。因果图概念o 约束输入状态相互之间还可能存在某些依赖关系,称为约
22、束。例如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。因果图概念因果图概念o 输入条件的约束有以下4类:E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。O约束(唯一);a和b必须有一个,且仅有1个为1。R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。o 输出条件约束类型输出条件的约束只有M约束(强制):若结果a是1,则结果b强制为0。因果图方法o因果图方法最终生成的是判定表。它适合于检查程序输入条件的各种组合情况。利用因果图生成测试用例
23、的基本步骤:(1)分析软件规格说明描述中,那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)分析软件规格说明描述中的语义.找出原因与结果之间,原因与原因之间对应的关系.根据这些关系,画出因果图。(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不不可能出现.为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。(4)把因果图转换为判定表。(5)把判定表的每一列拿出来作为依据,设计测试用例。因果图方法举例例4:某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的
24、修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。解答:根据题意,原因和结果如下:因果图方法举例原因:1第一列字符是A;2第一列字符是B;3第二列字符是一数字。结果:21修改文件;22 给出信息L;23给出信息M。因果图方法举例o 其对应的因果图如下:11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束。原因:1第一列字符是A;2第一列字符是B;3第二列字符是一数字。结果:21修改文件;22 给出信息L;23给出信息M。n根据因果图建立判定表。表中8种情况的左面两列情况中,原因和原因同时为1,这是不可能出现的,故应排除这两种情况。表的最下
25、一栏给出了6种情况的测试用例,这是我们所需要的数据。因果图方法举例例5:有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下橙汁或啤酒的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示零钱找完的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示零钱找完的红灯灭,在送出饮料的同时退还5角硬币。因果图方法举例分析这一段说明,列出原因和结果原因:1.售货机有零钱找2.投入1元硬币3.投入5角硬币 4.押下橙汁按钮5.押下啤酒按钮 结果:21.售货机零钱找完灯亮 22.退还1元硬币23.退还5角
26、硬币 24.送出橙汁饮料25.送出啤酒饮料画出因果图,如图所示。所有原因结点列在左边,所有结果结点列在右边。建立中间结点,表示处理的中间状态。中间结点:11.投入1元硬币且押下饮料按钮 12.押下橙汁或啤酒的按钮 13.应当找5角零钱并且售货机有零钱找 14.钱已付清转换成判定表:因果图方法举例o 在判定表中,阴影部分表示因违反约束条件的不可能出现的情况,删去。第16列与第32列因什么动作也没做,也删去。最后可根据剩下的16列作为确定测试用例的依据。因果图方法小结o 因果图方法是一个非常有效的黑盒测试方法,它能够生成没有重复性的且发现错误能力强的测试用例,而且对输入、输出同时进行了分析。o 从
27、因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。o 如果哪个开发项目在设计阶段就采用了判定表,也就不必再画因果图,而是可以直接利用判定表设计测试用例了。判定表驱动测试方法o 前面因果图方法中已经用到了判定表。判定表(Decision Table)是分析和表达多逻辑条件下执行不同操作的工具。在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了,因为它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。判定表驱动测试方法下表是一张关于科技书阅读指南的判定驱动表:3
28、个问题8种情况 1 2 3 4 5 6 7 8 你觉得疲倦吗?Y Y Y Y N N N N 你对内容感兴趣吗?Y Y N N Y Y N N 问 题 书中内容使你胡涂吗?Y N Y N Y N Y N 请回到本章开头重读 x x 继续读下去 x x 跳到下一章去读 x x 建 议 停止阅读,请休息 x x ”读书指南”判定表 判定表组成o 判定表通常由四个部分组成:n 条件桩n 动作桩n 条件项n 动作项判定表组成o 判定表通常由四个部分组成:n 条件桩(Condition Stub):列出了问题的所有条件,通常认为列出得条件的次序无关紧要。n 动作桩(Action Stub):列出了问题规
29、定可能采取的操作,这些操作的排列顺序没有约束。n 条件项(Condition Entry):列出针对它左列条件的取值,在所有可能情况下的真假值。n 动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。规则及规则合并o 规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。o 化简:就是规则合并有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系。规则及规则合并举例如右图左端,两规则动作项一样,条件项类似,在1、2条件项
30、分别取Y、N时,无论条件3取何值,都执行同一操作。即要执行的动作与条件3无关。于是可合并。“-”表示与取值无关。规则及规则合并举例与上类似,右图中,无关条件项“-”可包含其他条件项取值,具有相同动作的规则可合并 1 2 3 4 你觉得疲倦吗?-Y N 你对内容感兴趣吗?Y Y N N 问 题 书中内容使你胡涂吗?Y N-请回到本章开头重读 x 继续读下去 X 跳到下一章去读 x 建 议 停止阅读,请休息 x 化减后的”读书指南”判定表 1 2 3 4 5 6 7 8 你觉得疲倦吗?Y Y Y Y N N N N 你对内容感兴趣吗?Y Y N N Y Y N N 问 题 书中内容使你胡涂吗?Y
31、N Y N Y N Y N 请回到本章开头重读 x x 继续读下去 x x 跳到下一章去读 x x 建 议 停止阅读,请休息 x x ”读书指南”判定表 判定表驱动测试方法o 判定表的建立步骤:(根据软件规格说明)确定规则的个数.假如有n个条件。每个条件有两个取值(0,1),故有2n种规则。列出所有的条件桩和动作桩。填入条件项。填入动作项。等到初始判定表。简化.合并相似规则(相同动作)。建立判定表举例例5:问题要求:”对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理”。这里假定,“维修记录不全”和“优先维修处理”均已在别处有更严格的定义。请建立判定表。建立判
32、定表举例o 解答:确定规则的个数:这里有3个条件,每个条件有两个取值,故应有2*2*2=8种规则。列出所有的条件茬和动作茬:建立判定表举例填人条件项。可从最后1行条件项开始,逐行向上填满。如第三行是:Y N Y N Y N Y N第二行是:Y Y N N Y Y N N等等。填人动作桩和动作顶。这样便得到形如图的初始判定表。1 2 3 4 5 6 7 8 功率大于 50 马力吗?Y Y Y Y N N N N 维修记录不全吗?Y Y N N Y Y N N 条 件 运行超过 10 年吗?Y N Y N Y N Y N 进行优先处理 x x X X X 动 作 作其他处理 X x x 初始判定表
33、 化简。合并相似规则后得到图。1 2 3 4 5 功率大于 50 马力吗?Y Y Y N N 维修记录不全吗?Y N N-条 件 运行超过 10 年吗?-Y N Y N 进行优先处理 x x X 动 作 作其他处理 x x 化减后的判定表 1 2 3 4 5 6 7 8 功率大于 50 马力吗?Y Y Y Y N N N N 维修记录不全吗?Y Y N N Y Y N N 条 件 运行超过 10 年吗?Y N Y N Y N Y N 进行优先处理 x x X X X 动 作 作其他处理 X x x 初始判定表 NextData函数的精简决策表NextData函数的精简决策表M1月份,每月有30
34、天M2月份,每月有31天M3月份,2月 有29512条规则D1日期,128 12月末31日和其它31D2日期,29 日月份的31日处理不同D3日期,30 平年2月28日处理不同D4日期,31 于2月27日Y1 年:年是闰年Y2 年:年不是闰年改进为M1月份:每月有30天M2月份:每月有31天,12月除外M4月份:12月M3月份:2月 D1日期:1=日期=27D2日期:28D3日期:29D4日期:30D5日期:31Y1 年:年是闰年Y2 年:年不是闰年输入变量间存在大量逻辑关系的NextData决策表 13 4 5 69 10 1114 15 16 17 18 19 20 2122C1月份在 M
35、1 M1 M1 M2 M2 M3 M3 M4 M4 M4 M4 M4 M4C2日期在 D1 D1 D1 D4 D2 D4 D5 D2 D5 D2 D5 D1 D2 D2 D3 D3 D5 D3 D3 D3 D4 D4C3年在 Y1 Y2 Y1 Y2 行为 a1:不可能a2 日期1a3 日期复位a4 月份1a5 月份复位a6 年1判定表在功能测试中的应用o 一些软件的功能需求可用判定表表达得非常清楚,在检验程序的功能时判定表也就成为一个不错的工具。如果一个软件的规格说明指出:(1)当条件1和条件2满足,并且条件3和条件4不满足,或者当条件1、3和条件4满足时,要执行操作1。(2)在任一个条件都不
36、满足时,要执行操作2。(3)在条件1不满足,而条件4被满足时,要执行操作3。判定表在功能测试中的应用根据规格说明得到如下判定表判定表在功能测试中的应用这里,判定表只给出了16种规则中的8种。事实上,除这8条以外的一些规则是指当不能满足指定的条件,执行3种操作时,要执行1个默许的操作。在没必要时,判定表通常可略去这些规则。但如果用判定表来设计测试用例,就必须列出这些默许规则(如下表)。规则 5 规则 6 规则 7 规则 8 条件 1-N Y Y 条件 2-Y Y N 条件 3 Y N N N 条件 4 N N Y-默许操作 x x x x 默许的规则 判定表在功能测试中的应用o 判定表的优点和缺
37、点n 优点:它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。n 缺点:不能表达重复执行的动作,例如循环结构。判定表在功能测试中的应用oB.Beizer 指出了适合使用判定表设计测试用例的条件:规格说明以判定表形式给出,或很容易转换成判定表。条件的排列顺序不会也不影响执行哪些操作。规则的排列顺序不会也不影响执行哪些操作。每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。oB。Beizer提出这5个必要条件的目的是为了使操作的执行完全依赖于条件的组合。其实对于某些不满足这几条的判定表,同样
38、可以借以设计测试用例,只不过尚需增加其它的测试用例罢了。Myers测试方法选择的综合策略 Myers提出了使用各种测试方法的综合策略:n在任何情况下都必须使用边界值分析方法。经验表明用这种方法设计出测试用例发现程序错误的能力最强。n必要时用等价类划分方法补充一些测试用例。n用错误推测法再追加一些测试用例。n对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,应当再补充足够的测试用例。n如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。NextDate 函数等价类测试用例o NextDate 函数中有两种复杂性的输入来源:一是所讨论的输入域的复杂性,二是确定闰年的规则,并要增加“额外天(2 月 29 日)”。