判定表,又称为“决策表”,是一种表格状的图形工具,适合于处理判断条件比较多,各条件又相互组合,有多种决策方案的情况。由于决策表可以把复杂的逻辑关系和多种条件组合的情况表达具体明确。
组成部分
判定表通常由四个部分组成,分别是
条件桩(Condition Stub)
指所有条件的名称,列出的条件的先后次序无关紧要。
动作桩(Action Stub):
指所有可能采取的操作,顺序没有约束。
条件项(Condition Entry):
条件桩中的条件所有可能的取值。
动作项(Action Entry):
与条件项紧密相关,列出在条件项的各组取值情况下应该采取的动作。
判定表编写步骤
任何一个条件组合的特定取值及其相应要执行的操作称为一条规则(Rules),在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中条件有多少组合取值,也就有多少条规则。根据软件规格说明,建立判定表的步骤如下:
- 第 1 步:分析需求,列出所有的条件桩和条件项;
- 第 2 步:分析需求,列出所有的动作桩和动作项;
- 第 3 步:根据规则,设计初始判定表;
- 第 4 步:简化判定表,合并相似规则,设计测试用例。
判定表案例
超市产品销售
超市中如果某产品的销售好并且库存低,则继续销售并增加该产品的进货;如果该产品销售好,但库存量不低,则继续销售;若该产品销售不好,但库存量低,则该产品下架;若该产品销售不好,且库存量不低,如果有空货架则继续销售,如果没有空货架,则该产品下架。
分析需求,列出条件桩
条件桩 | 条件项 |
---|---|
C1:销售好? | True(T)或 False(F) |
C2:库存低? | True(T)或 False(F) |
C3:有空货架? | True(T)或 False(F) |
继续分析需求,列出动作桩
动作桩 | 动作项 |
---|---|
A1:增加进货 | True(T)或 False(F) |
A2:继续销售 | True(T)或 False(F) |
A3:产品下架 | True(T)或 False(F) |
根据规则,设计初始的判定表 👇
条件桩 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
销量好 | T | T | T | T | F | F | F | F |
库存低 | T | T | F | F | T | F | F | T |
有空货架 | T | F | T | F | T | T | F | F |
动作桩 | ||||||||
增加进货 | T | T | ||||||
继续销售 | T | T | T | T | T | |||
下架 | T | T | T |
简化判定表
实际使用判定表时需要简化,简化是以合并相似规则为目标,若表中有 2 条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,则可以合并。
根据表中情形,第 1、2 条规则其动作项一致,条件项中的前 2 个条件取值一致,只有第 3 个条件取值不同,说明第 3 个条件无论取何值,都对相应的动作没有影响,这 2 条规则可以合并。合并后的 C3 示为–,说明在当前规则中该条件的取值与动作的取值无关,称为无关条件。根据此原则,第 3、4 条规则和第 5、8条规则也可以合并,化简后的超市销售库存判定表如下表所示:
条件桩 | 1、2 | 3、4 | 5、8 | 6 | 7 |
---|---|---|---|---|---|
销量好 | T | T | F | F | F |
库存低 | T | F | T | F | F |
有空货架 | T | F | |||
动作桩 | |||||
增加进货 | T | ||||
继续销售 | T | T | T | ||
下架 | T | T |
房产基础中介费
有一个“计算房产基础中介费”的程序,规定中介费用政策如下:
- 如果房屋销售总价少于 10 万元,那么基础中介费将是销售总价的 2%;
- 如果房屋销售总价大于 10 万元,那么基础中介费将是销售总价的 1.5%,外加 1000 元;
- 如果销售额大于 100 万元,那么基础中介费将是房屋销售总价的 1%,外加 1500 元;
另外房屋销售单价和客户的性质对中介费也有影响:
- 若单价低于 1 万/m2,则外加基础中介费的 5%;若是老顾客,则减免外加基础中介费;
- 若单价在 1 万/ m2 到 2 万/m2,则外加基础中介费的 2.5%;若是老顾客,则减免外加基础中介费;
- 若单价在 2 万/m2 以上,则减免外加基础中介费;若是老顾客,则减去基础中介费的 5%。
分析需求,列出条件桩
条件桩 | 条件项 |
---|---|
C1:房屋销售总价 | S1:sale < 10万 |
S2:10万 <= sale < 100万 | |
S3:sale >= 100万 | |
C2:单价 | P1:price < 1万 |
P2: 1万 <= price < = 2万 | |
P3: price > 2万 | |
C3:客户性质 | B1: 新客户 |
B2: 老客户 |
根据排列组合公式 3 * 3 * 2 = 18 所以有18种排列方式
列出动作桩
动作桩 |
---|
A1:中介费将是销售总价的 2% |
A2:销售总价的 1.5% + 1000 |
A3:销售总价的 1% + 1500 |
A4:外加基础中介费的 5% |
A5:外加基础中介费的 2.5% |
A6:减免外加基础中介费 |
根据规则,设计基础判定表
根据以上判定表,设计测试用例
用例编号 | 销售总价(元) | 销售单价(元) | 客户性质 | 预期输出 |
---|---|---|---|---|
中介费-001 | 50000 | 5000 | 新客户 | 1050 |
中介费-002 | 50000 | 5000 | 老客户 | 1000 |
中介费-003 | 50000 | 10000 | 新客户 | 1025 |
中介费-004 | 50000 | 10000 | 老客户 | 1000 |
中介费-005 | 50000 | 20000 | 新客户 | 1000 |
中介费-006 | 50000 | 20000 | 老客户 | 950 |
中介费-007 | 100000 | 5000 | 新客户 | 2625 |
中介费-008 | 100000 | 5000 | 老客户 | 2500 |
中介费-009 | 100000 | 10000 | 新客户 | 2562.5 |
中介费-010 | 100000 | 10000 | 老客户 | 2500 |
中介费-011 | 100000 | 20000 | 新客户 | 2500 |
中介费-012 | 100000 | 20000 | 老客户 | 2375 |
中介费-013 | 1000000 | 5000 | 新客户 | 11550 |
中介费-014 | 1000000 | 5000 | 老客户 | 11000 |
中介费-015 | 1000000 | 10000 | 新客户 | 11275 |
中介费-016 | 1000000 | 10000 | 老客户 | 11000 |
中介费-017 | 1000000 | 20000 | 新客户 | 11000 |
中介费-018 | 1000000 | 20000 | 老客户 | 10450 |