第9讲 决策表法徐浙君主要内容 决策表法 案例分析等价类类划分法和边边界值值分析方法的局限性 等价类划分法和边界值分析方法比较适合输入变量或输入条件相互独立的情况,但是当输入变量或输入条件相互依赖、相互制约的时候,采用等价类划分法和边界值分析方法是难以描述的,测试效果也很难保障基本概念 在所有的黑盒测试方法中,基于决策表(也称判定表)的测试是最为严格、最具有逻辑性的测试方法 决策表的概念 决策表是分析和表达多逻辑条件下执行不同操作的情况的工具 决策表的优点 能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏因此,利用决策表能够设计出完整的测试用例集合决策表的组组成 决策表通常由以下4部分组成: 条件桩列出问题 的所有条件 条件项针对 条件桩给 出的条件列出所有可能的取值 动作桩列出问题规 定的可能采取的操作 动作项指出在条件项的各组取值情况下应采取的动作 条件桩桩动动作桩桩 条件项项 动动作项项规规则则将任何一个条件组合的特定取值及相应要执行的动作称为一条规则在决策表中贯穿条件项和动作项的一列就是一条规则1:表示是或者取该值0:表示为否或者不取该值-:表示该值取什么都可以表:根据规格说明得到的决策表决策表实实例“阅读阅读 指南”决策表条件桩动作桩条件项动作项决策表的类类型有限条目决策表特点:所有条件都是二值条件(真/假)决策表扩展条目决策表特点:条件可以有多个值决策表的简简化 决策表的简化主要包含两个方面:规则合并与规则 包含。
规则 合并 如果两条或多条规则的动作项相同,条件项只有一项不同,则可以将该项合并,合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件规则规则 合并实实例“阅读阅读 指南”决策表 规则 选项12345678问题你觉得疲倦吗? YYYYNNNN你对内容感兴趣吗? YYNNYYNN书中内容使你胡涂吗? YNYNYNYN建议请回到本章开头重读 继续读 下去 跳到下一章去读 停止阅读 ,请休息 规则规则 合并实实例“阅读阅读 指南”决策表 规则 选项13567问题你觉得疲倦吗? YYNNN你对内容感兴趣吗? YNYYN书中内容使你胡涂吗? YN建议请回到本章开头重读 继续读 下去 跳到下一章去读 停止阅读,请休息 规则规则 合并实实例“阅读阅读 指南”决策表 规则 选项1567问题你觉得疲倦吗? YNNN你对内容感兴趣吗? YYN书中内容使你胡涂吗? YN建议请回到本章开头重读 继续读 下去 跳到下一章去读 停止阅读,请休息 构造决策表的步骤骤1、列出所有的条件桩和动作桩2、确定规则的个数有n个条件的决策表有2n个规则(每个条件取真、假值的情况)3、填入条件项4、填入动作项,得到初始决策表。
5、简化决策表,合并相似规则若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件6、根据决策表设计测试 用例一条规则一个测试用例,排除掉不可能的规则案例分析 要求输入三个值a、b、c,分别作为三角形的三条边,判断由这三条边构成的三角形类型为等边三角形、等腰三角形、一般三角形以及不构成三角形1、列出所有的条件桩桩和动动作桩桩 我们可以通过分析三角问题的处理过程(即“业务逻辑”)得到: 当判断出a=b=c时,程序输出“等边三角形” 当判断出a=b或b=c或a=c时,程序输出“等腰三角形” 当a!=b且b!= c且c!=a时,程序输出“一般三角形”这一步是关键,如何得到三角问题的“条件桩”和“行动桩” ?可以看出程序的输出由a,b,c之间是否相等的关系决定,即a=b?, a=c?, b=c?,这样我们可以把a=b?, a=c?, b=c?当作条件桩,把程序的输出当作动作桩1、列出所有的条件桩桩和动动作桩桩C1:a,b,c构成三角形?C2:a=b?C3:a=c?C4:b=c?条件桩桩A1:非三角形A2:一般三角形A3:等腰三角形A4:等边三角形A5:不可能行动桩动桩2、确定规则规则 的个数 24=16规则规则 数 规则 桩12345678910111213141516C1:a,b,c构成三角形?FFFFFFFFTTTTT TTTC2:a=b?FFFFTTTTFFFFT TTTC3:a=c?FFTTFFTTFFTTF FTTC4:b=c?FTFTFTFTFTFTF TFTA1:非三角形 A2:一般三角形A3:等腰三角形A4:等边三角形A5:不可能3、填入条件项项4、填入动动作项项5、简简化决策表 规则规则 桩桩12345678910111213141516C1:a,b,c构成三角形?FFFFFFFFTTTTT TTTC2:a=b?FFFFTTTTFFFFT TTTC3:a=c?FFTTFFTTFFTTF FTTC4:b=c?FTFTFTFTFTFTF TFTA1:非三角形A2:一般三角形A3:等腰三角形A4:等边三角形A5:不可能最终终的决策表 规则规则 桩123456789C1:a,b,c构成三角形?FTTTTTTTTC2:a=b?FFFFTTTTC3:a=c?FFTTFFTTC4:b=c?FTFTFTFTA1:非三角形A2:一般三角形A3:等腰三角形A4:等边三角形A5:不可能6、根据决策表设计测试设计测试 用例(1)对每一条规则设计 一个测试 用例:用例abc预期输出1124非三角形2345一般三角形3344等腰三角形4434等腰三角形5?6443等腰三角形7?8?9333等边三角形6、根据决策表设计测试设计测试 用例(2)去掉不存在的情况:用例abc预期输出1124非三角形2345一般三角形3344等腰三角形4434等腰三角形5443等腰三角形6333等边三角形案例2 某付款程序实现如下功能:普通顾客一次购物累计少于100元,不打折,一次购物累计多于或等于100元,打9折;会员顾客按会员价格一次购物累计少于1000元,打8折,一次购物累计等于或多于1000元打7折。
试用决策表法设计其测试用例1、列出所有的条件桩桩和行动桩动桩 从该程序的功能可以看出: 程序的输出即顾客的应付款由顾客的身份和其购物金额决定,这样我们可以把顾客的身份和其购物金额当作条件桩,把程序的输出当作动作桩1、列出所有的条件桩桩和行动桩动桩C1:会员顾客?C2:普通顾客?C3:购物金额=100?C5:购物金额=1000?条件桩桩A1:打7折A2:打8折A3:打9折A4:不打折A5:不可能行动桩动桩2、确定规则规则 的个数 26=64太大!规则规则 数 修改条件桩使有限条目决策表成为扩展条目决策表 条件桩桩:C1:顾客为会员或普通顾客C2:购物金额为(0,100)或100,1000)或1000, )动动作桩桩:A1:打7折A2:打8折A3:打9折A4:不打折2、确定规则规则 的个数2*3=6规则规则 数 规则规则 桩桩123456C1: 顾顾客为为会员员或普通顾顾客会员员会员员会员员普通普通普通C2:购购物金额为额为 (0,100)或100,1000)或1000, )(0,100)100,1000)1000, )(0,100)100,1000)1000, )A1: 打7折A2: 打8折A3: 打9折A4: 不打折3、填入条件项项4、填入动动作项项5、简简化决策表6、根据决策表设计测试设计测试 用例 对每一条规则设计 一个测试用例:用例顾客身份购物金额预期输出1会员5040(打8折)2会员500400(打8折)3会员20001400(打7折)4普通5050(不打折)5普通500450(打9折)6普通20001800(打9折)案例3 对于NextDate问题 ,设计 其决策表,然后根据该决策表设计 相应的测试 用例。
1、列出所有的条件桩桩和行动桩动桩 为为了获获得下一个日期,NextDate函数执执行如下操作:如果输入日期不是当月最后一天,则把day变量的值加1;如果输入日期是111月份中某月的最后一天,则把day变量的值复位为1,month变量的值加1;如果输入日期是12月的最后一天,则day变量和month变量的值都复位为1,year变量的值加1关于最后一天的判断:如果是有31天的月份(1,3,5,7,8,10,12),day=31为最后一天;如果是有30天的月份(4,6,9,11), day=30为最后一天;如果是有29天的月份(闰年的2月), day=29为最后一天;如果是有28天的月份(非闰年的2月), day=28为最后一天可见程序的动作主要是d,m,y的加1或复位,而这些操作又与d,m,y的特征有关这样我们可以把d,m,y的加1或复位作为动作桩, d,m,y的特征作为条件桩1、列出所有的条件桩桩和行动桩动桩条件桩桩:C1:月份在M1中C2:月份在M2中C3:月份在M3中C4:月份在M3中C5:日期在D1中C6:日期在D2中C7:日期在D3中C8:日期在D4中C9:日期在D4中C10:年是闰闰年C11:年是平年动动作桩桩:A1:不可能A2:日期增1A3:日期复位(置1)A4:月份增1A5:月份复位(置1)A6:年增1等价类类M1=月份:每月有30天M2=月份:每月有31天,12月除外M3=月份:此月是12月M4=月份:此月是2月D1=日期:1=日期=27D2=日期:日期=28D3=日期:日期=29 D4=日期:日期=30D5=日期:日期=31Y1=年:年是闰闰年Y2=年:年是平年2、确定规则规则 的个数 211=2048太大!规则规则 数 修改条件桩使有限条目决策表成为扩展条目决策表。
等价类类M1=月份:每月有30天M2=月份:每月有31天,12月除外M3=月份:此月是12月M4=月份:此月是2月D1=日期:1=日期=27D2=日期:日期=28D3=日期:日期=29 D4=日期:日期=30D5=日期:日期=31Y1=年:年是闰闰年Y2=年:年是平年动动作桩桩:A1:不可能A2:日期增1A3:日期复位(置1)A4:月份增1A5:月份复位(置1)A6:年增1条件桩桩:C1:月份在M1,M2,M3,M4中之一C2:日期在D1,D2,D3,D4 ,D5中之一C3:年在Y1,Y2中之一2、确定规则规则 的个数 4*5*2=40规则规则 数 规则 桩12345678910C1:月份在M1M1M1M1M1M2M2M2M2M2C2:日在D1D2D3D4D5D1D2D3D4D5C3:年在-A1:不可能A2:日增1A3:日复位A4:月增1A5:月复位A6:年增13、填入条件项项4、填入动动作项项5、简简化决策表续表 规则 桩11121314151617 1819202122C1:月份在M3 M3 M3 M3M3M4 M4 M4 M4 M4 M4 M4C2:日在D1 D2D3D4D5D1D2 D2D3D3D4D5C3:年在-Y1 Y2Y1Y2-A1:不可能A2:日增1A3:日复位A4:月增1A5:月复位A6:年增16、根据决策表设计测试设计测试 用例用例ID月份日期年预预期输输出1-3412/28/2920012001年4月13/29/30日443020012001年5月1日54312001不可能6-9115/28/29/3020012001年1月16/29/30/31日1013120012001年2月1日11-141215/28/29/3020012001年12月16/29/30/31日15123120012002年1月1日1621520012001年2月16日1722820042004年2月29日1822820012001年3月1日1922920042005年3月1日202292001不可能21,22230/312001不可能Q & A。