这里是第五章，测试的概述。
这是Brian Kernighan，作家，贝尔实验室英雄之一
Kernighan和Ritchie的C编程，可能你们大多数人都有这本书
如果你读过这本书，你会明白，调试的难度要比写代码翻倍
难度加倍！因此，如果你不能一次性写出优秀的代码
你将永远没有能力去调试它，因为调试将加倍困难
好了，这是 Dystra, 你来对这句话填空
测试永远不会证明软件没有错误，而是错误的存在
这句话对吗？好的，这句话由来已久了，需要牢记在心
这里是一篇一年半前的文章
它讨论为什么东西这么贵。在这里你可以看到，
他们的研究显示，不是设计有bug，而是糟糕的测试
糟糕的测试流程是代码有如此多bug的原因
文章说，完全自动化的测试环境几乎没有
这是一年半前。现在，我们也刚刚有20%
12%软件的组织已经完全自动化的测试系统
10%的软件组织手工完成所有测试。你编写测试，看测试结果
你编写测试，再看一下结果。有发现什么错误吗？
哇，不敢相信，依然是对的。其实这里是不对的。[笑]
你知道吗，在敏捷开发之前，首先你有独立的质量保证团队
有所有这些阶段和单独的团队。这样，Marge，某种意义上，
质量保证团队是要在你的代码中插入质量。[笑]
或者确保你的代码的质量。在敏捷式开发中，这是我们要做的一部分
我们不断测试。每个星期，我们产出新的代码。
你负责测试你的代码，没有别人。而且这些工具高度自动化
这和之前所说的做法不太一样
敏捷宣言中有争议的是，
是否一个好的过程就能带来软件质量
而不是由特定的团队来追着你保证质量
前面提到过BDD和TDD
一些人明白行为驱动设计，但是不清楚测试驱动开发
这里我们测试，验收测试、 集成测试，并试图捕获行为。
Tdd 是一个步骤的定义，在写代码之前先写单元测试和功能测试
所以，这就是定义。所以，好处是你总是使用最新的测试
因为你先编写测试代码。所以这就是是他们如何一起工作的
Cucumber 用于描述行为和特性
你开始编写故事点。当它们失败时，调用的RSpec的测试实现
如果失败，你就补充实现缺失的方法
当它通过测试，继续内部迭代
直到通过RSpec。
一旦你完成一个特性，就会通过cucumber的绿色步骤，返回
继续开发下去