软件开发方法论:TDD、BDD、DDD、ATDD、DevOps

  • 一、TDD:测试驱动开发
  • 二、BDD:行为驱动开发
  • 三、ATDD:验收测试驱动开发
  • 四、DDD:领域驱动开发
  • 五、持续集成CI
  • 六、持续交付CD
  • 七、持续部署CO
  • 八、DevOps

一、TDD:测试驱动开发

测试驱动开发(Test-Driven Development, TDD)是敏捷开发中的一项核心实践和技术。针对每个功能点抽象出接口代码,然后编写单元测试代码。目前的一些模式对TDD的支持都非常不错,比如MVC和MVP等。

适合TDD这种模式的项目必须具备:

  • 项目的需求必须足够清晰,而且程序员对整个需求有足够的了解。
  • 项目的复杂度和依赖性要低。对于一个业务模型及其复杂、内部模块之间的相互依赖性非常强的项目,采用TDD反而会得不尝失,这会导致程序员在拆分接口和写测试代码的时候工作量非常大。另外,由于模块之间的依赖性太强,我们在写测试代码的时候可能不采取一些桥接模式来实现,这样势必加大了程序员的工作量。

二、BDD:行为驱动开发

行为驱动开发(Behavior Driven Development,BDD)。BDD旨在消除TDD过程中可能造成的问题。与TDD相比,BDD是通过编写行为和规范来驱动软件开发。 行为和规范可能看起来与测试非常相似,但是它们之间却有着微妙但重要的区别。

BDD更注重功能本身而非单纯的测试用例运行结果。BDD测试用例的描述采用了更加’繁琐’的风格,阅读BDD的测试用例就像是阅读一篇文档。这正是为什么我说BDD旨在消除TDD过程中可能造成的问题的原因所在。BDD赋予的这种像阅读句子一样阅读测试的能力有助于带来对测试认知上的转变,有助于我们去考虑如何更好写测试。当你可以流畅的阅读自己写的测试,你自然可以写出更好更全面的测试用例。

BDD是基于系统行为的一种测试方法,该方法基于系统行为定义出很多用于开发功能点的途径。Given(给予操作条件)-When(执行相关操作)-Then(得到预期结果)是用来编写测试用例的方法:

  • Given(给予操作条件):用户输入有效的登录凭证
  • When(执行相关操作):用户点击登录按钮
  • Then(得到预期结果):显示成功的验证消息

三、ATDD:验收测试驱动开发

验收测试驱动开发(Acceptance Test Driven Development,ATDD)技术,是从用户的角度编写了一个验收测试。 它主要侧重于满足系统的功能行为。 该技术用于检测代码是否按预期工作。

注意:ATDD与BDD非常相似,它们之间的主要区别是:BDD更多的是聚焦功能点的行为,而ATDD是捕获更精准的需求。

四、DDD:领域驱动开发

领域驱动开发(Domain Drive Design, DDD)是一种以业务为导向的软件设计方法和思路。我们在开发前,通常需要进行大量的业务知识梳理,而后到达软件设计的层面,最后才是开发。而在业务知识梳理的过程中,我们必然会形成某个领域知识,根据领域知识来一步步驱动软件设计,就是领域驱动设计的基本概念。而领域驱动设计的核心就在于建立正确的领域驱动模型。

对于现在流行的微服务架构,微服务的拆分一直都是微服务设计要解决的问题,而拆分困境产生的根本原因就是不知道业务或者微服务的边界到底在什么地方。换句话说,确定了业务边界和应用边界,这个困境也就迎刃而解了。

解:DDD 核心思想就是通过领域驱动设计方法定义领域模型,从而确定业务和应用边界,保证业务模型与代码模型的一致性。

注意:
对于简单的系统,如果后续业务不会有太大变化,那么就不适合用DDD。

五、持续集成CI

持续集成(Continuous Integration, CI),是指频繁地(一天多次)将代码集成到主干,然后放到CI Server上自动化跑一遍,如果代码有问题就会原路打回来,这样做的目的就是为了能够尽早发现错误,从而能即时在最短的时间内定位你的错误并且改正。

六、持续交付CD

持续交付(Continuous Delivery, CD)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」中,是一个更小粒度提交的过程。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中Jj进行测试。如果代码没有问题,可以继续手动部署到生产环境中。

七、持续部署CO

持续部署(continuous deployment,CO)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。

在持续交付后生成可执行的制品,需要尽快验证是否存在功能性能等方面的问题,或者尽可能快速的让最终用户可以使用这些功能。通过持续部署到测试环境、准生成环境中,可以使测试团队尽快开始测试,开发团队获得快速的反馈并响应。使研发和测试的协同加快了进程。通过持续部署到生产环境,让最终用户可见,则可以快速获得最终用户的使用反馈,体现需求的市场价值。

八、DevOps

DevOps (Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

分布式架构+敏捷开发模式

微服务架构+DEVOPS

软件开发方法论:TDD、BDD、DDD、ATDD、DevOps相关推荐

  1. Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计

    Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计 1.1. software development methodology (also known as SDM 1 1 ...

  2. ATDD,TDD,BDD的区别

    ATDD: Acceptance Test Driven Development(验收测试驱动开发) 是一种在编码开始之前将客户带入测试设计过程的技术.也是一个协作实践,用户,测试人员和开发人员定义了 ...

  3. 敏捷软件开发方法论_什么是敏捷方法论? 现代软件开发讲解

    敏捷软件开发方法论 如今,每个技术组织似乎都在为软件开发或它的一种版本实践敏捷方法. 或者至少他们相信他们这样做. 无论您是敏捷应用程序开发的新手还是几十年前使用瀑布式软件开发方法学过的软件开发,如今 ...

  4. 为什么软件开发方法论让你觉得糟糕

    为什么软件开发方法论让你觉得糟糕 围绕软件开发实践和方法的宗教战争中有很多教条.阶段门方法是否可以有效地管理软件开发风险,或者仅仅是风险管理歌舞uki?TDD是否真的可以使软件质量更高?结对编程是代码 ...

  5. 阅读为什么为什么软件开发方法论让你觉得糟糕有感

    ·软件开发方法论只是一个书面的表达形式,在我们具体开发过程中总会遇到一些与之相悖,这常常令我们感到烦恼.这就是人们常常遇到的书面与现实的相悖 **·**围绕软件开发实践和方法论,总有很多教条式的口水仗 ...

  6. 为什么软件开发方法论让你觉得糟糕?Why Software Development Methodologies Suck?

    为什么软件开发方法论让你觉得糟糕? Why Software Development Methodologies Suck? https://continuousdelivery.com/2012/0 ...

  7. 文章:为什么软件开发方法论让你觉得糟糕

    推荐阅读:为什么软件开发方法论让你觉得糟糕 Why Software Development Methodologies Suck(为什么软件开发方法论让你觉得糟糕) 这篇文章介绍了软件开发方法论给软 ...

  8. 【转】浅谈TDD、BDD、ATDD、DDD的区别

    四个开发模式意思: TDD:测试驱动开发(Test-Driven Development) BDD:行为驱动开发(Behavior Driven Development) ATDD:验收测试驱动开发( ...

  9. TDD、BDD、ATDD、DDD 软件开发模式

    四个开发模式意思: TDD:测试驱动开发(Test-Driven Development) BDD:行为驱动开发(Behavior Driven Development) ATDD:验收测试驱动开发( ...

最新文章

  1. 比Tiny YOLOv3小8倍,性能提升11个点,4MB的网络也能做目标检测
  2. php 3个循环,For循环只发布数组的前3个元素 - PHP(For loop is only posting first 3 elements of array - PHP)...
  3. python类型-python语言中的数据类型有哪些
  4. android 设置view亮度,android ImageView亮度变化
  5. vue 封装返回顶部组件
  6. OpenCV立体校准stereo calib的实例(附完整代码)
  7. Windows 安装 MySQL 8.0.11
  8. 无监督和有监督的区别_无监督元学习(Unsupervised Meta-Learning)
  9. redis学习——数据类型
  10. 6个班的计算机课平均分给,计算机六道题
  11. spark基础之存储原理
  12. mysql按时间月份查询数据
  13. Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found
  14. android 按下缩小效果松开恢复_22省份三季报:粤苏总量差距缩小,19省份实现正增长...
  15. Ubuntu下替换软件列表
  16. 最强人工智能 OpenAI 极简教程
  17. 【社工】社会工程学框架
  18. Sketch 快捷键速记表(中英对照)
  19. VR视频为什么都是弯的?
  20. 计算机程序ui设计员工资,ui设计师工资一般多少,发展前景怎么样

热门文章

  1. 创业团队:太极图形团队
  2. 安信可LoRaWAN网关 RG-02 接入TTN平台,控制多节点LoRaWAN模组。
  3. 北京市基本医疗保险A类定点医疗机构名单(2010-09-29)
  4. Eclipse 32位,64位 系统安装
  5. 程序语言 | 编程范式/泛型一览
  6. 告别传统机房:3D 机房数据可视化实现智能化与VR技术的新碰撞
  7. 计算机审计试题及答案,计算机审计练习题及答案
  8. 名额已排到10月 | Apache DolphinScheduler Meetup分享嘉宾继续火热招募中~
  9. 李洪超 硬件工程师_工作六年,如何从 layout 转硬件工程师?丨版主采访(一)...
  10. 车牌对应城市行政区编号