小苏子
小苏子PDF在线图书

持续交付 发布可靠软件的系统方法 内容简介

持续交付 发布可靠软件的系统方法 内容简介

持续交付 发布可靠软件的系统方法 目录

持续交付 发布可靠软件的系统方法 精彩文摘

《持续交付:发布可靠软件的系统方法》讲述如何实现更快、更可靠、低成本的自动化软件交付,描述了如何通过增加反馈,并改进开发人员、测试人员、运维人员和项目经理之间的协作来达到这个目标。本书由三部分组成。第一部分阐述了持续交付背后的一些原则,以及支持这些原则的实践。第二部分是本书的核心,全面讲述了部署流水线。第三部分围绕部署流水线的投入产出讨论了更多细节,包括增量开发技术、高级版本控制模式,以及基础设施、环境和数据的管理和组织治理。《持续交付:发布可靠软件的系统方法》适合所有开发人员、测试人员、运维人员和项目经理学习参考。第一部分 基础篇第1 章 软件交付的问题1.1 引言1.2 一些常见的发布反模式1.2.1 反模式:手工部署软件1.2.2 反模式:开发完成之后才向类生产环境部署1.2.3 反模式:生产环境的手工配置管理1.2.4 我们能做得更好吗1.3 如何实现目标1.3.1 每次修改都应该触发反馈流程1.3.2 必须尽快接收反馈1.3.3 交付团队必须接收反馈并作出反应1.3.4 这个流程可以推广吗1.4 收效1.4.1 授权团队1.4.2 减少错误1.4.3 缓解压力1.4.4 部署的灵活性1.4.5 多加练习,使其完美1.5 候选发布版本1.6 软件交付的原则1.6.1 为软件的发布创建一个可重复且可靠的过程1.6.2 将几乎所有事情自动化1.6.3 把所有的东西都纳入版本控制1.6.4 提前并频繁地做让你感到痛苦的事1.6.5 内建质量1.6.6 “DONE”意味着“已发布”1.6.7 交付过程是每个成员的责任1.6.8 持续改进1.7 小结第2 章 配置管理2.1 引言2.2 使用版本控制2.2.1 对所有内容进行版本控制2.2.2 频繁提交代码到主干2.2.3 使用意义明显的提交注释2.3 依赖管理2.3.1 外部库文件管理2.3.2 组件管理2.4 软件配置管理2.4.1 配置与灵活性2.4.2 配置的分类2.4.3 应用程序的配置管理2.4.4 跨应用的配置管理2.4.5 管理配置信息的原则2.5 环境管理2.5.1 环境管理的工具2.5.2 变更过程管理2.6 小结第3 章 持续集成3.1 引言3.2 实现持续集成3.2.1 准备工作3.2.2 一个基本的持续集成系统3.3 持续集成的前提条件3.3.1 频繁提交3.3.2 创建全面的自动化测试套件3.3.3 保持较短的构建和测试过程3.3.4 管理开发工作区3.4 使用持续集成软件3.4.1 基本操作3.4.2 铃声和口哨3.5 必不可少的实践3.5.1 构建失败之后不要提交新代码3.5.2 提交前在本地运行所有的提交测试,或者让持续集成服务器完成此事3.5.3 等提交测试通过后再继续工作3.5.4 回家之前,构建必须处于成功状态3.5.5 时刻准备着回滚到前一个版本3.5.6 在回滚之前要规定一个修复时间3.5.7 不要将失败的测试注释掉3.5.8 为自己导致的问题负责3.5.9 测试驱动的开发3.6 推荐的实践3.6.1 极限编程开发实践3.6.2 若违背架构原则,就让构建失败3.6.3 若测试运行变慢,就让构建失败3.6.4 若有编译警告或代码风格问题,就让测试失败3.7 分布式团队3.7.1 对流程的影响3.7.2 集中式持续集成3.7.3 技术问题3.7.4 替代方法3.8 分布式版本控制系统3.9 小结第4 章 测试策略的实现4.1 引言4.2 测试的分类4.2.1 业务导向且支持开发过程的测试4.2.2 技术导向且支持开发过程的测试4.2.3 业务导向且评价项目的测试4.2.4 技术导向且评价项目的测试4.2.5 测试替身4.3 现实中的情况与应对策略4.3.1 新项目4.3.2 项目进行中4.3.3 遗留系统4.3.4 集成测试4.4 流程4.5 小结第二部分 部署流水线第5 章 部署流水线解析5.1 引言5.2 什么是部署流水线5.3 部署流水线的相关实践5.3.1 只生成一次二进制包5.3.2 对不同环境采用同一部署方式5.3.3 对部署进行冒烟测试5.3.4 向生产环境的副本中部署5.3.5 每次变更都要立即在流水线中传递5.3.6 只要有环节失败,就停止整个流水线5.4 提交阶段5.5 自动化验收测试之门5.6 后续的测试阶段5.6.1 手工测试5.6.2 非功能测试5.7 发布准备5.7.1 自动部署与发布5.7.2 变更的撤销5.7.3 在成功的基础上构建5.8 实现一个部署流水线5.8.1 对价值流进行建模并创建简单的可工作框架5.8.2 构建和部署过程的自动化5.8.3 自动化单元测试和代码分析5.8.4 自动化验收测试5.8.5 部署流水线的演进5.9 度量5.10 小结第6 章 构建与部署的脚本化6.1 引言6.2 构建工具概览6.2.1 Make6.2.2 Ant6.2.3 NAnt 与 MSBuild6.2.4 Maven6.2.5 Rake6.2.6 Buildr6.2.7 Psake6.3 构建部署脚本化的原则与实践6.3.1 为部署流水线的每个阶段创建脚本6.3.2 使用恰当的技术部署应用程序6.3.3 使用同样的脚本向所有环境部署6.3.4 使用操作系统自带的包管理工具6.3.5 确保部署流程是幂等的(Idempotent)6.3.6 部署系统的增量式演进6.4 面向JVM 的应用程序的项目结构6.5 部署脚本化6.5.1 多层的部署和测试6.5.2 测试环境配置6.6 小贴士6.6.1 总是使用相对路径6.6.2 消除手工步骤6.6.3 从二进制包到版本控制库的内建可追溯性6.6.4 不要把二进制包作为构建的一部分放到版本控制库中6.6.5 “test”不应该让构建失败6.6.6 用集成冒烟测试来限制应用程序6.6.7 .NET 小贴士6.7 小结第7 章 提交阶段7.1 引言7.2 提交阶段的原则和实践7.2.1 提供快速有用的反馈7.2.2 何时令提交阶段失败7.2.3 精心对待提交阶段7.2.4 让开发人员也拥有所有权7.2.5 在超大项目团队中指定一个构建负责人7.3 提交阶段的结果7.4 提交测试套件的原则与实践7.4.1 避免用户界面7.4.2 使用依赖注入7.4.3 避免使用数据库7.4.4 在单元测试中避免异步7.4.5 使用测试替身7.4.6 最少化测试中的状态7.4.7 时间的伪装7.4.8 蛮力7.5 小结第8 章 自动化验收测试8.1 引言8.2 为什么验收测试是至关重要的8.2.1 如何创建可维护的验收测试套件8.2.2 GUI 上的测试8.3 创建验收测试8.3.1 分析人员和测试人员的角色8.3.2 迭代开发项目中的分析工作8.3.3 将验收条件变成可执行的规格说明书8.4 应用程序驱动层8.4.1 如何表述验收条件8.4.2 窗口驱动器模式:让测试与GUI 解耦8.5 实现验收测试8.5.1 验收测试中的状态8.5.2 过程边界、封装和测试8.5.3 管理异步与超时问题8.5.4 使用测试替身对象8.6 验收测试阶段8.6.1 确保验收测试一直处于通过状态8.6.2 部署测试8.7 验收测试的性能8.7.1 重构通用任务8.7.2 共享昂贵资源8.7.3 并行测试8.7.4 使用计算网格8.8 小结第9 章 非功能需求的测试9.1 引言9.2 非功能需求的管理9.3 如何为容量编程9.4 容量度量9.5 容量测试环境9.6 自动化容量测试9.6.1 通过UI 的容量测试9.6.2 基于服务或公共API 来录制交互操作9.6.3 使用录制的交互模板9.6.4 使用容量测试桩开发测试9.7 将容量测试加入到部署流水线中9.8 容量测试系统的附加价值9.9 小结第10 章 应用程序的部署与发布10.1 引言10.2 创建发布策略10.2.1 发布计划10.2.2 发布产品10.3 应用程序的部署和晋级10.3.1 首次部署10.3.2 对发布过程进行建模并让构建晋级10.3.3 配置的晋级10.3.4 联合环境10.3.5 部署到试运行环境10.4 部署回滚和零停机发布10.4.1 通过重新部署原有的正常版本来进行回滚10.4.2 零停机发布10.4.3 蓝绿部署10.4.4 金丝雀发布10.5 紧急修复10.6 持续部署10.7 小贴士和窍门10.7.1 真正执行部署操作的人应该参与部署过程的创建10.7.2 记录部署活动10.7.3 不要删除旧文件,而是移动到别的位置10.7.4 部署是整个团队的责任10.7.5 服务器应用程序不应该有GUI10.7.6 为新部署留预热期10.7.7 快速失败10.7.8 不要直接对生产环境进行修改10.8 小结第三部分 交付生态圈第 11 章 基础设施和环境管理第 12 章 数据管理第 13 章 组件和依赖管理第 14 章 版本控制进阶第 15 章 持续交付管理参考书目1.2 一些常见的发布反模式软件发布的当天往往是紧张的一天。为什么会这样呢?对于大多数项目来说,在整个过程中,发布时的风险是比较大的。在许多软件项目中,软件发布是一个需要很多手工操作的过程。首先,由运维团队独自负责安装好该应用程序所需的操作系统环境,再把应用程序所依赖的第三方软件安装好。其次,要手工将应用程序的软件产物复制到生产主机环境,然后通过Web服务器、应用服务器或其他第三方系统的管理控制台复制或创建配置信息,再把相关的数据复制一份到环境中,最后启动应用程序。假如这是个分布式的或面向服务的应用程序,可能就需要一部分一部分地完成。

赞(0)
未经允许不得转载:小苏子图书 » 持续交付 发布可靠软件的系统方法 内容简介