混合开发:TDD、DDD和BDD交集的值

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 混合开发:TDD、DDD和BDD交集的值

目录

测试驱动开发(TDD)是一种开发软件的过程,其中在编写代码之前先编写测试。一旦完成,开发人员将努力编写足够的代码以通过测试,然后开始重构。

在这里插入图片描述

域驱动设计(DDD)是一种将实现与不断发展的模型联系在一起的开发方法。将项目的重点放在核心领域(知识领域),背后的逻辑上,并迫使技术和非技术方面之间进行协作以改进模型。
在这里插入图片描述
行为驱动开发(BDD)是对TDD和DDD的改进,旨在通过缩小沟通差距,增进对客户的了解并实现持续沟通来简化开发。简而言之,BDD是将业务需求与代码结合在一起的一种方式,使您能够从业务/最终用户的角度了解系统的行为。

在这里插入图片描述

Hybrid Practice混合实践
在这里插入图片描述

TDD

Test-driven development,即测试驱动开发。一种开发过程中应用方法。其思想为先根据需求抽象接口,先编写测试用例,然后在开始编写开发代码。TDD的本意就是通过测试来推动整个开发的进行。

TDD说白了就是先写一小段功能的测试代码,测试失败后再写实现代码,测试成功后接着迭代下一个功能。

TDD的优点:

  • 提高功能的可测性
  • 测试比较灵活
  • 测试用例覆盖率比较高

缺点:

  • 由于是单元测试代码验证,非技术人员看不懂代码,比较难验证功能是否贴合需求
  • 先写单元测试代码,测试用例需要经常调整,增加了开发人员的工作量和降低了开发效率

BDD

Behavior-driven development,即行为驱动开发。其目的是鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。是从用户的需求出发,强调系统行为。通过用自然语言书写非程序员可读的测试用例扩展了测试驱动开发方法,使用混合了领域中统一的语言的母语语言来描述他们的代码的目的,让开发者得以把精力集中在代码应该怎么写,而不是技术细节上,而且也最大程度的减少了将代码编写者的技术语言与商业客户、用户、利益相关者、项目管理者等的领域语言之间来回翻译的代价.

目前主流的BDD测试框架为Cucumber ,支持多种编程语言。

cucumber支持的关键字:

feature | "功能" |
background | "背景" |
scenario | "场景", "剧本" |
scenario outline | "场景大纲", "剧本大纲" |
examples | "例子" |
given | "* ", "假如", "假设", "假定" |
when | "* ", "当" |
then | "* ", "那么" |
and | "* ", "而且", "并且", "同时" |
but | "* ", "但是" |
given (code) | "假如", "假设", "假定" |
when (code) | "当" |
then (code) | "那么" |
and (code) | "而且", "并且", "同时" |
but (code) | "但是" |

编程是通过使用以上的关键字来描述应用的功能,使非开发人员能快速便捷的了解代码的功能。

DDD

Domain-drive Design,领域驱动设计。其目的是以一种领域专家、设计人员、开发人员都能理解的通用语言作为相互交流的工具,在交流的过程中发现领域概念,然后将这些概念设计成一个领域模型,再有该模型驱动软件设计和开发。

领域模型

  • 领域模型是是对具有某个边界的领域的一个抽象,反映了领域内用户需求的本质
  • 领域模型只反映业务,和技术无关
  • 领域模型可以反映领域中的实体和过程
  • 领域模型确保业务逻辑都在一个模型中,有助于提高应用的维护性和可重用性
  • 领域模型可以让开发人员相对平滑地将业务知识转换为软件架构
  • 领域模型贯穿软件分析、设计,以及开发的整个过程
  • 建立正确的领域模型需要领域专家、设计、开发人员积极沟通共同努力,是大家对领域内的业务不断深入,从而不断细化和完善领域模型
  • 领域模型的表达方式有多种
  • 领域模型是整个软件的核心,设计足够精良且符合业务需求的领域模型能够更快速的响应需求变化

领域驱动设计的分成架构

  • 用户界面/表现层
  • 应用层
  • 领域层 - 表达业务概念,业务信息和业务规则
  • 基础设施层

业务对象的职责和策略:

  • 实体(Entities):具备唯一ID,能够被持久化,具备业务逻辑,对应业务对象
  • 值对象(Value objects):不具有唯一ID,由对象的属性描述,一般为内存中的临时对象,可以用来传递参数或对实体进行补充描述。
  • 工厂(Factories):主要用来创建实体,目前架构实践中一般采用IOC容器来实现工厂的功能
  • 仓库(Repositories):用来管理实体的集合,封装持久化框架
  • 服务(Services):为上层建筑提供可操作的接口,负责对领域对象进行调度和封装,同时可以对外提供各种形式的服务

DDD对构建企业级应用开发平台和大型核心业务系统的作用是相当大的,无论是在产品的稳定性、扩展性、可维护性、生命周期等方面都有良好的表现

参考
The Value at the Intersection of TDD, DDD, and BDD
Hybrid Development: The Value at the Intersection of TDD, DDD, and BDD
BDD vs TDD vs ATDD : Key Differences

目录
相关文章
|
Devops Java 测试技术
软件测试/测试开发|常见软件测试框架类型:TDD、BDD、DDD、ATDD、DevOps介绍
软件测试/测试开发|常见软件测试框架类型:TDD、BDD、DDD、ATDD、DevOps介绍
|
canal Kubernetes 网络架构
K8s CNI 网络最强对比:Flannel、Calico、Canal 和 Weave
Kubernetes 采用的 CNI 标准,让 Kubernetes 生态系统中的网络解决方案百花齐放。更多样的选择,意味着大多数用户将能够找到适合其当前需求和部署环境的 CNI 插件,同时还可以在环境发生变化时也能找到新的解决方案。
5052 1
|
1月前
|
人工智能 API 开发工具
Claude Code 官方工作原理与使用指南深度解析(新版)
在AI编程工具快速迭代的当下,Claude Code凭借其强大的自主编码能力、完整的项目上下文理解与高效的工具调用体系,成为开发者提升编码效率、处理复杂项目的核心助手。作为Anthropic推出的AI编码代理,它突破了传统代码补全工具的局限,能够自主规划任务、执行代码、调试错误、管理项目,实现从需求到落地的全流程自动化。
722 0
|
1月前
|
存储 定位技术 数据库
CodeGraph 如何让 Claude Code减少 7 成工具调用?
CodeGraph 为 Coding Agent 提供本地代码知识图谱,把函数、类、调用链和框架路由提前整理成“项目地图”,减少盲目搜索和文件读取。它不是新 Agent,而是上下文基础设施,让 Agent 更快找到正确代码路径,平均减少 7 成工具调用。
1577 4
|
人工智能 自然语言处理 前端开发
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
淘宝推荐信息流业务,常年被“需求多、技术栈杂、协作慢”困扰,需求上线周期动辄一周。WaterFlow——一套 AI 驱动的端到端开发新实践,让部分需求两天内上线,甚至产品经理也能“自产自销”需求。短短数月,已落地 30+ 需求、自动生成 5.4 万行代码,大幅提升研发效率。接下来,我们将揭秘它是如何落地并改变协作模式的。
1427 37
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
|
10月前
|
应用服务中间件 Nacos nginx
黑马头条_SpringCloud项目阶段一:环境搭建(Mac版本)
本文为 Mac 用户介绍微服务项目环境搭建,含阿里云服务器用 Docker 装 Nacos 1.2.0,本地通过 brew 装 OpenJDK 8、Maven 3.6.1、Redis,Docker 部署 MySQL 5.7 并配字符集,及 Nginx 安装与反向代理设置,附命令与配置步骤。
586 4
黑马头条_SpringCloud项目阶段一:环境搭建(Mac版本)
|
11月前
|
人工智能 JavaScript Shell
零基础学MCP(2)| MCP 开发环境配置
2025最新实战指南,教你10分钟搭建支持Python与Node.js的跨平台MCP开发环境。涵盖环境配置、核心工具安装、双生态联动测试及常见问题解决方案,助你快速上手MCP开发。
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
存储 人工智能 安全
课时21:阿里云混合云解决方案
阿里云混合云解决方案通过高速互联,无缝整合企业原有IT资源与云端计算资源,解决传统架构下数据存储、扩容及安全控制等难题。它提供世界级的云计算、大数据和AI技术,助力企业高效、安全、低成本地实现数字化转型。混合云模式支持按需付费、实时应对流量高峰,确保业务永续,提升用户体验,并为企业全球化部署提供低延时、高带宽的通信保障。
455 0
|
Ubuntu 前端开发 Linux
Linux 发行版 Debian 宣布支持龙芯 LoongArch 架构
近期,龙芯发布了3A6000桌面处理器,芯片的性能又一次大幅度提升,成为国产芯片的又一里程碑。Debian 社区开发者邮件显示,Debian Ports 添加了对龙芯LoongArch 架构的支持。
1287 0