JavaScript 进阶实战课
石川
JavaScript Patterns and Anti-Patterns 等开源项目创建者,O'Reilly 技术评审
15066 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
开篇词 (1讲)
JavaScript 进阶实战课
15
15
1.0x
00:00/00:00
登录|注册

32|测试(一):开发到重构中的测试

你好,我是石川。
在软件工程中有很多思想,其中被谈及最多的就是敏捷交付了。虽然人们一直讲敏捷,快速交付,但是往往忽略了敏捷不代表牺牲质量。而问题是,在强调开发速度的同时,交付质量在很多时候容易被忽视。于是,测试驱动开发(TDD)的思想就诞生了,虽然后面又出现了面向用户的行为驱动测试,但是对于开发者而言,TDD 仍然是和敏捷最成熟的搭配开发模式。
今天,就让我们来看看测试驱动的开发。

红绿重构

测试驱动开发中有个很重要的概念就是红绿重构(red/green/refactor)循环,在一个循环中,有三个步骤:
第 1 步是创建一个失败的测试,因为这时我们还没有相关的功能被开发出来,所以测试肯定是失败的,这是红色的部分;
第 2 步是写出恰好能通过测试的代码,这个就是绿色的部分;
第 3 步是重构,在这一步中我们会看之前的代码是否有可以优化的部分来进行优化。
乍一看,你可能觉得这似乎是反直觉的。TDD 和传统的开发相反,在传统的开发中,按道理来说我们应该先做第 3 步,设计出“优雅”的代码结构;然后再做第 2 步,写好代码;最后再做第 1 步,测试基于我们的设计开发出来的代码。
那为什么在 TDD 中我们要反其道而行呢?这其中的原因是我们的测试用例并不是凭空想象的,它是根据我们的用户故事和验收条件创建的。它的目的是让我们从第 1 步开发前就清楚开发的目的和想要得到的结果,然后第 2 步才是写出满足我们目标的代码,也就是一步步实现目标的过程。这时,如果我们的代码写好了,那它自然而然就通过测试了,从而避免积累了大量的问题后,才发现之前写的程序有问题。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了测试驱动开发(TDD)的核心概念和实践方法,强调了红绿重构循环在开发过程中的重要性。作者首先阐述了TDD的目的,即在开发前就清晰地了解开发目标和预期结果,避免在开发后才发现问题。此外,文章还对行为驱动开发(BDD)与TDD进行了比较,并提及了不同类型的测试,如单元测试、集成测试和端到端测试,在软件开发中的作用。通过介绍这些内容,读者可以更全面地了解软件开发中的测试流程和方法。文章内容丰富,适合对软件开发过程和测试方法感兴趣的读者阅读。同时,下一讲将更具象化地展开TDD的实践,并介绍Jest测试框架的广泛支持,以及非功能性测试的相关内容。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《JavaScript 进阶实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • 天择
    一般不会测试驱动开发,但是会在feature基本功能模块完成时写单元测试,这时也可以通过可测试性衡量代码的一些设计问题,然后重构改进,最后完成所有功能,并让所有单元测试通过。覆盖率一般有代码扫描工具保证(比如SonarQube),但是这个与项目高度相关,有时会出现为了提供覆盖率而写测试case的情况。

    作者回复: 有测试总好过没有,也可以进一步尝试下测试驱动

    2022-12-14归属地:海南
  • 无咎
    第一张图,步骤1:编写失败的测试用例,应该是红色,步骤3:重构应该是蓝色。
    2023-04-22归属地:北京
  • 盛夏。
    没有写单元测试,工作中基本是自测和QA测试
    2022-12-06归属地:北京
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部