软件测试方法 | 手把手用决策表法画一个决策表(判定表)

决策表是一张大概长得像下面这样的二维表(未化简):

决策表法也叫判定表法,是软件黑盒测试理论中基于组合及其优化的方法之一,也是功能测试方法中最严格的。本文简要介绍决策表的概念、决策表测试的步骤以及应试中如何解题。

目录

一、决策表

1、概念要点

2、决策表的结构

3、决策表的化简

(1)化简的前提条件

(2)示例

二、手把手画决策表

1、五步骤

2、新例题-1

3、新例题-2

三、练习


一、决策表

1、概念要点

  1. 决策表以等价类为基础,是功能性测试方法中最严格的。
  2. 决策表法的目标:在特定条件消除等价类测试的冗余
  3. 基本思想:基于强组合等价类测试(是一种测试设计方法,通过将多个输入条件的所有等价类进行全面组合,确保测试覆盖所有可能的交互情况)得到有效域上完整的测试用例集合,并通过合并与化简来消除用例间的冗余。
  4. 因此,决策表具有完备性,并遵循独立性假设(即假设输入的变量彼此之间都是独立的、互不相干的)。

注意:

  • 若输入条件之间不存在相关性,则不需要使用决策表测试。
  • 决策表测试法不处理无效等价类,不需要遵循单缺陷假设。

2、决策表的结构

术语:

  • 条件桩:问题的所有输入条件。
  • 条件项:针对条件桩给出的条件,列出所有可能的取值。
  • 动作桩:问题规定可能采取的操作。
  • 动作项:在条件项的各组取值情况下,应采取的动作。
  • 规则:任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在决策表中,贯穿条件项和动作项的一列就是一条规则。可根据每个合法输入组合的规则设计测试用例。

“条件”和“动作”的关系也可以理解为“问题”和“建议”“条件”和“结果”,“输入”和“输出”,“条件”和“响应”的关系。

格式如图(决策表模型就长下面这个样子):

看起来有点难懂也没有关系,接下来给出示例:

对应的决策表如下:

解释:

  • 条件桩(粉色方框):就是题干里给出的所有的条件,上图中“是否疲倦”“是否感兴趣”“是否糊涂”都是题干中提及的条件,全部列在这里就构成了“条件桩”。题干中提示条件的词语有:“如果”,“对于”,“输入”等。
  • 动作桩(红色方框):就是题干里给出的所有可能的结果,比如“重读”“继续读”“跳下一章”“停止阅读”。
  • 条件项(绿色方框):条件所有可能的取值,可以从题干中获取。可以用真/假、Y/N、0/1、T/F等符号表示。最上一行是条件组合的编号,上图中编号是1、2、...7、8,说明一共有8种条件组合。
  • 动作项(蓝色方框):在某一条件组合下,输出的结果。也可以从题干获取。
  • 规则:决策表中从上到下竖着的一列,包括了条件以及相应的动作。上面的决策表中一共有8条规则。

3、决策表的化简

化简原则:若决策表中某条件桩任意取值对动作桩无影响时,可根据实际情况进行合并。

(1)化简的前提条件

输出相同:欲化简的多个规则输出结果完全相同。
输入相似:欲化简的多个规则仅有一个输入条件取值不同,其他输入条件的取值应完全相同。
化简的结果:使得某个输入条件的取值对规则的输出无影响。

(2)示例

对于上述关于“读书”的示例,可以初步得到未化简的决策表为:

但观察上图,我们会发现,(1)与(2)这两条规则的条件项中,只有“是否糊涂”这一条不同;而二者的结果项完全相同(都是“跳到下一章”)。这就说明“是否糊涂”这个条件对于(1)和(2)而言是无效的,那么就可以将(1)和(2)进行合并。这个过程就是化简决策表的过程。

同理,{(3)、(7)},{(4)、(8)},{(5)、(6)}也都可以进行合并,合并后的结果如下:

由上图可知,化简合并减少了规则数,但容易遗漏分支从而产生漏测风险,所以一般规则数量不多时尽量不化简。 


二、手把手画决策表

1、五步骤

还是以这道题为例:

1.找出题干中提到的所有的条件和动作,像下面这样列出来:

2.在题干中找出所有的条件组合,一一填到上面这张图的右上侧,同时记得在第一行标号:

3. 重回题干,找出每一个标号下条件对应的结果:

直到把整个决策表都填满。

4.如果有化简的要求,再进行化简。找结果相同的两个规则,并判断是否符合化简的前提条件:

5.画出化简后的结果,并自行验证是否画对:

2、新例题-1

题干:

……对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理。

化简、合并前的决策表:

化简、合并后的决策表:

3、新例题-2

题干:三角形问题

由题干可知,输出的等价类(即动作桩or输出的结果)为能否构成三角形,以及三角形的种类。可以推导出,条件应当是三角形a、b、c三条边的长度情况。可以得到如下决策表:

由于不满足化简的前提条件,故而不用化简。


三、练习

练习1:

练习2:

参考资源链接:[保险金计算程序决策表测试用例:软件质量保障关键](https://wenku.youkuaiyun.com/doc/74vxymmr7t?utm_source=wenku_answer2doc_content) 针对保险金计算程序,决策表测试用例的设计需要全面考虑业务规则和可能的异常情况。《保险金计算程序决策表测试用例:软件质量保障关键》一书详细介绍了这一过程,它不仅涉及到保险业务逻辑的全面理解,还包括了测试策略的制定和测试用例的开发。以下是设计测试用例的步骤: 1. 理解业务规则:首先需要深入分析保险金计算的业务规则,包括不同险种的计算公式、费用结构、赔付条件等。 2. 定义输入变量:根据业务规则定义决策表中的输入变量,例如客户信息(年龄、性别等)、险种、事故详情(时间、地点、金额等)。 3. 明确条件分支:对每个输入变量进行逻辑判断,创建条件分支,如年龄、事故性质、险种是否为附加险等。 4. 设计行动:对于每个条件分支,设计相应行动,如计算出的保费金额、是否达到赔付条件、最终赔付金额的计算。 5. 列出预期结果:基于行动,列出每种输入组合下预期的输出结果,以便与实际结果进行对比。 6. 编写测试用例:根据决策表的结构,编写测试用例,确保覆盖所有的输入组合,包括合场景和可能的异常情况。 7. 测试执行与结果验证:执行测试用例,并验证实际结果是否与预期结果一致。记录并分析偏差,如果需要,进行回归测试以确保修复措施的有效性。 通过以上步骤,可以确保保险金计算程序的决策表测试用例全面且有效。此外,考虑到软件测试成本和复杂性,自动化测试和持续集成的实践能够显著提升测试效率和软件质量。建议参考《保险金计算程序决策表测试用例:软件质量保障关键》一书中的具体案例和策略,以及如何运用自动化工具进行有效的测试。在完成基本的决策表测试之后,可以继续深入学习关于安全性测试和自动化测试更高级的内容,以进一步提升软件的稳定性和安全性。 参考资源链接:[保险金计算程序决策表测试用例:软件质量保障关键](https://wenku.youkuaiyun.com/doc/74vxymmr7t?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值