网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 高质效交付:软件集成、测试与 发布精进之道
分类 教育考试-考试-计算机类
作者 董越等
出版社 电子工业出版社
下载
简介
内容推荐
这是一本介绍软件交付过程的“科普小册子”。软件交付过程是指修改了一行源代码之后的一系列工作,直到包含这个改动的软件新版本发布上线。这需要多久?可能需要几秒,也可能需要数个星期甚至更长的时间。本书介绍在保证一定发布质量的前提下,如何加速这个过程,让它尽量快一点儿,同时让我们投入的精力尽量少一点儿。也就是说,本书介绍如何让软件交付变得更高效。软件工程、敏捷、精益、持续集成、持续交付、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
随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/2/4 2:03:40