来宾 Blog:TDD在敏捷开发中的重要性

在此访客中,Ekaterina Novoseltseva解释了为什么测试驱动的开发(TDD)对于获得敏捷的成功并探讨您可以从执行TDD获得的好处是重要的。

软件开发人员知道在向生产的过程中有很多并发症,并且在添加软件的更改后甚至更多。这就是为什么越来越多的公司开始转移到敏捷方法和TDD实践,以实现软件开发过程中的敏捷性。

现在,您可能会看到汇丰银行,芒果,Edreams等初创公司和大型国际公司,切换到敏捷方法和敏捷项目管理。许多公司声称他们是敏捷的,但不幸的是每家公司都能以不同的方式理解敏捷。在ApiumHub中,我们为许多行业的不同公司工作,并得出了真正敏捷的结论,您需要做TDD和CI。在本文中,我将展示TDD在敏捷开发中的重要性。

敏捷的本质

在我们潜入TDD之前,让我们来看看敏捷的本质。敏捷方法是指迭代和增量的演变。它帮助在不断发展的环境中的团队保持关注的价值快速交付。它是基于快速反馈,持续改进,灵活性,团队的输入,以及高质量的效果。

通常,开发过程分割为称为Sprints的短迭代。最佳冲刺是2周冲刺。每个Sprint的目标是完成一系列定义为“用户故事”的功能。用户故事仅仅是要完成的单个功能的描述。例如:“作为注册用户,我应该能够登录,以便我可以查看我的帐户。”从功能列表中,用户故事将创建积压,以帮助优先顺序和管理开发人员的工作。

当我们谈论敏捷时,我们谈论Kanban,Scrum,极端编程等。可能您听说过极端编程(XP),这是一个敏捷的软件开发方法,旨在提高软件质量和对不断变化客户要求的响应性。出于极端编程(XP)来了单元测试和测试驱动开发。使用TDD,软件开发人员在编程代码时创建单元测试,以便每个单元测试测试一小块软件代码,以确保单位按照它们所做的操作执行。 TDD允许以快速有效的方式删除,添加或编辑功能。

测试驱动开发

它是肯特贝克,他们开发了测试驱动的发展方法。 TDD利用敏捷方法中使用的短开发周期来应用迭代自动化测试。

由于在软件开发故障中经常出现,TDD是必须避免在构建阶段发现问题;在替代在过程的初始阶段发现它。

就像敏捷一样,TDD包括小迭代。在测试驱动开发中,您首先编写涵盖新功能的测试用例,然后写下制作测试通行证所需的生产代码,并在此之后重构代码以使其更加可维护。

不要忘记在TDD中您在编写代码之前写下测试,它保证更改后立即反馈。你在这里! TDD为您提供快速反馈 –敏捷方法中的关键因素。 TDD为您提供了快速确认您的代码是否表现得应该。这就是你需要节省时间和金钱的东西,以及为第一个动力优势而战!基本上你刚刚发射高质量的功能。

TDD真的简化并加快了开发新软件的过程,使得可以尽可能快地通过坚固的最小可行产品(MVP)来启动新的可扩展产品。

还为敏捷软件开发创建了连续集成(CI)。它真的与TDD一起工作。它组织开发成为功能用户故事。这些用户故事被放入较小的工作组时,Sprints。持续整合的想法是快速找到问题,为每个开发人员提供对他们的工作,而TDD评估快速工作。每次,当您对代码进行新添加时,它可以在构建集成工作时添加到运行的测试套件中。它允许您确保新增添加不会破坏现有元素,功能和开发人员的运作工作,其代码实际上可以快速通知其“打破构建”。

现在让我们看看TDD在敏捷软件开发中的主要好处。

TDD福利

快速反馈

我会说这是TDD的最大和最重要的好处。

做TDD,软件团队将对他们开发和测试的组件几乎立即反馈。与传统方法相比,这种快速反馈允许开发人员将缺陷更快地修复缺陷,其中代码在实施后几天或数周。

高度验收

当我们谈论用户故事时,TDD实施更​​有可能匹配产品所有者愿景。从验收标准中容易生成测试,而不会从架构设计或编程构造的约束中干扰。 TDD保证最终版本将满足产品所有者的需求。

清晰的范围

TDD可防止产品中有不需要的设计或组件。它定义了确切的所需功能集。它可以轻松识别冗余代码,检测和消除不必要的开发任务。

以顾客为中心

TDD是以客户为中心的敏捷过程。每次迭代都基于快速反馈,因此您确保您开发客户想要的内容以及他想要的方式。

重点

TDD通过缩小开发人员的焦点帮助保持高效性。开发人员专注于一个功能,如果它失败,您将在其上工作以使其通过测试。它强迫软件开发人员一次考虑一下较小的功能块,而不是整个应用程序。它允许团队逐步构建在传递测试中,而不是尝试从Get-Go中解决更大的图片,这可能会导致更多的错误,因此更长的开发时间。

界面

由于开发人员首先为单件功能进行测试,这意味着他们必须考虑公共接口,该公共接口需要与之集成的应用程序中的其他代码。

清洁代码

测试与公共方法相互作用,所以开发人员对可以私下的东西有更好的了解,这是赢得的’是唐的方法’T需要公开。如果没有做出TDD,并且开发人员会发出一个方法,那么他们可能必须在将来支持,这意味着他们已经为自己的方法创造了额外的工作,该方法仅旨在在课堂内部内部使用。

依赖性

依赖性开发人员模拟在运行测试时可能更快,并且不会将额外的依赖关系带到测试套件,以文件系统,网络,数据库等的形式。

安全重构

一旦开发人员通过了测试,它’然后安全地重新推荐它。尽管开发人员与遗留代码一起工作,或者代码已经写入了其他人,但没有写过测试,开发人员仍然可以使用TDD。

很少的虫子

具有更好的代码覆盖范围,开发人员节省了修复弹出的错误的时间,并且需要考虑如何解决问题。所以当一个错误出来时,开发人员仍然可以先在尝试解决问题之前首先进行测试,以确保错误获胜’t come up again.

ROI.

与未写出任何测试相比,TDD的成本在短期内更高,但是唐的项目’T有测试首先写的测试通常最终长期成本更新。

没有固体测试代码覆盖范围,或者完全是任何,在有错误和问题方面使项目更有风险,这意味着在长期修复它们的情况下将花更多的时间。更多的时间等于更多的钱,这使得该项目总体上更昂贵。此外,TDD还节省了更改功能的资金,因为测试充当安全网,保证变动赢得了’t打破现有功能。结果TDD缩短了市场的开发时间。

文件

测试可以作为开发人员的文档。如果开发人员不确定一个类或图书馆的工作原理,他们可能会读取并通过测试阅读。使用TDD,测试通常会为不同的场景编写,其中一个可能是开发人员如何使用该类的。

更好的设计软件

使用TDD软件往往是更好的设计,即松散耦合且易于维护,因为开发人员可以随时为软件仍在使用,以便在任何时候都可以使用设计决策和重构。通过运行测试来获得这种信心。

生产率

TDD减少了在返工上花费的时间

质量& scalable software

TDD允许开发人员提供可维护,灵活&易于扩展的代码。干净的代码,准备以后增长。

新功能

TDD为开发人员提供了无痛地更新其软件,以满足新的业务需求或其他不可预防的其他变量,而不会破坏其他任何内容。

结论

敏捷真的变换了软件开发。我希望在阅读本文之后,您同意敏捷意味着做TDD和CI。因为在软件开发中,代码库的更大,更难以进一步移动或更改代码,因为开发人员害怕轻松搞砸它。但是当开发人员做TDD时,他们有一个安全网,让他们看到非常快速的错误,它是如何影响系统的错误。

敏捷公司是可以快速获得反馈并迅速改变环境的反馈的公司。测试驱动开发是可以实现适应性,灵活性,可维护性和可扩展性的方法。

这位客人的作者Ekaterina Novoseltseva是CMO&敏捷项目经理 apiumhub.是一家专门从事敏捷网页和移动应用程序开发的软件开发公司。

TDD很重要

谢谢Ekaterina潜入TDD并解释敏捷发展中如此重要的原因!

多年来,有几次调查 敏捷带来的商业福利。测试驱动发展是有助于敏捷成功的实践之一,以上福利列表给出了考虑它的理由。

在我的第二本书中 什么推动质量 我探讨了质量在所有软件开发阶段中发挥作用。本书深入潜入质量,并为质量提供精益的方法,这些方法分析了客户要求提供产品的全部开发链。 TDD是本书中描述的众多质量实践之一。

你可以 敏捷中的产品质量 使用故障滑移。该方法是通过决定在规划游戏何时以及如何投资质量方面来降低质量风险。 TDD帮助您早先找到缺陷,并确保您的软件保持正常工作。

你用过TDD吗?它带给你哪些好处?

 

分享这种经历
  • 30
    分享

来宾

Gastlogs Zijn Artikelen Van Diversee Schrijvers,Waarin Ze Schrijven在敏捷,精益en继续矫正。 Interesse Om een gastblog te publiceren op Benlinders.com.? Neem Dan. 联系Met Mij Op!

发表评论

本网站使用AkisMet减少垃圾邮件。 了解如何处理评论数据.