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