开发如何避免遗漏业务逻辑?

业务逻辑分类

  • 流程控制性的逻辑
  • 具体的字段数据约束逻辑

避免遗漏流程控制性的逻辑

通过状态迁移图找到所有流程

涉及业务实体状态转换的流程,则通过测试分析方式中的状态迁移图找出所有流程

  1. 分析需求,获取节点、状态信息
  2. 画状态迁移图(各个节点是如何流转的)
  1. 画状态迁移树(根据迁移图画出迁移树)
  1. 抽取规则,每个起始点的连线就是一条流程,共计 4 个流程
  • 预定-已取消
  • 预定-已支付-已取消
  • 预定-已支付-已出票-已取消
  • 预定-已支付-已出票-已使用

19 用例设计方法-状态迁移 - wsh1995 - 博客园 (cnblogs.com)

通过流程图找到所有流程

对于复杂的需求描述,可以通过将需求描述转换为流程图,然后找出所有流程

需求描述

流程分析图

20 测试用例设计 流程分析 - wsh1995 - 博客园 (cnblogs.com)

通过判定树或判定表找到所有流程

对于复杂的需求描述或业务逻辑,可以通过将需求描述转换为判定表或判定树,然后找出所有流程

需求描述

复制代码
订购单的检查:
如果金额 > 500, 又未过期,发批准单和提货单
如果金额 > 500, 但过期了,则不发批准单
如果金额 < 500,不论是否过期,都发批准单和提货单,在过期的情况下,还需要发出通知单。

根据需求描述归纳为判定表

判定表法有个注意点是,如何列出所有条件的组合,一种是自己计算所有的排列组合,一种是正交表计算

自己计算所有排列组合示例:

js 复制代码
let ageArr = ['少年','中年','老年']
let hobbyArr = ['打篮球','踢足球','打羽毛球']
let maleArr = ['男','女']

const arrArr = []
for(let age of ageArr){
    for(let hobby of hobbyArr){
        for(let male of maleArr){
            arrArr.push([age,hobby,male])
        }
    }
}
console.log(arrArr.length)
console.log(arrArr.join('\n'))

通过Allpairs工具,计算所有正交组合

学会Allpairs工具,让用例设计变得简单高效 - 知乎 (zhihu.com)

根据需求描述归纳为判定树

16 用例设计方法-判定表 - wsh1995 - 博客园 (cnblogs.com)

常用测试用例设计方法3-判定表法-CSDN博客

判定表和判定树-CSDN博客

详细设计的工具------判定表与判定树-CSDN博客

测试用例设计方法六脉神剑------第四剑:石破天惊,功能图法攻阵| 京东物流技术团队 - 掘金 (juejin.cn)

测试用例题(状态迁移图法)_状态迁移图法题目-CSDN博客

避免遗漏具体的字段数据约束逻辑

用思维导图描述每个字段的约束

相关推荐
遥遥晚风点点6 小时前
Spark导出数据文件到HDFS
前端·javascript·ajax
克里斯蒂亚L6 小时前
开发一个计时器组件
前端·浏览器
克里斯蒂亚诺更新7 小时前
微信小程序 点击某个marker改变其大小
开发语言·前端·javascript
安冬的码畜日常7 小时前
【JUnit实战3_32】第二十章:用 JUnit 5 进行测试驱动开发(TDD)(上)——将非 TDD 项目改造为 TDD 项目
单元测试·测试驱动开发·tdd·junit5·test-driven
安冬的码畜日常7 小时前
【JUnit实战3_33】第二十章:用 JUnit 5 进行测试驱动开发(TDD)(下)——TDD 项目的重构过程及新功能的开发实战
测试工具·junit·单元测试·测试驱动开发·tdd·junit5·test-driven
天才奇男子7 小时前
从零开始搭建Linux Web服务器
linux·服务器·前端
长空任鸟飞_阿康7 小时前
AI 多模态全栈应用项目描述
前端·vue.js·人工智能·node.js·语音识别
Mintopia7 小时前
🌐 实时协同 AIGC:多人在线 Web 创作的技术架构设计
前端·人工智能·trae
Mintopia7 小时前
🔥 “Solo Coding”的近期热度解析(截至 2025 年末)
前端·人工智能·trae
顾安r8 小时前
11.14 脚本网页游戏 猜黑红
前端·javascript·游戏·flask·html