具体描述
《质量全面管控——从项目管理到容灾测试》专门为有志于软件测试的工程师打开软件测试的大门,笔者结合案例讲解测试实践技术,主要内容有:项目管理、项目需求管理、代码质量控制、自动化部署、软件测试、安全测试与安全管理、自动化测试基础、自动化测试框架、性能测试、性能分析、监控平台与故障排查、灾难恢复与容灾测试等。《质量全面管控——从项目管理到容灾测试》使用了大量的原创图表,提供了基础工具的使用方法和流程。
《质量全面管控——从项目管理到容灾测试》图文并茂,通俗易懂,提供的大量实例可以使读者边学习边实践,深入理解书中的内容,并将所学到的知识应用于实际项目中,对于初中级软件测试工程师来说是不可多得的工具书。
作者简介
葛长芝
2001年毕业于东北师范大学,从事软件测试16年,先后就职于益海嘉里集团,任职测试经理,快钱支付公司任职测试架构师,现在就职于K12在线教育公司掌门1对1,任职测经理。具有丰富的软件开发和软件测试经验,设计开发自动化测试框架,精通性能测试、容量规划和容灾测试。对于软件测试始终保持极大的兴趣,对于测试前置和全链路测试,有非常独到的见解。
目录信息
1.1 项目管理概述 2
1.2 软件项目管理 5
1.3 项目质量管理. 10
1.4 项目管理流程. 11
1.4.1 项目启动. 11
1.4.2 项目计划. 13
1.4.3 软件需求阶段 14
1.4.4 变更管理. 16
1.4.5 设计阶段. 18
1.4.6 构建阶段. 19
1.4.7 测试阶段. 21
1.4.8 部署与试运行 23
1.4.9 项目总结. 25
1.5 项目管理十诫. 26
1.6 项目管理工具对比. 28
1.6.1 Microsoft Project 28
1.6.2 Redmine 29
1.6.3 Feng Office 30
第1 章 项目管理 1
1.1 项目管理概述 2
1.2 软件项目管理 5
1.3 项目质量管理. 10
1.4 项目管理流程. 11
1.4.1 项目启动. 11
1.4.2 项目计划. 13
1.4.3 软件需求阶段 14
1.4.4 变更管理. 16
1.4.5 设计阶段. 18
1.4.6 构建阶段. 19
1.4.7 测试阶段. 21
1.4.8 部署与试运行 23
1.4.9 项目总结. 25
1.5 项目管理十诫. 26
1.6 项目管理工具对比. 28
1.6.1 Microsoft Project 28
1.6.2 Redmine 29
1.6.3 Feng Office 30
2.5.3 《软件需求规格说明书》. 72
2.6 测试需求 73
2.7 需求管理工具. 74
2.7.1 Rational RequisitePro 75
2.7.2 TelelogicDoors 76
2.8 Plandora 实战 76
2.8.1 搭建Plandora 77
2.8.2 管理员配置 78
2.8.3 前端用户. 82
2.8.4 需求变更实例 88
2.9 要点回顾 92
第3 章 代码质量控制 93
3.1 静态代码分析. 94
3.2 代码文档规范. 94
3.2.1 命名规范. 95
3.2.2 编码规范. 96
3.2.3 注释规范. 97
3.2.4 异常处理规范 102
3.2.5 单元测试规范 103
3.2.6 文件解析规范 103
3.3 Sonar 简介 106
3.3.1 Sonar 体系架构. 107
3.3.2 Sonar 代码规则. 108
3.4 Sonar 服务端. 110
3.4.1 环境要求 110
3.4.2 Sonar 服务器搭建 110
3.4.3 Sonar 配置 112
3.4.4 Sonar 插件 114
3.5 Sonar 客户端. 116
3.5.1 Sonar-Runner 客户端. 116
3.5.2 Maven 插件方式 117
3.5.3 Ant 插件方式. 118
3.5.4 Eclipse 插件方式 119
3.6 最佳实践 121
3.6.1 项目配置 122
3.6.2 持续审查 123
3.6.3 结果分析 125
3.6.4 集成曲线图. 128
3.7 要点回顾 129
第4 章 自动化部署 130
4.1 引入自动化部署. 131
4.1.1 复杂的手工部署 131
4.1.2 自动化部署方式 132
4.1.3 持续集成思想 133
4.2 自动化部署的特点 134
4.2.1 环境一致性. 134
4.2.2 部署系统化. 134
4.2.3 配置集中化. 135
4.3 版本控制 137
4.3.1 Git 简介. 137
4.3.2 Git 部署. 138
4.3.3 Git 客户端使用. 141
4.3.4 Git 相关操作 144
4.3.5 代码管理 147
4.4 JDeploy 平台. 151
4.4.1 认识JDeploy 151
4.4.2 JDeploy 部署配置 151
4.4.3 一键部署项目 152
4.5 要点回顾 155
第5 章 软件测试. 156
5.1 软件测试 156
5.1.1 软件测试发展史 157
5.1.2 软件测试的未来 160
5.1.3 测试部门组织架构 161
5.1.4 软件测试的基本类型. 163
5.2 测试模型 164
5.2.1 瀑布模型 164
5.2.2 敏捷模型 165
5.2.3 敏捷测试与传统测试的区别. 166
5.3 系统测试流程 167
5.4 根据需求原型设计测试用例 171
5.4.1 需求原型规范样式 171
5.4.2 设计测试用例 173
5.5 缺陷描述 175
5.5.1 缺陷属性 175
5.5.2 缺陷描述示例 176
5.6 测试的策略. 178
5.7 测试过程的经验总结. 179
5.8 质量保证 180
5.9 要点回顾 181
第6 章 安全测试与安全管理 182
6.1 安全测试 182
6.1.1 安全测试概述 183
6.1.2 安全测试的基本过程. 184
6.1.3 安全测试与安全运维. 186
6.1.4 安全测试工具 186
6.1.5 安全测试用例 187
6.2 开发安全规范 189
6.2.1 跨站脚本安全规范 189
6.2.2 SQL 注入安全规范. 191
6.2.3 页面组件和敏感数据的安全规范 193
6.2.4 Java 安全规范 196
6.2.5 应用集成安全规范 197
6.3 代码安全审核工具Checkmarx. 197
6.3.1 SQL 注入 198
6.3.2 反射型跨站脚本攻击. 199
6.3.3 储存型XSS. 201
6.3.4 HTTP 响应头分裂(Http_ Response_Splitting) 201
6.4 安全漏洞 202
6.4.1 信息收集 202
6.4.2 口令入侵 204
6.4.3 心脏滴血漏洞 207
6.5 OSSIM 安全管理平台 209
6.5.1 OSSIM 架构 210
6.5.2 安装与部署. 211
6.5.3 OSSIM 控制台. 211
6.5.4 Web 界面配置 212
6.5.5 OSSIM 使用实战. 214
6.6 要点回顾 219
第7 章 自动化测试基础 220
7.1 自动化基础. 221
7.1.1 自动化测试流程 222
7.1.2 自动化测试特点 225
7.1.3 自动化测试工具 226
7.1.4 标记语言介绍 228
7.2 Web 自动化测试. 233
7.2.1 元素定位 234
7.2.2 Selenium IDE 238
7.2.3 Selenium 使用 241
7.3 接口自动化测试. 247
7.3.1 接口测试类型 248
7.3.2 接口测试工具 249
7.3.3 Mock 测试 250
7.3.4 HTTP 协议测试 254
7.4 TestNG 框架 258
7.4.1 TestNG 配置 258
7.4.2 TestNG 注解 260
7.4.3 测试套件 260
7.4.4 数据驱动 265
7.4.5 执行测试结果 267
7.4.6 测试集成 268
7.5 要点回顾 270
第8 章 自动化测试框架 271
8.1 框架分析 272
8.1.1 框架设计目标 272
8.1.2 业务流程层次分析 272
8.1.3 业务流程测试自动化. 273
8.1.4 手工用例自动化 274
8.2 框架设计 274
8.2.1 框架设计思想 274
8.2.2 框架物理架构 276
8.2.3 框架逻辑架构 277
8.2.4 框架工作流程 278
8.3 框架开发 278
8.3.1 创建测试用例 279
8.3.2 创建测试数据 280
8.3.3 创建测试项目 281
8.3.4 开发框架运行类 285
8.3.5 开发公共接口 288
8.3.6 添加日志报告 292
8.4 脚本开发 292
8.4.1 编写测试脚本 292
8.4.2 调试运行脚本 293
8.4.3 上传脚本 294
8.5 持续集成 296
8.5.1 Jenkins 服务器搭建. 296
8.5.2 Jenkins 相关插件 298
8.5.3 部署测试执行机 299
8.5.4 分布式测试. 300
8.5.5 配置测试任务 303
8.5.6 查看运行结果 310
8.6 要点回顾 312
第9 章 性能测试. 313
9.1 性能测试基础 313
9.1.1 性能术语 314
9.1.2 需求分析与策略 317
9.2 测试利器之LoadRunner. 321
9.2.1 LoadRunner 安装贴士 321
9.2.2 脚本与优化. 322
9.2.3 设置场景 339
9.2.4 运行场景 340
9.2.5 收集和分析结果 341
9.3 测试利器之JMeter 343
9.3.1 JMeter 介绍. 343
9.3.2 JMeter 脚本与优化. 344
9.3.3 收集监控数据 353
9.3.4 运行测试 353
9.3.5 JMeter 使用小结 354
9.4 性能测试框架搭建 355
9.4.1 JMeter 配置监听器. 355
9.4.2 InfluxDB 数据库配置 356
9.4.3 InfluxDB Graphite Listener 配置. 357
9.4.4 查看InfluxDB 结果 357
9.4.5 Grafana 配置 358
9.5 性能测试实战 359
9.5.1 明确测试需求 359
9.5.2 选取测试方法和策略. 361
9.5.3 准备测试脚本 362
9.5.4 执行与分析测试结果. 362
9.5.5 提出调优建议 364
9.5.6 交付测试报告 364
9.6 性能调优 364
9.6.1 CPU 使用率过高 364
9.6.2 I/O 使用率过高. 365
9.6.3 进程数调整. 367
9.6.4 线程不安全. 367
9.6.5 数据库连接数过少 368
9.6.6 数据导入慢. 369
9.7 要点回顾 369
第10 章 性能分析. 371
10.1 系统硬件资源监控 372
10.1.1 nmon 工具. 373
10.1.2 Linux 系统监控命令 378
10.2 JVM 监控与分析 386
10.2.1 JVM 基础 386
10.2.2 JVM 垃圾回收 388
10.2.3 常见JVM 命令 390
10.2.4 堆分析工具MAT 402
10.2.5 JConsole 403
10.2.6 JProfiler 406
10.3 数据库性能分析 415
10.3.1 软解析和硬解析. 415
10.3.2 SQL 执行计划分析 417
10.3.3 数据库连接数监控 418
10.3.4 Oracle 数据库性能诊断报告AWR. 419
10.4 要点回顾 427
第11 章 监控平台与故障排查 428
11.1 监控系统 428
11.1.1 日志监控平台. 429
11.1.2 硬件和应用监控平台 429
11.2 Zabbix 简介 430
11.2.1 系统架构 430
11.2.2 配置Zabbix 432
11.2.3 常见的配置问题. 436
11.2.4 监控主机 438
11.3 美化界面Grafana 441
11.3.1 部署Grafana. 441
11.3.2 使用Grafana. 442
11.4 服务器故障排查 447
11.4.1 清楚故障的前因后果 447
11.4.2 搜寻蛛丝马迹. 447
11.4.3 列出当前运行的进程 449
11.4.4 监听网络服务. 451
11.4.5 查看硬件状态. 451
11.4.6 列出挂载点和文件系统. 457
11.4.7 过滤内核和中断信息 459
11.4.8 定时任务 460
11.4.9 分析系统日志. 461
11.5 要点回顾 461
第12 章 灾难恢复与容灾测试 462
12.1 灾难恢复 463
12.1.1 灾难恢复的规范. 463
12.1.2 灾难恢复能力等级 466
12.1.3 灾难恢复的关键指标 468
12.2 容灾测试 471
12.2.1 容灾的起源 471
12.2.2 容灾的定义 472
12.2.3 容灾的区别 474
12.3 详解容灾测试 475
12.3.1 容灾测试的目标. 475
12.3.2 职责的划分 476
12.3.3 容灾测试的流程. 477
12.4 容灾测试实战 478
12.4.1 容灾测试计划. 479
12.4.2 容灾用例与Bug. 480
12.4.3 容灾线上演习. 484
12.4.4 容灾长期规划. 485
参考文献. 486
· · · · · · (收起)
读后感
用户评价
我发现这本书在处理复杂性问题时展现出了惊人的条理清晰度。质量管理的复杂性在于其多变量性——技术、人员、时间、预算,任何一个维度的波动都会影响最终结果。作者在描述如何构建一个具有前瞻性的质量体系时,运用了大量的比喻和类比,将那些抽象的、相互依赖的概念具象化了。特别是关于风险矩阵的构建与动态调整部分,其严密性令人印象深刻。它不是提供一个固定的模板,而是教你一套思维工具箱,让你能够根据具体项目的独特性去定制你的质量策略。合上书本时,我感觉自己不仅学到了一套流程,更重要的是,获得了一种系统性的解决问题的思维框架。这本书的价值在于,它不仅仅是告诉你“做什么”,更重要的是让你理解“为什么这么做”,这种底层逻辑的构建,才是真正能带来长期回报的知识。
这本书的深度远超我的预期。我原本是抱着学习一些具体测试技巧的目的来的,但作者却构建了一个涵盖整个产品生命周期的质量保证体系。尤其让我眼前一亮的是关于“容灾测试”那一块的详述。很多同类书籍往往把容灾只当作一个补充章节,但在这里,它被提升到了战略高度。作者没有停留在理论层面,而是结合了大量的行业案例,细致剖析了不同业务场景下,容灾策略的权衡与选择。那种对系统韧性的执着追求,贯穿了整本书的脉络。读到关于混沌工程的部分时,我感觉自己像是上了一堂高强度的实战课,作者对如何设计有效的、非破坏性的压力测试场景,提供了非常具体的操作指导,而不是空泛的口号。对于那些希望将自己团队的交付能力提升一个量级的技术管理者来说,这本书无疑是一份宝贵的参考蓝图。
这本书的封面设计得很有质感,深色调配合着简洁的字体,透着一股严谨和专业的气息。我本来以为它会是一本纯粹的技术手册,但翻开之后才发现,作者在行文上颇为注重逻辑的连贯性。它并没有直接扎入那些晦涩难懂的术语深渊,而是从一个更宏观的视角切入,比如如何构建一个可持续的质量文化。我很欣赏作者在开篇对“质量”这个概念的多维度阐释,它不仅仅是缺陷的消除,更是一种前瞻性的风险预防。书中对项目管理框架的梳理非常到位,那种将质量嵌入到每一个环节的思维模式,让人在阅读过程中忍不住会反思自己过去的工作流程中是否存在盲点。特别是对需求变更管理那一段的论述,非常接地气,它没有回避实际操作中的复杂性,而是提供了一套清晰的、可落地的应对策略。这本书的结构布局清晰,章节之间的过渡自然流畅,读起来非常舒服,让人有种被专业人士引导着前进的感觉。
作为一名有着十多年经验的质量工程师,我阅览过不少关于质量和流程优化的书籍,但坦白说,大部分都显得有些陈旧或过于理论化。这本书的优势在于其极强的“现代感”。它紧密结合了DevOps和敏捷开发的最新实践,讲述的质量管控不再是瀑布模型下的“守门员”角色,而是贯穿始终的“赋能者”。作者对持续集成/持续部署(CI/CD)流水线中的质量门(Quality Gates)的定义和实施,写得极其精准和富有洞察力。我特别喜欢其中关于“自动化策略的演进”的讨论,它清晰地指出了何时应该投入资源进行深度自动化,以及如何避免过度工程化。阅读过程中,我多次停下来,对照书中的描述,审视我们现有工具链的匹配度。这种既有理论高度又不失实操温度的写作风格,是这本书最吸引我的地方。
这本书的叙事风格很独特,它不像教科书那样刻板,反而更像是一场资深专家的深度对话。行文中不时出现的反问和对行业普遍误区的纠正,让我感觉作者非常真诚。例如,书中对“零缺陷神话”的批判,指出过度追求零缺陷可能导致的资源浪费和交付延迟,这种务实的观点非常难得。在讨论项目管理和质量的交叉点时,作者巧妙地引入了组织行为学的视角,分析了不同团队文化对质量成果的影响,这一点是很多纯技术书籍会忽略的。它让我意识到,质量管控的瓶颈往往不在技术本身,而在人与流程的交互上。读完关于团队协作和质量指标设定的章节后,我立刻组织了一次内部研讨会,重新审视了我们当前使用的度量标准,受益匪浅,可以说是直接推动了部门内部的思维转变。
了解一下测试的方方面面!
覆盖项目全部环节 项目、测试相关部分详细 有实际借鉴意义
了解一下测试的方方面面!
可以作为了解软件质量管理的入门书
可以作为了解软件质量管理的入门书