软件测试 52 讲
茹炳晟
腾讯 TEG 基础架构部 T4 级专家
71691 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 63 讲
结束语 (1讲)
软件测试 52 讲
15
15
1.0x
00:00/00:00
登录|注册

44 | 测试先行:测试驱动开发(TDD)

如果没有的话,你是否可以设象一下你会怎么规划和设计一个TDD的项目?
如果有的话,是否可以分享一下你的实践心得?
在实际的工程项目中,你实际使用过TDD吗?
重复以上步骤直到所有测试通过
重构代码
再次运行所有的测试,看是否有测试失败
编写实现软件新功能的实现代码
运行所有测试,看看新添加的测试是否失败
为需要实现的新功能添加一批测试
轻量级的文档
更好的交付质量
促使更好的系统设计
更灵活的迭代
对需求精准的把控
目的是让新增的测试代码能够通过
针对新增的测试代码来编写产品的功能代码
编写测试代码
在开发人员实现功能代码前,先设计好测试用例
思考题
TDD的实施过程
TDD的优势
TDD的核心思想
测试驱动开发(TDD)
测试驱动开发(TDD)

该思维导图由 AI 生成,仅供参考

你好,我是茹炳晟。今天我和你分享的主题是“测试先行:测试驱动开发(TDD)”。
通过上一篇文章,我们已经深入理解了什么是探索式测试,以及如何用探索式测试开展具体的测试。今天我这次分享的目的,就是和你聊聊软件测试领域中的另一个很热门的话题:测试驱动开发,也就是 Test-Driven Development,通常简称为 TDD。
听上去有些迷惑是不是?测试怎么可能驱动开发呢?在传统软件的开发流程中,软件开发人员先开发好功能代码,再针对这些功能设计测试用例、实现测试脚本,以此保证开发的这些功能的正确性和稳定性。那么,TDD 从字面上理解就是要让测试先行,这又是怎么一回事呢?
确切地说,TDD 并不是一门技术,而是一种开发理念。它的核心思想,是在开发人员实现功能代码前,先设计好测试用例的代码,然后再根据测试用例的代码编写产品的功能代码,最终目的是让开发前设计的测试用例代码都能够顺利执行通过。
这样对于开发人员来说,他就需要参与到这个功能的完整设计过程中,而不是凭自己想象去开发一个功能。他有一个非常明确的目标,就是要让提前设计的测试用例都可以顺利通过,为此,他先实现测试用例要求的功能,再通过不断修改和完善,让产品代码可以满足测试用例,可以说是“小而美”的开发过程。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

测试驱动开发(TDD)是一种颠覆性的开发理念,旨在让测试先行,以确保开发的功能符合实际需求。TDD的实施过程遵循一定的流程:为新功能添加测试、运行测试、编写实现代码、再次运行测试、重构代码,直到所有测试通过。通过具体例子展示了TDD的整个流程。在实际开发中,需要控制测试用例的粒度、注意代码的简洁和高效,以及通过重构保证最终交付代码的优雅和简洁。TDD的优势包括对需求精准的把控、更灵活的迭代、促使更好的系统设计、更好的交付质量以及轻量级的文档等。总结了TDD的核心思想和优势,并提出了思考题,引发读者对TDD的实际应用进行思考和讨论。 TDD的实施过程使得测试工作从软件研发生命周期的最后端走向了最前端,为软件研发流程带来了颠覆性的变化。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件测试 52 讲》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(36)

  • 最新
  • 精选
  • 叶夏立
    tdd怎么样做才能落实到项目中,我觉得这才是核心问题,当然不是所有的项目都适合tdd。不知道茹老师是否能分享一下tdd落地推动的做法?

    作者回复: 很高的问题,首先就像你说的,不是所有的项目都适合tdd,而且采用tdd对测试人员的要求会很高。我的建议是一些小型的poc项目,或者是功能相对单一的微服务开发是比较适合tdd的。另外,要推动tdd,一定需要改革整个研发的流程,这个往往是十分困难的,也正是这个原因,实际开展tdd的项目也不是很多。

    2018-10-08
    3
  • 伪专家
    没有强的coding能力,不行的

    作者回复: 是的,tdd一定要求有很好的代码能力。

    2018-10-08
    2
    2
  • subona
    tdd测试代码都是单元测试了吧

    作者回复: 都是直接面向代码的

    2018-12-24
    2
    1
  • 涅槃Ls
    打卡44,国庆节后 好好学习

    作者回复: 支持打卡👍

    2018-10-09
    1
  • 仰望星空
    老师讲的很系统,每篇都听,几乎涵盖了测试的方方面面。有一点就是设计安全性方面的测试能否也讲一讲呢

    作者回复: 感谢支持,后面马上会有讲渗透测试的文章

    2018-10-08
    1
  • 小老鼠
    您是不是把TDD、BDD、ATDD混在一起了😄

    作者回复: 本质上这三个是不同层面的东西,但是出发点和思路是异曲同工的

    2018-11-29
  • ~黑凤梨~
    我们WEB项目也在要求做TDD,并将TDD与现有的CICD(其实只有CD)结合,不知道具体如何来管理TDD的test case那些东西。希望老师指点一下,谢谢。

    作者回复: 严格来说,前端项目不一定适合tdd,更适合的应该是bdd,当然和jenkins之类的工具结合本身的确是个好方法,这种情况下,测试用例也都需要通过代码仓库来集中版本化管理

    2018-10-09
  • 秦浩然
    虽然 TDD 并不适合所有项目,但是将 TDD 思想放大到整个开发流程上,我总结了一套开发流程,请大家参考。 所有人员参与需求评审 -> 测试人员编写测试用例 -> 所有人员参与用例评审 -> 开发人员按照测试用例进行编码 -> 开发人员执行用例,进行自测,所有用例通过后 -> 开发人员提测 -> 测试人员进行测试。 其中的好处个人觉得主要有两点: 1. 在编码前完成测试用例,可减少开发中需求变更带来的风险。因为在写测试用例的时候,会对需求进行深度分析,思考需求是否合理,在我的经验中,测试组一定会发现不合理的需求,如果这些不合理的需求在编码前就被发现,后面返工的几率就小很多; 2. 在自测环节,开发人员保证所有用例都通过,可以减少测试环节的轮次。因为如果提测质量太差,会增加测试人员和开发人员沟通成本,如果一些基本问题能在自测环节解决,那测试人员会有更多精力放在探索性测试、压力测试、整体功能回归等测试中。 总而言之,如果能达到“缩短发布周期,提高发布质量”的目的,都是好方法。
    2019-04-09
    10
    50
  • 刘海贤
    做到TDD这样的流程,目前国内我是不知道有哪些公司。另外,这样的研发改革,是不是开发可有可无了?因为实现这些功能测试同学都可以去完成了哈。。。
    2019-08-10
    3
    4
  • 秦浩然
    确实要考虑项目的适用性,如果对于试水项目、用户需求不确定的,就不太合适了。后期需求频繁变更的话,测试的维护成本也是很高的。
    2019-04-08
    1
    3
收起评论
显示
设置
留言
36
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部