对测试驱动开发的一些理解

测试驱动开发解决什么问题?

  • 系统测试和集成测试不容易覆盖一些代码细节,难以做到很高的代码覆盖率;测试驱动开发编写的测试一般是单元测试,而且由开发者编写,针对单个模块容易做到各个情景的测试覆盖。

  • 系统测试和集成测试太慢;单元测试快。

  • 测试人员添加测试对功能或者BUG进行回归的周期太长,反馈不及时,不利于开发积极性;测试驱动开发测试先行,每次聚焦一个细粒度问题,测试通过表示问题解决,反馈及时开发容易有成就感。

  • 测试人员添加测试对功能或者BUG进行回归的周期太长,如果开发团队较大或者对某个模块的修改比较频繁,可能会因为回归不及时造成功能被破坏或者修复的BUG重现;测试驱动开发测试先行,不会有回归不及时的情况。

  • 使用系统测试或集成测试对功能或BUG进行回归,很难聚焦和定位问题;测试驱动开发每个测试只覆盖一个情景,一旦测试失败,几乎不需要调试就知道问题出在什么地方。

  • 调试难,有时调试一个问题需要几天,调试的效率和方便性比较依赖于开发环境和开发工具;测试驱动开发可以减少很多调试。

测试驱动开发可能有什么问题?

说“可能”是因为我的理解不深刻,有些情景纯属想象而没有相应的实践经验和总结

  • 有些情况下对象之间在业务上就有很多关联和耦合,虽然可以增加接口进行解耦,但是构建测试上下文的过程会变得比较复杂。

  • 测试也是代码,在需求变化比较频繁,或者是开发的试验阶段,或者程序结构变化频繁的时候,测试本身可能不容易维护。

测试驱动开发有什么优点?

除了上面测试驱动开发解决的问题之外的,额外的优点

  • 测试即文档,单元测试是不会说谎的文档。

  • 测试驱动开发是对开发的限制,如果测试写得好,程序的设计就不会太差,模块的耦合性就不会太强,BUG就不会太多。

  • 修改代码的时候会比较有保障。

  • 编写测试时的过程可以帮助自己理解和细化需求,分解问题,然后逐个覆盖逐个解决,步步为营;

  • 用测试驱动替代调试的好处,完成功能或者修复BUG的同时也完成回归;

  • 结硬寨(测试),打呆仗(开发);扎实,少犯错,少走弯路。

测试驱动开发实践方法

测试驱动开发三纪律

  • 没有测试之前不要写任何产品代码;

  • 只编写恰好能够体现一个失败情况的单元测试代码;

  • 只编写恰好能够使一个失败的单元测试通过的产品代码。

测试驱动开发微循环

每次只关注解决一个问题

测试—>实现—>重构—>测试……

对测试驱动开发的一些理解相关推荐

  1. 谈谈个人对 TDD (测试驱动开发) 的理解

    文章目录 介绍 我心中的 TDD 如何做 Tasking 举个例子 - Tasking 纵向拆分 Story 背景 Story -- 粗略版 Story -- 清晰版 Story -- 扩充 Task ...

  2. 书评:测试驱动开发的艺术

    读罢<测试驱动开发的艺术>,忽然想起中国传统文化中的"道器之辩".<易经>曰:形而上者谓之道,形而下者谓之器.中国的传统文化常常是重道轻器,认为道本器末,即 ...

  3. 测试驱动开发是否是一种强迫症?

    \ 本文要点 \\ 现代软件测试中,开发人员需编写测试,并逐渐负责测试自己及同事的代码.\\t 害怕失败或"评价焦虑"是十分常见的心理状态,它们受自我测试和团队测试的直接影响.\\ ...

  4. 浅谈测试驱动开发(TDD)

    背景 一个高效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦.国人对软件蓝领的不屑,对繁琐冗长的传统开发过程的不耐,使大多数开发人员无所适从.最近兴起的一些软 ...

  5. 掌握测试驱动开发的3个关键因素(译)

    从戴维恩斯坦教数千软件开发者们如何更有效地以测试驱动开发的10年来,他学会了掌握测试驱动开发的3个关键组成部分:理解它真正是什么,使代码稳定可测,并且获得实际动手经验.让我们看这些因素,找到它在你的项 ...

  6. 从测试角度对测试驱动开发的思考【转】

    测试驱动开发(TDD)是极限编程的重要特点,它以不断的测试推动代码的开发,既简化了代码,又保证了软件质量.本文主要从测试角度出发,从需求分解等四个阶段阐述了测试人员在测试驱动开发中所发挥的促进作用 大 ...

  7. 测试驱动开发 测试前移_测试驱动陷阱,第2部分

    测试驱动开发 测试前移 单元测试中单元的故事 在本文的上半部分 ,您可能会看到一些不好但很受欢迎的测试示例. 但是我不是一个专业的批评家(也被称为"巨魔"或"仇恨者&qu ...

  8. 测试驱动开发 测试前移_测试驱动开发–双赢策略

    测试驱动开发 测试前移 敏捷从业人员谈论测试驱动开发 (TDD),所以许多关心代码质量和可操作性的开发人员也是如此. 我曾几何时,不久前设法阅读了有关TDD的文章. 据我了解,TDD的关键是: 编写测 ...

  9. 测试驱动开发–双赢策略

    敏捷从业人员谈论测试驱动开发 (TDD),所以许多关心代码质量和可操作性的开发人员也是如此. 我曾几何时,不久前设法阅读了有关TDD的文章. 据我了解,TDD的关键是: 编写测试,但失败 代码,使测试 ...

最新文章

  1. ora-01033:oracle initializationgorshutdown 处理方法
  2. Python使用远程仓库时建议忽略的文件
  3. 绝对震撼 7款HTML5动画应用及源码
  4. 化学专业尽早转行_尽早查看针对Java 11的功能
  5. javaweb 常用jar包_使用javaweb写一个登录案例
  6. 计算机中2的四次方为啥是4位,计算机基础试题2(4页)-原创力文档
  7. oracle复合字段,复合索引 选择频繁的字段,还是选择选择性低的字段 放在前面?...
  8. python对excel增删改查语句_利用python模拟sql语句对员工表格进行增删改查
  9. (转)tomcat配置访问项目时不需要加项目名称
  10. webpack4.x中使用postcss-loader、autoprefixer给CSS属性自动添加前缀
  11. 动态生成圈形+文字的图片
  12. Bailian2796 Bailian3681 数字求和【入门】
  13. 【Spring 核心】装配Bean(一) 自动化装配
  14. 傅里叶变换对_复变函数6傅里叶变换
  15. HTML5项目实战之旅行社网站——PC端固定布局
  16. jqGrid设置三级表头和表头合并
  17. 关于传奇自动触发的几个常用脚本OnKillMob、StdModeFunc、等触发事件
  18. 前端经典面试题(持续更新)
  19. 规划计算机网络需要考虑,论计算机网络规划及实现
  20. 2021年4月4日腾讯笔试

热门文章

  1. Open SSH下载链接
  2. 汇智动力学院——Java 浅谈数据结构和算法
  3. Xen I/O虚拟化原理——Xen下总线、设备和驱动
  4. 原生js实现GET和POST
  5. 这10本Python与算法书,你绝对值得拥有!
  6. JMS583硬盘盒无法识别傲腾M10的解决(含JMS583固件更新方法及最新固件)
  7. Centos7 查看磁盘i/o, 定位占用i/o读写高的进程
  8. 自动化测试—业务线仿真回归流程剖析
  9. 改进DH参数之IRB1200
  10. 图像处理(十一)图像分割(3)泛函能量LevelSet、snake分割