软件测试用例设计方法-决策表

前言

通过决策表可以为多条件组合的场景设计测试用例。

决策表的设计方法适用于:不同逻辑条件的组合值,分别执行不同的操作。列出全部条件桩、动作桩,填写条件项、动作项,制作初始决策表,合并决策表。

1.1 前面方法忽略的问题

前面介绍的测试用例设计方法的场景法、等价类划分、边界值分析法都忽略输入组合的问题。

测试两位数加法计算器的测试没有考虑输入组合。 软件测试用例设计方法-决策表1

1.2 决策表是什么

决策表(Decision Table)又称判断表,是分析和表达多逻辑条件下执行不同操作情况的工具,适用于测试复杂业务规则组合的场景。

优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。

缺点:不能表达重复执行的动作,如循环结构。

判定表不能很好的伸缩。如有n个条件的判定表有2n个规则。

在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。

决策表的组成

条件桩(Condition Stub):列出所有可能影响结果的输入条件。

动作桩(Action Stub):列出所有可能的输出动作(结果)。

条件项(Condition Entry):每个条件的取值(如 True/False、Yes/No)。

动作项(Action Entry):对应条件下执行的动作(如通过/拒绝、计算折扣)。

规则:任何一个条件组合的特定取值及其要执行的相应操作。在判定表中贯穿条件项和动作项的一列就是一条规则。

1.3 决策表的分析步骤

有2个输入就叫有2个因素。1个输入代表1个因素。比如,输入第一个数值和输入第二个数值。每个输入有x种情况,就叫有x个水平。每个输入的值,叫水平。

(1) 需求分析;

分析输入和输出,用等价类划分分析输入的各种情况、输出的各种情况;

(2) 画判定表或决策表;

(3) 分析与简化判定表;

构造决策表的5个步骤

(1) 确定规则的个数。有n个条件的决策表有2n 个规则(每个条件取真、假值)

(2) 列出所有的条件桩和动作桩。

(3) 填入条件项。

(4) 填入动作项,得到初始决策表。

(5) 简化决策表,合并相似规则。

若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。

合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。

1.4 决策表案例

(1) 分析输入条件和输出条件

输入1:

条件1:0<=X<=99

条件2:-99<=X<0

条件3:X<-99

条件4:X>99

输入2:

条件1:0<=X<=99

条件2:-99<=X<0

条件3:X<-99

条件4:X>99

输出:

正确计算;

错误提示;

(2) 原始决策表/判定表 软件测试用例设计方法-决策表2

(3) 优化决策表

将错误的用颜色标注出来,保留输入1的每个错误水平,输入2的正确水平;保留输入2的每个错误水平,输入1的正确水平。

软件测试用例设计方法-决策表3

(4) 优化策略

测试基本功能的保留;正向用例;

一个输入错误,其他输入无所谓,可以整合;

所有输入都要错过;

(5) 最终的决策表

软件测试用例设计方法-决策表4

通过决策表后仍然有风险,测试难以做到100%覆盖,只能尽量科学的减少失误。决策表有多少列就可以写多少条用例。

1.5 决策表练习

案例:某厂工资发放需求。

软件测试用例设计方法-决策表5

(1) 工资分为年薪制,月薪制,两者互斥;

(2) 错误程度分为普通和严重,两者可同时具备;

(3) 年薪制员工犯普通错误扣工资2%,犯严重错误扣工资6%;

(4) 月薪制员工犯普通错误扣工资4%,犯严重错误扣工资8%;

决策表:

软件测试用例设计方法-决策表6

1.6 决策表适用范围

适用于多种输入存在组合的情况。

1.7 决策表的局限性与优化策略

导致测试量暴增。

软件测试用例设计方法-决策表7

上面有5个输入条件,即5个因素,假设每个输入条件,只考虑填和不填2种情况,即2个水平,那么,决策表的测试点会有2的5次方个。水平的因素次方。

决策表优化策略

(1) 正向用例:全部都填;

(2) 均匀覆盖:每个条件的填和不填都测过,均匀的分布即可,某个条件选择反向值,比如不填,那么其他条件就选择填;

(3) 反向用例:全部不填;

软件测试用例设计方法-决策表8