大家好,我是十一。
前情回顾
上面一篇我们讲了因果图法,我们先来回顾下:
因果图法
因果图法就是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适用于程序有多个输入条件的情况。因果图法最终生成的是判定表。
因果图法有四个关系5个约束,四个关系是:恒等、非、或、与;五个约束4个输入条件之间的约束:E(exclude,异、互斥)、I(include,包含)、O(only,唯一)、R(required,要求);1个输出条件之间的约束:M(masked,屏蔽)
忘了的,抓紧回去复习去《测试用例设计方法篇-因果图法》
今天,我们讲另外一种重要的设计方法:判定表法。
判定表法
判定表这词儿好好学习的同学一定会说在上篇我见过这个呀(不记得~蹲角落去!)
概念:
判定表驱动法是分析和表达多逻辑条件下执行不同操作的情况的工具。
组成:
条件桩:列出了所有可能的条件
动作桩:列出所有可能的操作
条件项:列出了所有的条件的取值组合(列出每一个输入项的真假取值,并且对所有的输入项的取值进行组合)
动作项:列出在条件项的各种取值情况下应该采取的动作
规则:任何一个条件组合的特定取值及其相应要执行的操作
注:判定表中贯穿条件项和动作项的一列就是一条规则。
具体关系如下图所示:
这里我们要注意的是,对判定表而言,他有以下几个不可忽视的特性:
a.输入条件的顺序是无关紧要的
b.输出结果的顺序是无关紧要的
c.先测哪种组合,后测哪种组合是无关紧要的
d.每种组合之间是相互独立的
建立判定表的步骤:
第一步:列出所有的条件桩和动作桩;
第二步:确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2的n次方种规则;比如我们现在总共有2个条件,每个条件可有真、假两个取值,那么规则的个数就是2的2次方,即4种规则;
第三步:填入条件项;
第四步:填入动作项,制定初始判定表;
第五步:简化,合并相似规则或者相同动作。(有两个或者多条规则具有相同的动作,并且条件项之间存在极为相似的关系就可以进行合并。)
实例:
某软件规格说明书包含这样的要求:
第一列字符必须是A或B,第二列字符必须是数字,这种情况下进行文件的修改;如果第一列字符不正确,则给出信息E;如果第二列字符不是数字,则给出信息M。
我们还用上节课的这个例子,这里不再细说,大家可以点此到《测试用例设计方法-因果图法》具体看下;我们最终得到一张判定表,具体操作步骤见如下动图:
这里为了方便大家看,再重新给出最后得到的判定表:
注意:咱们这里可以看下1、2因为是不可能存在的,所以我们在合并的时候把他删掉了;另外图里没有表现出来的是规则3、6的合并,可以合并成一条如下测试用例:
当C1(第一列输入字符A)或者C2(第一列输入字符B)其中之一为真;且C3(第二列字符输入数字)不成立,那么输出结果为E3(给出信息M)。
那么,判定表的每一列(规则列)就是一个测试用例,即6个测试用例,注意事项里说3、6可以合并;作业来了哦~请大家自己检查,是否还有其他的规则可以合并?具体哪些可以合并?并且罗列出合并完全后的所有的测试用例(注意事项里已经给出一条了奥,大家可以参考)。
因果图法与判定表法的区别与联系
联系:
a.都是测试输入的组合情况
b.因果图法最终得到的是判定表,由判定表得到测试用例
各自优缺点:
a.因果图法通过分析输入、输出各种组合之间的关系(因与果),画出因果图,由图得到判定表;从而得到测试用例;这样的优点显而易见,我们很容易就能列出所有的测试用例,避免粗心等原因漏掉某项的情况
b.因果图的“缜密”同样也成了他的问题所在,会比较麻烦,如果选项特别多的情况,全部画出因果图耗时耗力不说,庞大的图可读性也差;
c.判定表的思路其实也比较缜密了,仅次于因果图了。
适用场景:
a.在输入项较少的时候,比如3项以内,我认为我们可以采用因果图法;
b.对于单选按钮、复选框这种,我认为也比较适合因果图法;
c.测试新人,俗话说“一口不能吃成个大胖子”,所以对于新人来说我建议大家还是脚踏实地一步步走,不出错为前提!等大家积累了足够经验后我们再来说效率的问题;
d.同理,对经验丰富的人来说可以直接判定表法,甚至都不用在纸上/工具上画出判定表,脑海里直接构建,编写测试用例。
好了,今天到此结束。如有任何问题请留言及时与我沟通,我会尽快回复大家!谢谢大家~我们下次再见!
让我们共同相伴,开启软件知识之旅。