欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅!
文章目录
- 1 基本概念
- 1.1 作用
- 1.2 优点
- 2 基本组成
- 2.1 条件桩
- 2.2 动作桩
- 2.3 条件项
- 2.4 动作项
- 3 判定表的结构与规则
- 3.1 规则的生成
- 3.2 动作结果
- 3.3 判定表简化
- 4 判定表的使用场景
- 4.1 软件测试
- 4.2 业务规则引擎
- 5 案例分析
1 基本概念
判定表是一种以表格形式表达多条件逻辑判断的工具,常用于处理复杂的多条件逻辑问题。
通过将不同条件与操作的关系以表格形式系统化,判定表能够简化复杂的决策逻辑,从而使得逻辑判断更为清晰和高效。
1.1 作用
判定表的核心作用在于:设计和验证多条件之间有约束规则的测试点。
在处理多个条件同时影响某一决策的场景中,判定表可以确保所有可能的组合情况都被考虑到,避免遗漏某些规则。此外,它还能够帮助测试人员设计测试用例,确保软件系统的不同条件组合下的行为符合预期。
1.2 优点
- 系统性:通过列举所有可能的条件组合,判定表能够覆盖到所有边界情况,确保不遗漏任何一种逻辑分支。
- 可视化:使用表格将条件与对应的操作清晰地展示出来,便于理解和沟通。
- 简化复杂逻辑:当面对复杂的逻辑决策时,判定表将所有情况以直观方式展现,从而简化了决策过程。
2 基本组成
判定表由多个部分组成,这些部分协同工作,用于描述条件、操作及其相应的结果。
2.1 条件桩
条件桩列出判定表中所有的条件,它们描述了决策过程中可能影响结果的各个要素。每个条件的次序并不重要,但需要确保所有条件均已列出。
【示例】
- 用户是否已登录?
- 购物车是否为空?
- 支付方式是否有效?
2.2 动作桩
动作桩列出根据条件所能采取的操作。在不同的条件组合下,可能会执行不同的操作。这些操作可以是多个,表示系统在不同情况下会作出的决策。
【示例】
- 显示登录页面
- 跳转至支付界面
- 提示购物车为空
2.3 条件项
条件项是对条件桩中的每个条件的取值进行列举。一般情况下,条件的取值是二元的(如0表示假,1表示真),但在某些情况下,也可能是多元的(如多个状态)。条件项列出在所有可能情况下条件的真假取值。
【示例】
- 用户是否已登录:[0, 1](0表示未登录,1表示已登录)
- 购物车是否为空:[0, 1](0表示非空,1表示为空)
2.4 动作项
动作项是根据不同条件组合推导出来的动作结果。当所有条件组合列举完成后,根据这些组合推导出不同情况下应采取的操作。
【示例】
- 用户已登录且购物车不为空,跳转至支付界面
- 用户未登录,显示登录页面
3 判定表的结构与规则
判定表通过条件项和动作项的组合来描述所有可能的规则。判定表中的每一列,即贯穿条件项和动作项的一组组合,代表一条规则。规则描述了在特定条件组合下应执行的操作。
3.1 规则的生成
假设有n个条件,且每个条件只有两种取值(0或1),那么所有可能的条件组合情况总共有2^n种规则 。
例如,如果有3个条件,那么所有可能的组合就有2^3 = 8种。
【示例】
3个条件的判定表:
条件桩 | 条件1 | 条件2 | 条件3 |
---|---|---|---|
条件项(规则1) | 0 | 0 | 0 |
条件项(规则2) | 0 | 0 | 1 |
条件项(规则3) | 0 | 1 | 0 |
条件项(规则4) | 0 | 1 | 1 |
条件项(规则5) | 1 | 0 | 0 |
条件项(规则6) | 1 | 0 | 1 |
条件项(规则7) | 1 | 1 | 0 |
条件项(规则8) | 1 | 1 | 1 |
3.2 动作结果
动作结果依赖于条件的组合。在判定表的结构中,动作项展示了在特定条件组合下应采取的具体操作。
例如,在上面的判定表中,条件1为1,条件2为0,条件3为1时,可能的操作是执行某个动作A。
3.3 判定表简化
当条件项过多时,判定表可能会变得非常复杂且难以管理。在某些情况下,可以通过合并冗余规则或使用条件覆盖法来简化判定表。
例如,如果两个规则的条件组合不同,但动作项相同,则这两个规则可以合并。
【示例】
简化前:
条件1 | 条件2 | 动作A |
---|---|---|
0 | 0 | X |
0 | 1 | X |
简化后:
条件1 | 条件2 | 动作A |
---|---|---|
0 | - | X |
4 判定表的使用场景
4.1 软件测试
判定表最常见的应用领域之一是软件测试,特别是在测试用例设计中,判定表可以帮助测试人员系统地生成测试用例,确保所有可能的输入组合都得到充分测试。
示例:
在设计登录系统的测试用例时,可以使用判定表列出不同的输入组合(用户名、密码、验证码等)及对应的预期结果,从而确保登录功能的正确性。
4.2 业务规则引擎
在一些复杂的业务逻辑中,如银行贷款审批、保险理赔等场景中,判定表可以帮助制定复杂的业务规则。
通过列出不同的客户条件(年龄、收入、信用评分等)和操作(批准贷款、拒绝贷款),系统能够自动作出判断。
5 案例分析
某促销活动需求:
1.指定时间段内(符合开始时间和结束时间)
2.消费金额满1000元
如果上述条件同时满足,则可以享受9折优惠,否则不可以享受
请验证该促销活动规则的正确性。
判定表如下:
测试用例如下: