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
《JavaScript 进阶实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- 天择一般不会测试驱动开发,但是会在feature基本功能模块完成时写单元测试,这时也可以通过可测试性衡量代码的一些设计问题,然后重构改进,最后完成所有功能,并让所有单元测试通过。覆盖率一般有代码扫描工具保证(比如SonarQube),但是这个与项目高度相关,有时会出现为了提供覆盖率而写测试case的情况。
作者回复: 有测试总好过没有,也可以进一步尝试下测试驱动
2022-12-14归属地:海南 - 无咎第一张图,步骤1:编写失败的测试用例,应该是红色,步骤3:重构应该是蓝色。2023-04-22归属地:北京
- 盛夏。没有写单元测试,工作中基本是自测和QA测试2022-12-06归属地:北京
收起评论