我们使用的主要工具是集成测试(integration test)和单元测试(unit test)

集成测试在 RSpec 中叫做 request spec,它允许我们模拟用户在浏览器中和应用程序进行交互的操作。和 Capybara 提供的自然语言句法(natural-language syntax)一起使用,集成测试提供了一种强大的方法来测试应用程序的功能,而不用在浏览器中手动检查每个页面。

TDD 的好处在于测试优先,比编写应用程序的代码还早。刚接触的话要花一段时间才能适应这种方式,不过好处很明显。我们先写一个失败测试(failing test),然后编写代码使这个测试通过,这样我们就会相信测试真的是针对我们设想的功能。这种“失败-实现-通过”的开发循环包含了一个心流,可以提高编程的乐趣并提高效率。测试还扮演着应用程序代码客户的角色,会提高软件设计的优雅性。

在测试驱动开发中,我们先写一个会失败的测试,在很多测试工具中会将其显示为红色。然后编写代码让测试通过,显示为绿色。最后,如果需要的话,我们还会重构代码,改变实现的方式(例如消除代码重复)但不改变功能。这样的开发过程叫做“遇红,变绿,重构(Red, Green, Refactor)”。

【Rails】TDD-测试驱动开发相关推荐

  1. 解读 TDD 测试驱动开发

    转自:http://www.jianshu.com/p/62f16cd4fef3 本文结构: 什么是 TDD 为什么要 TDD 怎么 TDD FAQ 学习路径 延伸阅读 什么是 TDD TDD 有广义 ...

  2. 实现TDD测试驱动开发

    为什么要用 TDD? TDD 可以让软件开发更快更好. 随着时间的推移,采用 TDD 方式开发新功能会越来越快,修改现有代码的成本可控.相反,传统开发模式开发新功能会越来越慢,修改代码的成本会指数增长 ...

  3. servlet实现简单登录功能-基于测试驱动开发TDD

    今天学习了测试驱动开发(TDD)模式,用这个方法写一个简单的前端登录功能(基于servlet&Jsp的登录功能-三层架构实现) 不知道测试驱动开发,可以点这个: https://blog.cs ...

  4. 在敏捷中应用测试驱动开发

    在敏捷和DevOps领域,企业越来越关注持续集成和持续部署问题.他们更频繁地更新软件,给软件测试造成额外的时间压力.而测试驱动开发可以成为解决这个问题的一剂良方. \\ 什么是测试驱动开发? \\ 测 ...

  5. 测试驱动开发 测试前移_测试驱动开发:它是什么,什么不是。

    测试驱动开发 测试前移 by Andrea Koutifaris 由Andrea Koutifaris Test driven development has become popular over ...

  6. 【软件测试】测试驱动开发

    TDD,测试驱动开发,从敏捷软件开发方法开始流行,是一种非常实用的质量保证执行方式.敏捷软件开发方法使得TDD流行起来. TDD的思想就是要在开发(设计和编码)应用程序代码(要测试的单元)之前,必须先 ...

  7. 测试驱动开发_DevOps之浅谈测试驱动开发

    "测试驱动开发(Test-Driven Development, TDD),以测试作为开发过程的中心,它要求在编写任何产品代码之前,先编写用于定义产品代码行为的测试,而编写的产品代码又要以使 ...

  8. 简单的11步在Laravel中实现测试驱动开发

    测试驱动开发(英语:Test-driven development,缩写为TDD)是一种软件开发过程中的应用方法,由极限编程中倡导,以其倡导先写测试程序,然后编码实现其功能得名. 下文是我在Mediu ...

  9. 被高估了的测试驱动开发?

    测试驱动开发(TDD)始于上世纪 90 年代,时至今时今日,依然只有少数的开发者在践行着.本文作者从软件开发者的角度,又一次帮助我们定义了测试驱动开发,解答了众多开发着对 TDD 常见的谬误. 作者 ...

  10. C++ 测试驱动开发

    看到一篇非常好的C++测试驱动开发文章,这里转载下. 测试驱动开发(TDD)背景及综述 测试驱动开发是 Kent 提出的一种新的软件开发流程,现在已广为人知,这种开发方法依赖于极短重复的开发周期,面对 ...

最新文章

  1. 韬光养晦的Sony AI,凭什么与Google和Facebook平起平坐?
  2. bool类型返回值_Python 到底是强类型语言,还是弱类型语言?
  3. ListDefinition Tips
  4. 命令行下的FTP使用详解
  5. 你知道你的模型可以为公司赚多少钱吗
  6. 行波iq调制器_低功率IQ调制器的基带设计实例—电路精选(1)
  7. C4C Cloud Application Studio做ABSL开发的一些性能方面的最佳实践
  8. 【转】Win10系统怎么设置无线做AP热点_win10设置无线为ap热点的步骤
  9. java 封装api_关于java 封装某个功能为api形式供其他用户调用的问题
  10. 基本数据类型-列表_元组_字典
  11. visio中公式太小_冲压模具设计:冲床吨位计算公式、实例分析,设计师值得一看...
  12. Matplotlab可视化学习笔记(二):如何绘制柱状图
  13. Mac谷歌浏览器添加JSONView的插件以提高开发的效率
  14. Android多媒体技术(二)浅析Camera视频实时采集中涉及的参数配置
  15. linux上ftp上传文件失败
  16. 跨维度的打击,是可以直接秒杀的
  17. 【MyBatis】 MyBatis与MyBatis-Plus的区别
  18. TI公司与MSP430单片机
  19. 车辆识别系统消息服务器异常,原来这样能处理好停车场车牌识别道闸一体机异常问题...
  20. ERNIE的掩码机制代码解析

热门文章

  1. 计算机网络重要协议汇总及解释笔记
  2. 我的世界中国版服务器家园系统,《我的世界》中国版家园建造图文教程 家园建造位置推荐...
  3. 深度学习入门笔记之VggNet网络
  4. 在项目中git新建分支 删除本地分支和合并分支
  5. 从0-1做产品快速启动,大型干货案例分享
  6. 小程序 ESLint Prettier
  7. 程序设计入门——C语言(翁恺老师)我的作业
  8. 关系型数据库三大范式介绍
  9. html中div文字垂直居中显示,CSS文本和div垂直居中方法总结
  10. Oracle 自定义异常