软件测试基础(四)用例设计方法之判定表驱动法


判定表也称为决策表,用于描述程序输入条件组合与相应的程序处理动作之间的对应关系。等价类划分和边界值分析都没有考虑被测程序输入条件的组合情况,只是孤立地考虑各个输入条件的测试数据取值问题,对输入组合情况下产生可能产生的错误没有进行充分地测试。判定表驱动法从多个输入条件组合的角度来满足测试的覆盖率要求,是黑盒测试方法中最严格、最有逻辑的测试方法。

1.判定表的构造与化简

 

 判定表一般由上图4个部分构成

(1)条件桩:列出了问题所包含的所有条件。一般情况下,条件的排列书必须无关紧要。

(2)动作桩:列出了问题规定可能采取的操作。对这些操作的排列顺序一般没什么要求。

(3)条件项:条件桩中每个条件可以取真值或者假植,条件项给出了这些条件取值的多种组合情况。

(4)动作项:列出了在各种条件取值情况下应当采取的相应动作。

判定表的构造过程一般包括5个步骤:

  ①列出所有的条件桩和动作桩

  ②根据条件桩中的条件个数确定规则的个数

  ③根据条件组合,填入条件取值,形成每一个条件项

  ④填入相应的动作项,得到初始判定表

  ⑤化简初始判定表,合并相似规则

2.判定表构造实例

  (1)

  假设程序的规格说明要求:“对于各科成绩高于85分并且是优秀毕业生的人员,或总是成绩大于450的人员,应当优先录取,其他情况进行正常处理”。从规格说明可知,条件桩由“各科成绩均高于85分”“优秀毕业生”和“总成绩大于450分”三个条件构成,动作桩由“优先录取”和“正常处理”两种动作构成。因为由三个条件,所以有23=8个规则。根据8种条件取值组合情况,可以得到如下表所示判定表

序号 1 2 3 4 5 6 7 8
条件 各科成绩高于85分 Y

Y

Y Y N N N N
优秀毕业生 Y Y N N Y Y N N
总成绩大于450 Y N Y N Y N Y N
动作 优先录取      
正常处理          

  化简之后的判定表如下

序号   1,2 3 4 5 6
条件 各科成绩高于85分 Y Y Y N N
优秀毕业生 Y N N - -
总成绩大于450 - Y N Y N
动作 优先录取    
正常处理      

 

  (2)

  一个函数根据A、B、C三条边的输入值怕段是否能够构成三角形,如果能够构成三角形,进而判断是等腰三角形还是等边三角形。A、B、C均为正整数。根据问题先构造判定表

序号

1

2 3 4 5 6 7 8
条件 A+B>C N Y Y Y Y Y Y Y
A+C>B - N Y Y Y Y Y Y
B+C>A - - N Y Y Y Y Y
A=B - - - Y Y N N N
A=C - - - Y N Y N N
B=C - - - - - - Y N
动作 非三角形          
不等边三角形              
等腰三角形        
等边三角形              

3.在使用判定表驱动法设计测试用例时,还需要注意默许规则和默许操作的问题。

  如果软件规格说明如下:

  (1)当条件1和条件2满足,并且条件3和条件4不满足,或者当条件1、条件3和条件4满足时,要执行条件操作1

  (2)当任意一个条件不满足,而条件4满足时,执行操作2

  (3)当条件1不满足,尔条件4满足时,执行操作3

  根据说明,构造如下判定表。规格说明中共有4个条件,判定表只列出了16个规则中与规格描述直接相关的4个规则。程序在实际执行时,当遇到除上述4条规则意外的其他规则时,需要执行默许操作,不需要时可以忽略这些规则。但是用判定表驱动法设计测试用例时,就必须列出这些默许规则,如下下表

  规则1 规则2 规则3 规则4
条件1 Y Y N N
条件2 Y - N -
条件3 N Y N -
条件4 N Y N Y
操作1    
操作2      
操作3      
  规则5 规则6 规则7 规则8
条件1 - N Y Y
条件2 - Y Y N
条件3 Y N N N
条件4 N N Y -
默许操作

4.判定表法的优缺点:

  优点:①能将规格说明中各种复杂逻辑组合情况一一列举出来,只管并且易于理解,便于检查并且能够便面功能遗漏。

     ②每个测试用例可以覆盖多种输入情况,有利于提高测试效率。

     ③考虑了输入条件间的约束关系,因此避免了无效测试用例,提高了测试有效性。

     ④能够很方便地给出每个测试用例地预期输出。

  缺点:①不能表达重复执行地动作,例如循环语句的执行。

     ②当被测特性较多时,判定表的规模会很庞大。

     ③不能有效地确认某些输入组合是否必须测试,会造成一定的用例冗余

  判定表适合描述具有一下特征的应用程序:

     ①程序中if-then-else分支逻辑较多

     ②程序具有较高的环路复杂度

     ③输入变量之间存在逻辑关系

     ④设计输入变量子集的计算

     ⑤输入和输出之间存在因果关系

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM