
基于判定表的测试.ppt
43页基于判定表的测试,内容,判定表(决策表)测试的原理 三角形问题的测试用例 次日函数测试用例 佣金问题的测试用例 判定表测试的讨论,判定表(决策表)测试的原理,在一些数据处理问题中,某些操作是否实施依赖于多个逻辑条件的取值 在这些逻辑条件取值的组合所构成的多种情况下,分别执行不同的操作 处理这类问题的一个非常有力的分析和表达工具是判定表,或称决策表(Decision Table) 在所有功能性测试方法中,基于判定表的测试方法是最严格的 决策表在逻辑上是严密的,判定表的组成,条件桩(Condition Stub) :列出了问题的所有条件 动作桩(Action Stub) :列出了问题规定可能采取的操作 条件项(Condition Entity) :列出针对它左列条件的取值在所有可能情况下的真假值 动作项(Action Entity) :列出在条件项的各种取值情况下应该采取的动作 规则 (rule):任何一个条件组合的特定取值及其相应要执行的操作,判定表示例:三角形问题,规则,任何一个条件组合的特定取值及其相应要执行的操作称为规则 在判定表中贯穿条件项和动作项的一列就是一条规则 判定表中列出多少组条件取值,也就有多少条规则,即条件项和动作项有多少列,规则示例:三角形问题,规则合并,判定表的化简 有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系,两条规则合并成一条,条件项“—”表示与取值无关,两条规则的进一步合并,条件项“—”在逻辑上包含其它的条件项取值,判定表应用示例,问题要求:”……对功率大于50马力且维修记录不全的机器,或者已运行10年以上的机器,应给予优先的维修处理……” 假定,“维修记录不全”和“优先维修处理”均已在别处有更严格的定义 按5步建立判定表,建立判定表的步骤,①确定规则的个数 这里有3个条件,每个条件有两个取值,故应有2*2*2=8种规则 ②列出所有的条件桩和动作桩 ③填入条件项,建立判定表的步骤(续),④填入动作项,得到初始判定表,建立判定表的步骤(续),⑤化简,合并相似规则,使用判定表设计测试用例的Beizer条件,规格说明以判定表形式给出,或是很容易转换成判定表 条件的排列顺序不会也不应影响执行哪些动作 规则的排列顺序不会也不应影响执行哪些动作 每当某一规则的条件已经满足,并确定要执行的动作后,不必检验别的规则 如果某一规则得到满足要执行多个动作,这些动作的执行顺序无关紧要,不一致的判定表,两条或两条以上的规则的条件项都能被满足(这些规则本来应该能够合并),但是这些规则所要执行的动作不相同,造成了判定表的非确定性,即不知道此时应该执行什么动作,规则也无法进行合并 测试人员的基本原则是在判定表中小心使用与取值无关条件项“—”,不一致的判定表(表7-10),表示必须不做,内容,判定表(决策表)测试的原理 三角形问题的测试用例 次日函数测试用例 佣金问题的测试用例 判定表测试的讨论,表7-3 经过修改的三角形问题 判定表,根据表7-3得到的测试用例,内容,判定表(决策表)测试的原理 三角形问题的测试用例 次日函数测试用例 佣金问题的测试用例 判定表测试的讨论,次日函数测试用例设计,等价类方法:假设变量都是独立的,随意的从等价类中选择输入值形成值的组合。
如果多个输入数据是独立的,则随意笛卡尔积是有意义的;而如果输入数据不是独立的,则会产生很多奇怪的测试用例,如:1996-6-31 决策表方法可以突出输入数据的依赖关系 决策表通过使用“不可能行动”概念表示条件的不可能组合,使我们能强调这种依赖关系第一遍尝试,等价类集合 M1={月份:每月有30天} M2={月份:每月有31天} M3={月份:此月是2月} D1={日期:1≤日期≤28} D2={日期:日期=29} D3={日期:日期=30} D4={日期:日期=31} Y1={年:年是闰年} Y2={年:年不是闰年},表7-12 有256条规则的第一遍尝试,年变量对应的等价类收缩为表中的一个条件,基于等价类的带有互相排斥条件的决策表,第二遍尝试:重点考虑闰年,等价类集合 M1={月份:每月有30天} M2={月份:每月有31天} M3={月份:此月是2月} D1={日期:1≤日期≤28} D2={日期:日期=29} D3={日期:日期=30} D4={日期:日期=31} Y1={年:年=2000} Y2={年:年是闰年,且年≠2000} 避免条件项“重叠”,减少冗余 Y3={年:年是平年} 表7-13:有36条规则的第二次尝试,表7-13,,表7-13续,,,36条规则合并后有16条规则。
12月表示不清第三遍尝试:关注日期和月份,等价类集合 M1={月份:每月有30天} M2={月份:每月有31天,12月除外} M3={月份:此月是12月} M4={月份:此月是2月} D1={日期:1≤日期≤27} D2={日期:日期=28} D3={日期:日期=29} D4={日期:日期=30} D5={日期:日期=31} Y1={年:年是闰年} Y2={年:年不是闰年},表7-14 次日函数的判定表,表7-14(续),表7-15 化简后的次日函数的判定表,表7-15(续),表7-16 次日函数的判定表测试用例,内容,判定表(决策表)测试的原理 三角形问题的测试用例 次日函数测试用例 佣金问题的测试用例 判定表测试的讨论,佣金问题的测试用例,决策表分析不太适合佣金问题 在佣金问题中只有很少的判断逻辑,内容,判定表(决策表)测试的原理 三角形问题的测试用例 次日函数测试用例 佣金问题的测试用例 判定表测试的讨论,判定表方法所适用的应用程序的特征,if-then-else逻辑很突出 输入变量之间存在逻辑关系 涉及输入变量子集的计算 输入与输出之间存在因果关系 很高的McCabe圈复杂度,判定表的优点,能把复杂的问题按各种可能的情况一一列举出来 简明而易于理解 可避免遗漏,判定表的缺点,不能表达重复执行的动作,例如循环结构 判定表不能很好地伸缩 有n个条件的决策表有2n个规则 解决方法 使用扩展条目判定表、代数简化表,将大表“分解”为小表,查找条件项的重复模式,回顾,判定表(决策表)测试的原理 三角形问题的测试用例 次日函数测试用例 佣金问题的测试用例 判定表测试的讨论,练习,某银行发放贷款原则如下: 1)对于贷款未超过限额的客户,允许立即贷款。
2)对于贷款超过限额的客户,若过去还款记录好且本次贷款在2万元以下,可作出贷款安排;否则拒绝贷款 请绘出发放贷款的决策表并优化。












