《第章基于决策表的测试课件.ppt》由会员分享,可在线阅读,更多相关《第章基于决策表的测试课件.ppt(39页珍藏版)》请在三一办公上搜索。
1、,第7章 基于决策表的测试,决策表 基于决策表的测试 案例:三角形问题,NextDate问题 练习:隔一日问题,第7章 基于决策表的测试决策表,7.1 决策表,决策表的原理 决策表的组成 决策表建立的步骤,7.1 决策表决策表的原理,1.决策表的原理,决策表 决策表:Decision Table决策表是分析和表达多逻辑条件下执行不同操作的工具。在程序设计发展的初期,决策表被当作编写程序的辅助工具。,1.决策表的原理决策表,2.决策表的组成,条件桩(Condition Stub)列出问题的所有条件 动作桩(Action Stub)列出可能采取的操作 条件项(Condition Entity)列出
2、条件桩的取值 动作项(Action Entity)列出条件项各种取值下应该采取的动作,2.决策表的组成条件桩(Condition Stub),决策表的组成,决策表的组成,规则,任何一个条件组合的特定取值及其相应要执行的操作称为规则;在决策表中贯穿条件项和动作项的一列就是一条规则;决策表中列出多少组条件取值,也就有多少条规则,即条件项和动作项有多少列。,规则任何一个条件组合的特定取值及其相应要执行的操作称为规则;,规则示例:三角形问题,规则示例:三角形问题,规则(续),规则合并 规则合并就是决策表的简化。有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系,就可以将规则合并。,规
3、则(续)规则合并,(1)两条规则合并成一条,条件项“”表示与取值无关。,(1)两条规则合并成一条条件项“”表示与取值无关。,条件项“”在逻辑上包含其它的条件。,(2)两条规则的进一步合并,条件项“”在逻辑上包含其它的条件。(2)两条规则的进一步合,3.决策表建立步骤,根据软件规格说明 列出所有的条件桩和动作桩;确定规则的个数;假如有n个条件,每个条件有两个取值(0,1),则有2n 种规则;填入条件项;填入动作项,得到初始决策表;简化,合并相似规则(相同动作)。,3.决策表建立步骤根据软件规格说明,例:维修机器问题,问题描述:“对于功率大于50马力的机器并且维修记录不全,或已运行10年以上的机器
4、,应给予优先的维修处理”请建立决策表。,例:维修机器问题问题描述:,例:维修机器问题(续),(1)列出所有的条件桩和动作桩 条件桩 C1:功率大于50马力吗?C2:维修记录不全吗?C3:运行超过10年吗?动作桩 A1:进行优先处理 A2:作其他处理,例:维修机器问题(续)(1)列出所有的条件桩和动作桩,例:维修机器问题(续),(2)确定规则个数 输入条件个数:3;每个条件的取值:“是”或“否”;规则个数:2*2*2=8;,功率大于50马力吗 维修记录不全吗 运行超过10年吗,例:维修机器问题(续)(2)确定规则个数 功率大于50马力,例:维修机器问题(续),(3)填入条件项;,利用集合的笛卡尔
5、积计算条件项的取值,例:维修机器问题(续)12345678条 功率大于50马力吗,例:维修机器问题(续),(4)填入动作项;,1,2合并,5,7合并,6,8合并,例:维修机器问题(续)12345678条 功率大于50马力吗,例:维修机器问题(续),(5)化简;,例:维修机器问题(续)(5)化简;(1)(2)(3)(4)(,基于决策表的测试,根据输入输出绘制决策表;设计测试用例覆盖决策表中每条规则;,基于决策表的测试根据输入输出绘制决策表;,7.2 案例:三角形问题,问题描述 输入三个正整数a、b、c,分别作为三角形的三条边,通过程序判断三条边是否能构成三角形?如果能构成三角形,判断三角形的类型
6、(等边三角形、等腰三角形、一般三角形)。请用基于决策表的方法设计测试用例。,7.2 案例:三角形问题问题描述,(1)条件桩 C1:a,b,c构成三角形?C2:a=b?C3:a=c?C4:b=c?(2)规则数 共有四个条件,每个条件的取值为“是”或“否”,因此有24=16条规则。,一、设计决策表,(1)条件桩 一、设计决策表,(3)动作桩 A1:非三角形;A2:不等边三角形;A3:等腰三角形;A4:等边三角形;A5:不可能;,(3)动作桩,(4)决策表,(4)决策表123456789条 a,b,c构成三角形N,注意:条件的选择可以大大扩展决策表的规模;例如 a,b,c构成三角形吗?可以扩展为三个
7、条件:a b+c?b a+c?c a+b?,注意:,条件桩修改后的决策表,条件桩修改后的决策表,a=b,a=c,bc,二、设计测试用例,a=b,二、设计测试用例,7.3 案例:NextDate函数,问题描述 程序有三个输入变量month、day、year,并且满足:1month12、1day31、1900 year 2050。它们分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上下一天的日期。例如,输入为2005年11月29日,则该程序的输出为2005年11月30日。,7.3 案例:NextDate函数问题描述,第一次尝试,M1=月份:每月有30天 M2=月份:每月有31天
8、M3=月份:此月是2月 D1=日期:1日期28 D2=日期:日期=29 D3=日期:日期=30 D4=日期:日期=31 Y1=年:年是闰年 Y2=年:年是平年,第一次尝试M1=月份:每月有30天,有256条规则的第一次尝试,年变量对应的等价类收缩为表中的一个条件,有256条规则的第一次尝试年变量对应的等价类收缩为表中的一个,第二次尝试(重点考虑闰年),M1=月份:每月有30天 M2=月份:每月有31天 M3=月份:此月是2月 D1=日期:1日期28 D2=日期:日期=29 D3=日期:日期=30 D4=日期:日期=31 Y1=年:年=2000 Y2=年:年是平年 Y3=年:年是闰年,第二次尝试
9、(重点考虑闰年)M1=月份:每月有30天,第三次尝试(关注日期和月份),M1=月份:每月有30天 M2=月份:每月有31天,12月除外 M3=月份:此月是12月 M4=月份:此月是2月 D1=日期:1日期 27 D2=日期:日期=28 D3=日期:日期=29 D4=日期:日期=30 D5=日期:日期=31 Y1=年:年是闰年 Y2=年:年不是闰年,第三次尝试(关注日期和月份)M1=月份:每月有30天,NextDate函数的决策表,每月30天,每月31天,12月除外,NextDate函数的决策表每月30天每月31天,12月除外,续,此月是12月,此月是2月,此年是闰年,续 此月是12月此月是2月
10、此年是闰年,NextDate函数的精简决策表,NextDate函数的精简决策表,续,续,NextDate函数的测试用例,NextDate函数的测试用例,指导方针和观察,决策表技术适用的应用程序的特征:if-then-else逻辑很突出 输入变量之间存在逻辑关系 涉及输入变量子集的计算 输入与输出之间存在因果关系 很高的McCabe圈复杂度,指导方针和观察决策表技术适用的应用程序的特征:,决策表的优点 能把复杂的问题按各种可能的情况一一列举出来 简明而易于理解 可避免遗漏,决策表的优点,决策表的缺点 不能表达重复执行的动作,例如循环结构 决策表不能很好地伸缩 有n个条件的决策表有2n 个规则。解决方法 使用扩展条目决策表、代数简化表,将大表“分解”为小表,查找条件项的重复,决策表的缺点,课堂练习,隔一天的日期 程序有三个输入变量month、day、year,分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。例如,输入为2004年11月29日,则该程序的输出为2004年12月1日。,课堂练习隔一天的日期,