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

这篇具有很好参考价值的文章主要介绍了软件开发方法论:TDD、BDD、DDD、ATDD、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)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

分布式架构+敏捷开发模式
软件开发方法论:TDD、BDD、DDD、ATDD、DevOps

微服务架构+DEVOPS
软件开发方法论:TDD、BDD、DDD、ATDD、DevOps
软件开发方法论:TDD、BDD、DDD、ATDD、DevOps文章来源地址https://www.toymoban.com/news/detail-461098.html

到了这里,关于软件开发方法论:TDD、BDD、DDD、ATDD、DevOps的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搜索方法论

    搜索技巧: 1. “”:不拆分。当我们查找的内容为一个词组或者多个汉字,那么我们用双引号把他们括起来再进行查找,此时搜索到的结果最少也最精确。 2. -干扰词(中间有个空格) 3. +确定词(中间有个空格)  4. filetype:文件格式 效果就是寻

    2024年02月12日
    浏览(26)
  • SQL-方法论

    写SQL时可以考虑的手段: 行转列 先分为多个临时表,然后JOIN到一起 用sum(if()) 列转行 先分为多个临时表,然后UNION到一起

    2024年02月14日
    浏览(36)
  • 论文阅读与管理方法论

    构建知识体系 通过Related Works快速了解该方向研究现状,追踪经典论文。 紧跟前沿技术 了解领域内新技术及效果,快速借鉴到自身项目。 培养科研逻辑 熟悉论文体系,了解如何快速创造新事物,培养良好的科研习惯。 写论文 面试找工作 快速熟悉某领域 发展历程 、 现状及

    2024年02月15日
    浏览(35)
  • 性能分析方法论简介

    限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 通常,我们是通过理论指导实践,而实践又反哺完善理论,二者缺一不可。 总的来说,性能优化是 从 时间 和 空间 两方面做出优化 ,然后取得一个可接受的平衡点。记住,无论怎么优

    2023年04月19日
    浏览(39)
  • SOA认知和方法论

    在软件设计领域,企业架构通常被划分为如下五种分类: 如何理解架构分类依据及其彼此之间的关系?业务是企业赖以生存之本,因此业务架构是基础、是灵魂,其他一切均是对业务架构的支撑;根据业务架构形成与之相应的产品架构和数据架构;最后通过技术架构落地实施

    2024年02月08日
    浏览(35)
  • 数据建模方法论及实施步骤

    了解数据建模之前首先要知道的是什么是数据模型。数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。 一、概要:数据建模简介 数据基本用于两种目的:1、操作型记

    2024年02月05日
    浏览(32)
  • SRE方法论之拥抱风险

    系统不可能100%可靠,人都不可能100%健康,更何况我们人类创造的系统?所以,任何软件系统都不应该一味地追求 100%可靠。事实证明,可靠性超过一定值后,再提高可靠性对于一项服务来说,结果可能会更差而不是更好!极端的可靠性会带来成本的大幅提升:比如过分追求稳

    2024年02月05日
    浏览(61)
  • 控制论与科学方法论

    《 控制论与科学方法论 》,真心不错。 书籍原文 电子版PDF :https://pan.quark.cn/s/00aa929e4433(分类在 学习 目录下) 备用链接:https://pan.xunlei.com/s/VNgj2vjW-Hf_543R2K8kbaifA1?pwd=2sap# 控制论是一种让系统按照我们想要的方式运行的方法。 以下是控制论、信息论、系统论的总结: 控制

    2024年01月25日
    浏览(26)
  • MySQL的性能优化方法论

    作者:禅与计算机程序设计艺术 MySQL是一个开源的关系型数据库管理系统,由瑞典MySQL AB开发并发布。它的目的是为了快速、可靠地处理复杂的事务处理,支持多种编程语言,包括C、C++、Java、PHP、Python等。它是一个高效、可伸缩的数据库服务器,在Web应用方面也经常被应用到

    2024年02月06日
    浏览(38)
  • 黑盒测试方法论—边界值

    边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。边界值分析法也是作为对等价类划分法的补充,测试用例来自等价类的边界。 这个方法其实是在测试实践当中发现,Bug 往往出现在定义域或值域的边界上,而不是在其内部。为检测边界附近的

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包