当前位置: 首页 > article >正文

1.6 判定表

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅!

文章目录

  • 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)000
条件项(规则2)001
条件项(规则3)010
条件项(规则4)011
条件项(规则5)100
条件项(规则6)101
条件项(规则7)110
条件项(规则8)111

3.2 动作结果

动作结果依赖于条件的组合。在判定表的结构中,动作项展示了在特定条件组合下应采取的具体操作。
例如,在上面的判定表中,条件1为1,条件2为0,条件3为1时,可能的操作是执行某个动作A。

3.3 判定表简化

当条件项过多时,判定表可能会变得非常复杂且难以管理。在某些情况下,可以通过合并冗余规则使用条件覆盖法来简化判定表。
例如,如果两个规则的条件组合不同,但动作项相同,则这两个规则可以合并。

【示例】
简化前

条件1条件2动作A
00X
01X

简化后

条件1条件2动作A
0-X

4 判定表的使用场景

4.1 软件测试

判定表最常见的应用领域之一是软件测试,特别是在测试用例设计中,判定表可以帮助测试人员系统地生成测试用例,确保所有可能的输入组合都得到充分测试。

示例
在设计登录系统的测试用例时,可以使用判定表列出不同的输入组合(用户名、密码、验证码等)及对应的预期结果,从而确保登录功能的正确性。

4.2 业务规则引擎

在一些复杂的业务逻辑中,如银行贷款审批、保险理赔等场景中,判定表可以帮助制定复杂的业务规则。
通过列出不同的客户条件(年龄、收入、信用评分等)和操作(批准贷款、拒绝贷款),系统能够自动作出判断。


5 案例分析

某促销活动需求:
1.指定时间段内(符合开始时间和结束时间)
2.消费金额满1000元
如果上述条件同时满足,则可以享受9折优惠,否则不可以享受
请验证该促销活动规则的正确性。

判定表如下:
在这里插入图片描述
测试用例如下:
在这里插入图片描述


http://www.kler.cn/news/321452.html

相关文章:

  • 【C++与数据结构】搜索二叉树(BinarySearchTree)
  • 数据仓库-数据质量规范
  • 问:聊聊JAVA中的共享锁和独占锁?
  • 了解针对基座大语言模型(类似 ChatGPT 的架构,Decoder-only)的重头预训练和微调训练
  • 前端Vue 基础学习1
  • 暗黑破坏神4新资料片憎恶之躯即将上线,第六赛季暗黑破坏神4搬砖如何获得最大收益?
  • 响应式的几种解决方案——媒体查询、flex、grid、多列布局、瀑布流和数据可视化屏幕的缩放处理
  • 极狐GitLab 17.4 重点功能解读【三】
  • crontab -e 修改为vim 编辑
  • Jenkins 2.477版本升级
  • 嵌入式学习——进程间通信方式(1)——有名管道和匿名管道
  • 高频 SQL 50 题(基础版)| 180. 连续出现的数字
  • The Open Group 2024生态系统架构·可持续发展年度大会全面解读
  • 企业微信AI社群助手:赋能企业私域运营的新引擎
  • JAVA集成Jasypt进行加密、解密(SpringBoot)
  • 【ARM 嵌入式 编译系列 10.4 -- GNU Binary Utilies】
  • python测试开发---前后端交互Axios
  • 利用 ARMxy边缘计算网关和 BLiotlink 软网关,实现工业智能化升级
  • VB.NET中如何利用ADO.NET Entity Framework进行ORM(对象关系映射)
  • 在Mac电脑上安装adb环境
  • npm 安装newman时idealTree:vue: sill idealTree buildDeps卡住了(实测成功)
  • 初识C语言(三)
  • VC++同时处理ANSI和Unicode字符集,除了使用TCHAR和_T()宏外,还有其他方法可以实现吗?
  • 【含文档】基于Springboot+微信小程序 的高校社团管理小程序(含源码+数据库+lw)
  • fastdfs开源分布式文件系统及迁移部署
  • mvnd 初体验
  • 探索5 大 Node.js 功能
  • 【递归】7. leetcode 404 左叶子之和
  • 宠物浮毛难清理,希喂、小米、美的宠物空气净化器该选哪款?
  • 深度学习:自然语言处理的基本原理