15 第1章引论 用户需求验证 验收测试 需求分析和定义( 系统非功能特性验证 系统非功能性测试 系统设计Q 功能验证 →功能测试 详细功能设计 验证过程 代码验证 构建过程 编码Q单元测试 图1-7V模型呈现测试和开发 (4)代码的验证对应单元测试和集成测试。 也就是说,如果只在某一两个方面(如代码测试、功能测试)完成对软件产品的测试,都说 明测试是不完整的,只有从这4个层次完成对软件产品的测试才是完整的。在第4章还会讨 论W测试模型,以进一步了解测试与开发的关系。 测试驱动开发的思想 1.6 测试和开发有一对一的关系,再往前进一步就是测试驱动开发。 在目前比较流行的敏捷方法(如极限编程、Scrum方法等)中,提出了“测试驱动开发(Test 测试在前、编码在后的开发方法。TDD有别于以往的先编 Driven Development,TDD)" 码后测试的开发过程,而是在编程之前先写测试脚本或设计测试用例。TDD在敏捷方法中被 DrivenDevelopment,单元测试驱动开发),而在IBM Rational 统一过程(Rational Unified Process,RUP)中被称为“测试优先的设计(test-first design)”。所有这些都在强调“测试先 行”,以更好地确保内建质量及设计或代码具有可测试性,进而确保测试的充分性。 TDD具体实施过程如图1-8所示。在打算添加某项新功能时,先不要急着写程序代码, 而是将各种特定条件、使用场景等想清楚,为待编写的代码先写一段测试用例。然后,利用集 为新性能 开始 写一个测试 编译 如果需要进行重构 运行测试 修订编译错误 并通过 运行测试 并发现错误 编写代码 测试驱动开发的软件过程 图1-8