1.定义
判定表(DT-Decision Table)是分析和表达多逻辑条件下执行不同操作的情况的工具。
2、几个要素
1)条件桩(Condition Stub):列出问题得所有条件。通常认为列出的条件次序无关紧要。
2)动作桩(Action Stub):列出问题规定可能采取的操作。这些操作的排列顺序没有约束。
3)条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。
4)动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。
5)规则(Rules):任何一个条件组合的特定取值及其相应要执行的操作称为规则。在判定表中贯穿条件项和动作项的一列就是一条规则。判定表中列出多少组条件取值,也就有多少条规则。
3、建立判定表可遵循的步骤
1)列出条件桩和动作桩
2)确定规则的个数,用来为规则编号:若有n个原因,且每个原因的可取值为0或者1,那么将会有2n个规则。
3)完成所有条件项的填写。
4)完成所有的动作项的填写:得到初始判定表
5)合并化简:有两个或者多条规则具有相同的动作,并且条件项之间存在极为相似的关系就可以进行合并。
4、判定表设计法举例
问题描述: “对于功率大于50马力的机器且维修记录不全,或者已运行10年以上的机器,应给予优先的维修处理”
条件桩:
C1:功率大于50马力吗?
C2:维修记录不全吗?
C3:运行超过10年吗?
动作桩:
A1:进行优先处理
A2:作其他处理
生成判断表:条件3个->规则2³个
简化判定表:
1,2合并,5,7合并,6,8合并
得到的测试用例:
1)功率大于50马力且维修记录不全,无论运行是否超过10年:优先处理
2)功率大于50马力但维修记录齐全,运行超过10年:优先处理
3)功率大于50马力但维修记录齐全,运行未超过10年:其他处理
4)功率不大于50马力,无论维修记录是否齐全,只要运行超过10年:优先处理
5)功率不大于50马力,无论维修记录是否齐全,只要运行未超过10年:其他处理
5、优点和缺点
I. 优点:它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。
II. 缺点:不能表达重复执行的动作,例如循环结构。合并存在漏测的风险。一个显然易见的原因是,虽然某个输入条件在输出接口上是无关的,但是在软件设计上,内部针对这个条件走了不同的程序分支(因分析内部业务流程而定);输入和输出的逻辑关系,明确的用判定表,不是很明了的用因果图然后使用判定表。
6、适合使用判定表设计测试用例的条件
①规格说明以判定表形式给出,或很容易转换成判定表。
②条件的排列顺序不会也不影响执行哪些操作。
③规则的排列顺序不会也不影响执行哪些操作。
④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。
⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。
这5个必要条件的目的是为了使操作的执行完全依赖于条件的组合。其实对于某些不满足这几条的判定表,同样可以借以设计测试用例,只不过尚需增加其它的测试用例罢了。
7、与因果图法的区别与联系
1、因果图是一种辅助工具,它适用于检查程序输入条件的各种组合情况步骤。通过分析软件规格说明描述中的因果关系(输入与输出的因果关系) 找出原因与结果、原因与原因之间的对应关系;
2、在因果图上标记约束或限制条件,把因果图转化为判定表,将判定表中的每一列拿出来设计测试用例。
3、画因果图非常麻烦,影响测试效率,可以直接写判定表,进而编写测试用例。