网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 高质效交付:软件集成、测试与 发布精进之道 |
分类 | 教育考试-考试-计算机类 |
作者 | 董越等 |
出版社 | 电子工业出版社 |
下载 | |
简介 | 内容推荐 这是一本介绍软件交付过程的“科普小册子”。软件交付过程是指修改了一行源代码之后的一系列工作,直到包含这个改动的软件新版本发布上线。这需要多久?可能需要几秒,也可能需要数个星期甚至更长的时间。本书介绍在保证一定发布质量的前提下,如何加速这个过程,让它尽量快一点儿,同时让我们投入的精力尽量少一点儿。也就是说,本书介绍如何让软件交付变得更高效。软件工程、敏捷、精益、持续集成、持续交付、DevOps、云原生、研发效能、平台工程等,都对这个话题有所贡献。本书并不囿于上述某个特定的“门派”,而是介绍它们的关键要点,介绍如何综合运用它们,并且根据实践有所发展。 目录 第1部分 推开软件交付之门 第1章 软件交付过程的范围\t2 1.1 修改了源代码之后\t2 1.2 直到改动发布上线\t3 1.3 在软件开发全过程中的位置\t4 1.4 为什么要这么划分软件交付过程\t5 第2章 软件交付过程的内容\t6 2.1 程序改动的累积和汇聚\t6 2.2 程序形态的转化\t8 2.3 程序质量的提升\t10 第3章 软件交付过程的追求目标\t13 3.1 整体目标:为了业务的成功\t13 3.2 确定需求:有效率地找到有效需求\t14 3.3 从确定需求到实现需求:小步快跑\t15 3.4 实现需求:效率与质量\t16 3.4.1 体现效率:需求吞吐量\t16 3.4.2 体现效率:需求响应时长\t17 3.4.3 质量不是越高越好\t19 3.4.4 体现质量:问题出现量\t19 3.4.5 体现质量:问题修复时长\t20 3.4.6 要兼顾短期和长期\t20 3.4.7 四个象限简介\t21 3.5 软件交付过程在四个象限的优化\t21 3.5.1 提高需求吞吐量\t22 3.5.2 缩短需求响应时长\t22 3.5.3 减少问题出现量\t23 3.5.4 缩短问题修复时长\t24 3.6 DORA的DevOps核心指标\t25 第2部分 软件交付总体过程 第4章 持续集成\t28 4.1 什么是持续集成\t28 4.1.1 什么是持续\t28 4.1.2 什么是集成\t29 4.2 为什么要持续集成\t30 4.2.1 小批量,减少等待\t30 4.2.2 问题早发现、早修复,代价小\t31 4.2.3 频繁同步以减少冲突\t31 4.3 流水线\t33 4.3.1 流水线的诞生\t33 4.3.2 流水线包含哪些活动\t33 4.3.3 流水线的功能\t35 第5章 逐特性集成\t37 5.1 什么是特性\t37 5.2 什么是逐特性集成\t38 5.3 仍符合持续集成的理念\t39 5.4 隔离未完成特性的其他方法\t40 5.5 何时不必考虑隔离未完成的特性\t41 5.6 当特性做不到既小又独立时\t42 第6章 在集成之前\t44 6.1 第四阶段:特性改动提交\t44 6.1.1 合并请求基础款:代码评审\t44 6.1.2 合并请求增强款:代码评审+流水线\t45 6.1.3 在创建合并请求之前\t47 6.2 第三阶段:特性改动累积\t48 6.3 第二阶段:代码改动提交\t49 6.3.1 代码改动通过关卡才出现在目标分支\t49 6.3.2 在提交时本地自动进行质量把关\t50 6.3.3 在提交代码改动之前\t51 6.4 第一阶段:代码改动累积\t52 6.4.1 随时进行的质量保证工作\t52 6.4.2 实时进行的质量保证工作\t53 6.4.3 IDE\t54 第7章 持续交付\t55 7.1 什么是持续交付\t55 7.1.1 持续交付是持续集成的延伸\t56 7.1.2 持续是适度频繁\t56 7.2 为什么要持续交付\t58 7.3 版本晋级机制\t59 7.4 部署流水线\t61 7.5 迈向持续部署\t63 7.5.1 适当的发布频率\t63 7.5.2 如何提高发布频率\t64 7.5.3 持续部署\t65 第8章 特性间进一步解耦\t67 8.1 混合自测\t67 8.2 特性摘除\t68 8.3 混合测试\t70 8.4 逐特性交付\t73 8.5 特性间解耦方法小结\t74 第9章 运用精益思想\t76 9.1 在制品的数量\t76 9.2 优化发布审批\t78 9.2.1 什么是发布审批\t78 9.2.2 精简发布审批流程\t78 9.2.3 发布审批的工具支持\t79 9.3 消除发布时间窗口\t80 第10章 突破Scrum的若干约束\t82 10.1 发布版本间的交叠\t82 10.2 在一次迭代中多次发布\t84 10.3 迭代规划内容不必都做完\t85 10.4 特事特办\t86 第11章 多项内容协同交付\t87 11.1 本书中的微服务是代称\t87 11.2 提交完整的特性\t88 11.3 采用相同的节奏\t89 11.4 特性间完全解耦\t90 11.5 按特定的顺序发布\t90 第12章 静态库的交付\t92 12.1 什么是静态库\t92 12.2 作为公共基础库\t92 12.3 作为整体应用的组成部分\t93 12.4 作为服务接口定义\t94 第13章 并行的多个版本序列\t96 13.1 版本序列之间的交叠\t96 13.2 变体\t97 第14章 尽快修复问题\t99 14.1 尽快修复流水线的问题\t99 14.1.1 为什么要尽快修复\t99 14.1.2 自动通知合适的人\t100 14.1.3 足够高的优先级\t101 14.1.4 足够多的相关信息\t101 14.2 尽快修复测试发现的缺陷\t102 14.3 尽快解决发布带来的问题\t102 14.3.1 系统的可观测性\t103 14.3.2 发布回滚\t103 14.3.3 紧急发布\t104 14.3.4 当紧急程度更低一些时\t105 第3部分 程序改动的累积和汇聚 第15章 版本控制\t108 15.1 什么是版本控制\t108 15.2 实现版本控制的方法和工具\t108 15.3 版本命名\t109 15.3.1 传统的版本命名方式\t110 15.3.2 SaaS软件的版本命名\t110 15.3.3 考虑版本控制工具的能力\t111 15.3.4 考虑制品管理的方法\t112 15.4 分支\t112 15.4.1 “现代派”分支\t113 15.4.2 制品的分支\t113 第16章 使用版本控制工具\t114 16.1 版本控制工具简介\t114 16.2 代码库内的层次结构\t115 16.3 代码库间的层次结构\t115 16.4 不应放入代码库的内容\t116 16.4.1 小心二进制文件\t116 16.4.2 代码库二进制文件存储方案\t117 16.4.3 不应纳入版本控制的内容\t117 16.5 代码改动与工作项间的关联\t118 16.5.1 将代码改动提交记录关联到工作项\t118 16.5.2 将特性的代码改动提交记录关联到工作项\t119 16.6 版本与工作项间的关联\t120 16.6.1 送测特性列表\t120 16.6.2 发布特性列表与发布说明\t121 16.7 代码库的体积\t121 第17章 分支策略\t123 17.1 分支的四个层级\t123 17.2 生产级分支\t124 17.3 集成级分支\t125 17.3.1 支持交叠:长集成分支+短发布分支\t126 17.3.2 支持交叠:长集成分支+长发布分支\t127 17.3.3 支持交叠:短集成发布分支\t127 17.3.4 支持混合自测与测试:长环境分支\t129 17.3.5 支持混合自测与测试:短环境分支\t130 17.3.6 支持特性单独测试和发布\t131 17.4 特性级分支\t132 17.4.1 特性分支从哪里创建、从哪里同步\t132 17.4.2 合入集成级分支时处理冲突的方法\t133 17.4.3 在已提交的特性上继续改动\t134 17.4.4 如何摘除特性\t135 17.4.5 何时删除特性分支\t136 17.5 版本序列级分支\t136 17.5.1 支持多个版本序列间的交叠\t137 17.5.2 支持多个变体\t138 17.6 典型分支策略分析\t139 17.6.1 Git Flow\t140 17.6.2 GitHub Flow\t141 17.6.3 GitLab Flow\t141 17.6.4 Aone Flow\t143 第18章 使用制品管理工具\t144 18.1 制品、制品库与制品管理工具\t144 18.2 “正式”制品必须来自流水线上的构建\t145 18.3 制品库间的层次结构\t145 18.4 制品库内的层次结构\t146 18.5 记录制品的属性信息\t147 18.6 避免重复存储\t147 18.7 制品的尺寸\t148 18.8 加速制品存取的方法\t149 18.9 制品清理策略\t149 第4部分 程序形态的转化 第19章 构建\t152 19.1 什么是构建\t152 19.2 构建的可重复性\t153 19.2.1 构建的原材料不变\t153 19.2.2 构建的工具和方法不变\t154 19.3 加速构建\t154 19.3.1 基本方法\t155 19.3.2 探索:从程序形态转化全过程的视角优化\t156 19.3.3 探索:一些高端方法\t157 19.4 源代码、构建、制品之间的关联关系\t158 第20章 构建环境\t160 20.1 什么是构建环境\t160 20.2 构建环境标准化\t160 20.3 构建环境资源池化\t161 20.3.1 构建环境资源池化的价值\t161 20.3.2 保障构建所需缓存\t162 第21章 部署\t164 21.1 自动化部署\t164 21.2 部署策略\t165 21.2.1 生产环境的部署策略\t165 21.2.2 测试环境的部署策略\t167 21.2.3 客户端的部署策略\t167 21.3 判断部署成功完成的方法\t168 21.4 发布与部署分离\t168 21.5 快速回滚\t169 21.6 制品、部署、环境之间的关联关系\t170 第22章 运行环境\t171 22.1 什么是运行环境\t171 22.2 运行环境管理的内容\t172 22.3 管理本地运行环境\t172 22.3.1 声明式\t173 22.3.2 只换不修\t173 22.4 让微服务在整体运行环境中运行\t174 22.4.1 资源的申请与实现\t174 22.4.2 基础设施即代码与GitOps\t174 22.4.3 封装以降低认知负荷\t175 22.5 管理整套环境\t175 22.5.1 何时需要再搭建一套环境\t175 22.5.2 整套环境的自动生成与分配\t176 22.5.3 实现在整体系统中自测\t177 22.5.4 探索:虚拟独占方式\t178 22.5.5 测试环境和生产环境的一致性\t179 22.5.6 数据隔离\t180 第23章 SQL变更\t181 23.1 什么是SQL变更\t181 23.2 自动执行SQL变更\t182 23.3 确保SQL变更质量\t182 23.4 程序与数据存储结构的版本匹配\t183 23.5 管理SQL变更的特别之处\t183 23.5.1 管理SQL变更的挑战\t184 23.5.2 应对挑战的常见方法\t184 23.5.3 探索:声明式\t185 第24章 应用配置参数\t187 24.1 什么是应用配置参数\t187 24.2 应用配置参数的管理\t188 24.3 如何设置应用配置参数\t188 24.3.1 设置应用配置参数的方式\t189 24.3.2 自动执行\t189 24.3.3 设置方式的选择\t190 24.3.4 探索:键值分离\t191 24.3.5 探索:减少人工设置内容\t193 24.4 质量和安全\t193 24.4.1 确保变更质量\t193 24.4.2 程序与应用配置参数的版本匹配\t194 24.4.3 敏感信息管理\t195 第5部分 程序质量的提升 第25章 静态测试\t198 25.1 代码扫描\t198 25.1.1 什么情况下要做代码扫描\t198 25.1.2 什么时候做代码扫描\t199 25.1.3 必要时定制规则\t200 25.2 代码评审\t200 25.2.1 什么情况下要做代码评审\t200 25.2.2 代码评审的颗粒度\t201 25.2.3 事前评审和事后评审\t202 25.2.4 代码评审的形式\t203 25.2.5 代码评审的内容\t205 25.2.6 代码评审的方法:检查清单\t206 25.2.7 探索:代码评审时更方便地查看相关代码\t206 25.3 软件成分分析\t207 25.3.1 什么情况下要做软件成分分析\t207 25.3.2 什么时候做软件成分分析\t208 第26章 动态测试\t209 26.1 单元测试\t209 26.1.1 什么情况下要做单元测试\t210 26.1.2 什么时候做单元测试\t210 26.2 接口自动化测试\t211 26.2.1 接口自动化测试的内容\t211 26.2.2 什么情况下要做接口自动化测试\t211 26.2.3 什么时候做接口自动化测试\t212 26.2.4 探索:接口只在一处定义一次\t213 26.2.5 流量回放\t213 26.3 UI自动化测试\t214 26.3.1 什么情况下要做UI自动化测试\t214 26.3.2 什么时候做UI自动化测试\t215 26.3.3 录制还是编写\t215 26.4 人工功能测试\t216 26.4.1 什么情况下要做人工功能测试\t216 26.4.2 什么时候做人工功能测试\t217 26.4.3 探索性测试\t217 第27章 重要但容易被忽略的测试\t218 27.1 非功能测试\t218 27.1.1 测试内容:性能和容量\t218 27.1.2 测试内容:安全性\t219 27.1.3 测试内容:兼容性\t220 27.1.4 测试内容:易用性\t220 27.1.5 什么时候做非功能测试\t220 27.1.6 尽可能自动执行\t221 27.2 生产环境测试\t221 27.2.1 先在小范围试用\t221 27.2.2 发布后的功能测试\t223 27.2.3 生产环境中的非功能测试\t223 第28章 测试通用要点\t225 28.1 程序的输入:应对无尽的可能性\t225 28.1.1 正常、异常和边界情况\t225 28.1.2 使用等价类来应对\t226 28.1.3 输入数据不只是函数的输入参数\t226 28.1.4 组合爆炸\t227 28.1.5 测试覆盖率\t227 28.1.6 用好测试覆盖率\t228 28.2 程序的输出:怎样写断言\t229 28.2.1 程序输出的多种形式\t229 28.2.2 对输出进行适当的校验\t229 28.3 测试数据准备\t230 28.4 测试用例间的隔离性\t231 28.4.1 防止干扰\t231 28.4.2 管理测试用例间依赖\t232 28.5 如何更快地编写和维护测试脚本与数据\t233 28.5.1 测试脚本的分层与复用\t233 28.5.2 测试脚本与数据相分离\t233 28.5.3 测试数据的分层与复用\t234 28.5.4 探索:测试脚本的自动化生成\t234 28.6 快速执行测试\t235 28.7 探索:测试驱动开发及其变体\t236 28.8 从人员和组织管理角度保障测试投入\t237 28.9 提升人员的测试能力\t237 第29章 测试通用策略\t239 29.1 工作量在不同测试中的分配\t239 29.2 根据场景选择合适的测试力度\t240 29.3 测试时机和频率\t242 29.4 增量优先\t244 29.4.1 优先为增量代码改动准备测试脚本和用例\t244 29.4.2 优先执行增量代码改动相关测试\t244 29.4.3 优先解决增量代码改动相关问题\t245 29.5 技术债:在必要时欠债\t246 29.6 质量门禁:有原则有灵活性\t248 29.6.1 质量门禁可以适当通融\t248 29.6.2 考虑定制质量门禁规则\t249 29.6.3 考虑忽略某些代码\t249 29.7 Mock还是不Mock,这是个问题\t250 29.7.1 单元测试尽可能使用Mock\t250 29.7.2 尽量在完整系统中进行其他测试\t251 29.7.3 仅在必要时使用Mock\t251 29.8 质量反馈驱动测试改进\t252 第30章 缺陷修复\t255 30.1 管理缺陷\t255 30.1.1 跟踪缺陷的方法\t255 30.1.2 记录缺陷相关信息\t256 30.2 需求、测试、缺陷之间的关联关系\t257 30.2.1 自动化测试时\t257 30.2.2 人工测试时\t259 30.3 调试工具\t259 30.3.1 调试器\t260 30.3.2 接口调试工具\t260 30.3.3 UI调试工具\t260 30.3.4 探索:复现运行上下文\t260 30.4 测试环境的环境问题\t261 30.4.1 减少测试环境的环境问题\t261 30.4.2 探索:失败原因自动分类\t262 第6部分 杂谈 第31章 组织结构与人员职责\t264 31.1 项目制还是产品制\t264 31.2 全功能团队还是职能团队\t265 31.3 团队的规模\t267 31.4 团队内部分工:谁做测试\t267 31.5 团队间解耦\t269 31.6 按业务功能划分并考虑软件复用\t270 31.7 组织的层级结构\t270 31.8 组织级支持\t271 第32章 平台工程:工具平台的建设和维护\t273 32.1 什么是平台工程\t273 32.2 使用工具代替专职人员的重复操作\t273 32.3 平台工程的核心是便捷易用\t275 32.4 一体化的工具平台\t275 32.5 拿来主义还是自主研制\t276 32.6 方案收敛\t277 32.7 适当宽松的权限策略\t278 32.8 工具可用性\t279 第33章 终章:软件交付10策略\t281 33.1 小批量持续流动\t281 33.1.1 大批量带来等待等问题\t281 33.1.2 短周期、小颗粒度、减少半成品\t282 33.1.3 小批量持续流动的交付过程\t283 33.2 运用综合手段保证质量和安全\t283 33.2.1 各种各样的测试\t284 33.2.2 左移+右移\t284 33.2.3 开发人员+测试人员\t285 33.2.4 自动化测试+人工测试\t285 33.2.5 综合运用\t285 33.3 细粒度、低耦合、可复用的架构\t286 33.3.1 软件架构\t286 33.3.2 测试脚本和测试数据的架构\t287 33.3.3 组织架构\t287 33.4 自动化与自助化\t289 33.4.1 单项活动的自动化\t289 33.4.2 流程的自动化\t289 33.4.3 自助化\t290 33.4.4 相关支持\t290 33.5 加速各项活动\t290 33.6 及时修复\t292 33.6.1 为什么要及时修复\t292 33.6.2 如何做到及时修复\t292 33.7 完备记录,便捷查阅\t293 33.7.1 跟踪事项,记录执行\t294 33.7.2 版本控制\t294 33.7.3 关联关系\t295 33.8 标准化和一致性\t296 33.8.1 规范可重复\t296 33.8.2 方案收敛\t297 33.8.3 环境一致性\t297 33.9 协调完成完整功能\t298 33.9.1 背景\t298 33.9.2 开发全过程的协调\t299 33.9.3 软件交付过程的协调\t299 33.10 基于事实和数据的持续改进\t300 33.11 总结\t301 附录A 数十年来的探索\t302 附录B 各类内容的版本控制方式\t314 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。