极限测试
XP模型高度依赖模块的单元和验收测试。总的来说,对每个无论多小的递增的代码变更,都必须进行单元测试,以确保代码库满足其规格说明的要求。
极限测试(XT)需要首先创建单元测试和验收测试,然后才创建代码库。
8.1、极限编程基础
XP采取简单的设计,在开发人员和客户之间建立联系、不断地测试代码库、重构以适应规格说明的变更,以及寻求用户的反馈。
4个概念:
1、 聆听客户和其他程序员的谈话
2、 与客户合作,开发应用程序的规格说明和测试用例
3、 结对编码
4、 测试代码库
12个实践:
1、 计划与需求分析
将市场和业务开发人员集中起来,共同确认每个软件特征的最大商业价值
以使用场景的形式重新编写每个重要的软件特征
程序员估计完成每个使用场景的时间
客户根据估计时间和商业价值选择软件的功能特征
2、 小规模、递增地发布努力添加细微的、实在的、可增值的特性,频繁发布新版本
3、 系统隐喻编程小组确认隐喻,便于建立命名规则和程序流程
4、 简要设计实现最简单的设计,使代码通过单元测试,假设变更即将发生,因此不要在设计上花太多时间,只要不停地实现
5、 连续测试在编写模块之前就生成单元测试用例,模块只有在通过单元测试之后才告完成,程序只有在通过了所有的单元测试和验收测试完成之后才算结束
6、 重构清理和调整代码库,单元测试有助于确保在此过程中不破坏程序的功能,应在任何重构之后重新进行所有的单元测试
7、 结对编程两位程序员协同工作,在同一台机器开发代码库,这样就可以对代码进行实时检查,能极大地提高缺陷的发现率和纠正率
8、 代码的集体所有权所有代码归全体程序员所有,没有哪一个程序员只致力于开发某一个代码库
9、 持续集成每天在变更通过单元测试之后将其集成到代码库中
10、每周40小时工作不允许加班,如果每周都全力工作了40小时,就不需要加班,在重大发布前的一个星期例外
11、客户在现场开发人员和编程小组可以随时接触客户,这样可以快速、准确地解决问题,使开发过程不至于中断
12、按标准编码所有的代码看上去必须一致,设计一个系统隐喻有助于满足该原则
项目特征:
1、 程序员与客户会晤,决定产品需求并建立使用场景
2、 在客户不在场的情况下,程序员进行会晤,将需求分解为独立的任务,并估计完成每项任务所需的时间
3、 程序员向客户提交任务清单和时间估计,并要求客户产生一个功能优先级清单
4、 编程小组依据程序员具备的能力,将任务分配给结对的程序员
5、 每一对程序员依据应用程序的规格说明,对其编程任务生成单元测试用例
6、 每一对程序员完成其任务,旨在编写出通过单元测试的代码库
7、 每一对程序员在所有单元测试通过之前,不断修改和重测他们的代码
8、 所有的结对程序员每天都整合、集成他们的代码库
9、 编程小组发布应用程序的一个预览版本
10、客户进行验收测试,要么确认该应用程序,要么提交一份报告指出存在的缺陷或不足
11、程序员在验收测试成功的基础上发布一个产品版本
12、程序员根据最新的经验更新时间估计
8.2、极限测试:概念
1、极限单元测试
所有代码模块在编码开始之前必须设计好单元测试用例,在产品发布之前须通过单元测试
2、验收测试
3、极限测试的应用