版权声明

    致中文版的读者

    译者序

    序言

    读者对象

    致谢

    第 1 章 什么是团队开发

    1.1 一个人也能进行开发

    1.2 团队开发面临的问题

    1.3 如何解决这些问题

    1.4 如何解决这些问题

    1.4.1 第 2 章 :案例分析

    1.4.2 第 3~5 章 :基础实践

    1.4.3 第 6~7 章 :持续交付和回归测试

    1.5 阅读本书前的注意事项

    1.5.1 最好的方法是具体问题具体分析

    1.5.2 没有最好的工具

    第 2 章 团队开发中发生的问题

    2.1 案例分析的前提

    2.1.1 项目的前提条件

    2.2 案例分析(第 1 天)

    2.2.1 问题 1 :重要的邮件太多,无法确定处理的优先顺序

    2.2.2 问题 2 :没有能用于验证的环境

    2.2.3 问题 3 :用别名目录管理分支

    2.2.4 问题 4 :重新制作数据库比较困难

    2.3 案例分析(第 1 天)中的问题点

    2.3.1 问题 1 :重要的邮件太多,无法确定处理的优先顺序

    2.3.2 问题 2 :没有能用于验证的环境

    2.3.3 问题 3 :用别名目录管理分支

    2.3.4 问题 4 :重新制作数据库比较困难

    2.4 案例分析(第 2 天)

    2.4.1 问题 5 :不运行系统就无法察觉问题

    2.4.2 问题 6 :覆盖了其他组员修正的代码

    2.4.3 问题 7 :无法自信地进行代码重构

    2.4.4 问题 8 :不知道 bug 的修正日期,也不能追踪退化

    2.4.5 问题 9 :没有灵活使用分支和标签

    2.4.6 问题 10 :在测试环境、正式环境上无法运行

    2.4.7 问题 11 :发布太复杂,以至于需要发布手册

    2.5 案例分析(第 2 天)中的问题点

    2.5.1 问题 5 :不运行系统就无法察觉问题

    2.5.2 问题 6 :覆盖了其他组员修正的代码

    2.5.3 问题 7 :无法自信地进行代码重构

    2.5.4 问题 8 :不知道 bug 的修正日期,也不能追踪退化

    2.5.5 问题 9 :没有灵活使用分支和标签

    2.5.6 问题 10 :在测试环境、正式环境上无法运行

    2.5.7 问题 11 :发布太复杂,以至于需要发布手册

    2.6 什么是理想的项目

    第 3 章 版本管理

    3.1 版本管理系统

    3.1.1 什么是版本管理系统

    3.1.2 为什么使用版本管理系统能带来便利

    3.2 版本管理系统的发展变迁

    第 4 章 缺陷管理

    4.1 缺陷管理系统

    4.1.1 项目进展不顺利的原因

    4.1.2 用纸、邮件、Excel 进行任务管理时的问题

    4.1.3 导入缺陷管理系统的优点

    4.1.4 什么是缺陷驱动开发

    4.2 主要的缺陷管理系统

    4.2.1 OSS 产品

    4.2.2 商用产品

    4.2.3 选择工具(缺陷管理系统)的要点

    4.3 缺陷管理系统与版本管理系统的关联

    4.3.1 通过关联实现的功能

    4.3.2 关联的配置方法

    4.3.3 GitHub

    4.3.4 Trac/Redmine

    4.3.5 Backlog

    4.3.6 Git 自带的 Hook 的使用方法

    4.4 新功能开发、修改 bug 时的工作流程

    4.4.1 工作流程

    4.5 回答“那个 bug 是什么时候修正的”的问题

    4.5.1 Pivotal Tracker 的例子

    4.5.2 Backlog 的例子

    4.6 回答“为什么要这样修改”的问题

    4.7 本章总结

    第 5 章 CI(持续集成)

    5.1 CI(持续集成)

    5.1.1 什么是 CI(持续集成)

    5.1.2 使开发敏捷化

    5.1.3 为什么要进行 CI 这样的实践

    5.1.4 CI 的必要条件

    5.1.5 编写测试代码所需的框架

    5.1.6 主要的 CI 工具

    5.2 build 工具的使用方法

    5.2.1 新建工程的情况

    5.2.2 为已有工程添加自动 build 功能

    5.2.3 build 工具的总结

    5.3 测试代码的写法

    5.3.1 作为 CI 的对象的测试的种类

    5.3.2 何时编写测试

    5.3.3 棘手的测试该如何写

    5.4 执行基于 Jenkins 的 CI

    5.4.1 Jenkins 的安装

    5.4.2 Jenkins 能干些什么

    5.4.3 新建任务

    5.4.4 下载代码

    5.4.5 自动执行 build 和测试

    5.4.6 统计结果并生成报表

    5.4.7 统计覆盖率

    5.4.8 静态分析

    5.4.9 配置通知

    5.5 CI 的运用

    5.5.1 build 失败了该怎么办

    5.5.2 确保可追溯性

    5.6 本章总结 借助 CI 能够实现的事情

    第 6 章 部署的自动化(持续交付)

    6.1 应该如何部署

    6.1.1 部署自动化带来的好处

    6.2 部署的自动化

    6.2.1 部署自动化方面的共识

    6.2.2 部署流水线

    6.2.3 服务提供工具链(provisioning tool chain)

    6.3 引导(Bootstrapping)

    6.3.1 Kickstart

    6.3.2 Vagrant

    6.4 配置(Configuration)

    6.4.1 不使用自动化时的问题

    6.4.2 Chef

    6.4.3 serverspec

    6.4.4 最佳实践(其 1)

    6.4.5 最佳实践(其 2)

    6.4.6 实现物理服务器投入运营为止的所有步骤的自动化

    6.5 编配(Orchestration)

    6.5.1 发布作业的反面教材

    6.5.2 Capistrano

    6.5.3 Fabric

    6.5.4 Jenkins

    6.5.5 最佳实践

    6.5.6 考虑安全问题

    6.6 考虑运用相关的问题

    6.6.1 不中断服务的部署方法

    6.6.2 蓝绿部署(blue-green deployment)

    6.6.3 云(cloud)时代的蓝绿部署

    6.6.4 回滚(rollback)相关问题的考察

    6.7 本章总结

    第 7 章 回归测试

    7.1 回归测试

    7.1.1 什么是回归测试

    7.1.2 测试分类的整理

    7.1.3 回归测试的必要性

    7.1.4 回归测试自动化的目标

    7.2 Selenium

    7.2.1 什么是 Selenium

    7.2.2 Selenium 的优点

    7.2.3  Selenium 的组件

    7.2.4 测试用例的制作和执行

    7.2.5 Selenium 的实际应用

    7.3 Jenkins 和 Selenium 的协作

    7.3.1 关联 Jenkins 和 Selenium 的步骤

    7.4 Selenium 测试的高速化

    7.4.1 利用 Jenkins 的分布式构建实现测试的并行执行

    7.4.2 Selenium 测试并行化中的难点

    7.5 多个应用程序版本的测试

    7.5.1 应用的部署

    7.5.2 从版本管理系统下载测试用例

    7.5.3 用 Selenium 测试

    7.6 本章总结

    参考文献·网址

    ……全部

    ……Git、版本管理系统

    ……Scrum、敏捷开发

    ……build·测试

    ……持续集成

    ……持续交付