什么是测试驱动开发:新手指南

已发表: 2018-03-12

自从未知的时间以来,程序员和错误一直在为争夺霸权而进行永无止境的斗争。 这是不可避免的——即使是最好的程序员也会成为错误的牺牲品。 没有代码是真正安全的,这就是我们执行测试的原因。 程序员,至少是理智的程序员,通过在开发机器上运行代码来测试他们的代码,以确保它完成了它应该做的事情。 传统上,测试用例是在编写代码之后编写的,但在测试驱动开发中,自动化测试用例是在编写任何代码之前编写的,以便可以同时检查执行和测试。
在本文中,我们将深入讨论测试驱动开发以及为什么它比传统方法更好!

目录

什么是测试驱动开发?

TDD生活圈
测试驱动开发是作为极限编程 (XP) 方法的一部分创建的,被称为“测试优先”概念 测试驱动开发允许您彻底测试您的代码,并且还使您能够快速轻松地重新测试您的代码,因为它是自动化的。 本质上,在编写任何代码之前,程序员首先创建一个单元测试。 然后,程序员创建足够的代码来满足单元测试。 一旦测试通过并重构代码,程序员就可以继续进行进一步的改进。 测试驱动开发确保代码经过彻底测试,从而产生模块化、可扩展和灵活的代码。
每次添加新功能时,都需要经历所谓的 TDD 的“生命周期”。 让我们更多地谈谈这个生命周期。
如何成为全栈开发人员

测试驱动开发生命周期

测试驱动的开发生命周期涵盖了从编写初始单元测试到重新编写代码的所有内容。
测试驱动开发

    • 添加测试:每个新功能在实施之前都需要经过测试。 编写测试的基本要求是清楚地了解所有要求。 这是使用用例和用户故事来完成的。

    • 运行所有测试并检查网络测试:这样做是为了确保我们的测试正常工作。 基本上,此阶段旨在检查任何不符合要求的代码都没有通过测试。 通过这样做,此步骤消除了手头进行错误测试的可能性。

    • 编写代码:既然您已经完成了测试,下一步显然是编写清除测试的代码。 这段代码不需要在所有方面都完美无缺,但它需要通过测试。 一旦我们确定此代码清除了测试,就可以根据要求对其进行修改。

    • 运行测试:写完代码,现在是时候看看代码是否通过了测试。 如果您的代码通过了测试,则意味着您的代码符合要求——直到现在。

    • 重构代码:这基本上是为了清理代码。 重构不会对任何功能造成损害; 它只是通过删除测试代码和生产代码之间的重复来清理代码。

  • 重复:这个循环现在通过新的测试重复以添加更多功能。 每个功能都经历相同的循环。 本质上,每次测试运行之间的步骤大小不应超过 1-10 次编辑。 如果代码没有快速通过测试,开发人员必须恢复并且不要过度调试。
为什么公司希望聘请全栈开发人员

测试驱动开发的优缺点

与传统的测试方法相比,测试驱动的开发有一些明确的优点——传统的测试方法大多是手动的。 然而,这并非万无一失。 就像任何其他技术一样,测试驱动开发也有一系列缺点。

让我们详细了解一下 TDD 有哪些好处:

    • 编写小型测试可确保代​​码的模块化。 实践 TDD 可以帮助您了解良好模块化设计的基本原则。

    • TDD 在代码实现期间提供了清晰性,从而在重构阶段启用了安全网。

    • 使用 TDD,协作变得容易得多,因为现在人们可以自信地编辑代码,因为如果他们的更改未达到测试的标记,测试会通知他们。

    • TDD 的基础是单元测试。 正因为如此,重构变得更加容易和快速。 重构旧代码很痛苦,但如果代码有单元测试支持,它就会变得容易得多。

    • 它有助于在开始编码部分之前澄清所有要求。 这样,避免了以后可能出现的许多歧义。

    • 测试驱动开发侧重于在编写时进行测试。 这迫使程序员使他们的接口足够干净以通过测试。 在您处理一段没有经过 TDD 的代码之前,很难理解这种优势。

  • 愚蠢的错误几乎立即被发现。 它有助于消除那些如果在 QA 中发现会浪费大量时间的错误。

现在,让我们看看测试驱动开发的局限性是什么:

    • 需要维护用于测试的测试套件,否则测试可能不是完全确定的。

    • 测试很难编写——尤其是在单元测试阶段之后。

    • TDD 确实减慢了开发速度,至少在最初是这样。

    • 就像任何形式的开发一样,只是做和做好之间有很大的区别。 编写好的单元测试需要一定的专业水平。

    • 很难将这种方法应用于您的遗留(现有)代码。

    • TDD 要求您执行例行的内务管理。 有必要改进测试以使它们运行得更快。

    • 任何单元测试框架中的花哨功能很容易让人分心,但应该记住,简单的测试往往会产生最好的结果。

  • 除非团队中的每个人都正确地维护他们的测试,否则整个系统会迅速退化。
如何在您的第一份软件开发工作中取得成功

综上所述…
就应用程序开发的未来而言,测试驱动开发是前进的方向。 有许多自动化测试框架,例如 PHPUnit、Serenity、Robot、RedWoodHQ 等等。 选择适合您需求的应用程序,立即开始构建更好的可维护应用程序!

报名参加世界顶尖大学的软件工程课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

成为全栈开发人员

UpGrad 和 IIIT-Bangalore 的软件开发 PG 文凭
IITB 软件开发执行 PG 计划