内 容 提 要
本书全面介绍了软件性能测试中的实战技术和JMeter的应用知识。本书分4篇10章:基础篇(第1章)主要讲解性能测试的理论和如何做好性能测试;工具篇(第2~4章)介绍了利用JMeter进行性能测试脚本开发,如利用HTTP在JMeter中进行性能测试脚本开发;实践篇(第5~8章)详细讲解了性能监控与诊断分析,通过实践项目引导读者进行性能测试工作,包括诊断问题、分析与调优;提升篇(第9~10章)讲解如何基于JMeter做测试开发、利用容器技术提高测试效率。
本书讲解通俗易懂,适合测试工程师、测试项目负责人、开发工程师、性能测试爱好者阅读,也适合作为大专院校相关专业师生的学习用书和培训学校的教材。
上万读者认可的、畅销书作者的新力作
揭秘性能测试本质,突破工具局限,除了讲解常规监控技术,还增加了全链接监控。
掌握开发多种协议的性能测试脚本,帮助读者快速上手性能测试。
涵盖工程能效、容器部署环境、容器部署负载,多维度帮助读者掌握性能测试知识。
基于JMeter5.x,性能监控升级,诊断升级,介绍诊断思路、方法、工具,从原理到实践学以致用。
陈志勇,曾就职于诺亚舟、中国平安、中国电信等企业。从事软件开发、项目管理、性能测试等工作。擅长性能测试,拥有丰富的DevOps实践经验,著有《持续集成与持续部署实践》一书。
刘潇,曾就职于SAP、中国电信等企业。拥有多年测试开发、性能测试、持续集成及持续部署经验。
钱琪,曾就职于AMD、思科、中国电信、VMware等企业。擅长测试开发、自动化测试、性能测试等技术。拥有丰富的持续集成、持续部署实践经验,著有《持续集成与持续部署实践》一书。
目 录
基 础 篇
第 1章 全栈性能测试 1
1.1 全栈正当时 2
1.1.1 全栈开发正当时 2
1.1.2 全栈测试应声起 2
1.1.3 性能测试要全栈 3
1.2 开展全栈性能测试 4
1.2.1 性能测试要解决的
问题 4
1.2.2 如何开展性能测试 6
1.3 性能测试技术栈 8
1.3.1 性能测试基础 9
1.3.2 性能监听诊断 11
1.3.3 性能优化 13
1.3.4 效率工具/持续集成 13
1.4 性能测试相关术语 14
1.5 本书相关内容的约定 15
1.6 本章小结 16
工 具 篇
第 2章 JMeter脚本开发 17
2.1 JMeter工作区介绍 18
2.2 JMeter HTTP协议录制 19
2.2.1 Badboy进行录制 19
2.2.2 Fiddler进行脚本录制 26
2.2.3 JMeter配置代理进行
录制 29
2.3 JMeter脚本调试 32
2.4 JMeter关联 35
2.4.1 后置处理器 35
2.4.2 Regular Expression
Extractor 35
2.5 JMeter参数化 39
2.5.1 配置元件 39
2.5.2 CSV数据文件设置 39
2.5.3 函数助手 41
2.5.4 访问地址参数化 42
2.5.5 HTTP请求默认值 43
2.6 JMeter检查点 43
2.6.1 断言 43
2.6.2 响应断言 44
2.7 JMeter事务 46
2.7.1 逻辑控制器 46
2.7.2 事务控制器 46
2.8 JMeter集合点 47
2.8.1 定时器 47
2.8.2 同步定时器 47
2.9 JMeter元件运行顺序 48
2.10 本章小结 51
第3章 JMeter常用脚本开发 52
3.1 JMeter插件管理 53
3.2 JMeter在线脚本开发 54
3.3 WebSocket脚本开发 55
3.4 BeanShell脚本开发 57
3.5 调试取样器 60
3.6 FTP脚本开发 61
3.7 Java脚本开发 62
3.8 JUnit脚本开发 70
3.8.1 JUnit简介 70
3.8.2 JUnit参数 71
3.8.3 JMeter JUnit Request 72
3.9 Dubbo脚本开发 73
3.9.1 Dubbo示例环境部署 73
3.9.2 JMeter安装Dubbo测试
插件 74
3.9.3 使用Dubbo取样器测试示例服务 75
3.10 本章小结 76
第4章 JMeter负载与监听 77
4.1 负载模拟 78
4.1.1 场景设置 78
4.1.2 场景运行 80
4.2 影响负载的X因素 84
4.3 JMeter分布式执行 85
4.3.1 执行逻辑 85
4.3.2 执行示例 86
4.4 测试监听 87
4.4.1 JMeter监听器 88
4.4.2 Influx+Grafana实时
监听 89
4.5 本章小结 98
实 践 篇
第5章 性能监控与诊断 99
5.1 性能关注点与诊断思路 100
5.1.1 系统性能的关注点 101
5.1.2 性能诊断方法 106
5.2 性能监控与诊断 111
5.2.1 CPU风险诊断 113
5.2.2 内存风险诊断 129
5.2.3 IO风险诊断 135
5.2.4 网络风险诊断 139
5.3 DB监控之MySQL监控 143
5.4 JVM监控 146
5.4.1 jps 146
5.4.2 jstat 147
5.4.3 jstack 150
5.4.4 jmap 151
5.4.5 JVisualvm 152
5.4.6 JDK8与JDK7在监控方面
的变化 155
5.4.7 trace跟踪 158
5.5 性能诊断小工具 159
5.6 全链路监控 160
5.7 本章小结 167
第6章 系统调优 168
6.1 单机性能调优 170
6.1.1 程序优化 170
6.1.2 配置优化 172
6.1.3 数据库连接池优化 173
6.1.4 线程优化 175
6.1.5 DB(数据库)优化 178
6.1.6 空间换时间 179
6.1.7 时间换空间 179
6.1.8 数据过滤 179
6.1.9 服务器与操作系统
优化 180
6.1.10 JVM优化 181
6.2 数据结构优化 201
6.2.1 业务流程优化 201
6.2.2 业务异步化 201
6.2.3 有效的数据冗余 201
6.3 结构优化 202
6.3.1 单机结构 202
6.3.2 集群结构 203
6.3.3 分布式结构 204
6.4 本章小结 211
第7章 综合实践之诊断分析与调优 212
7.1 需求采集与分析 215
7.1.1 需求采集 216
7.1.2 需求分析 219
7.1.3 并发数计算 223
7.2 测试模型 225
7.3 测试计划 226
7.4 环境搭建 227
7.5 脚本开发 230
7.5.1 浏览帖子 230
7.5.2 回复帖子 237
7.6 数据准备 239
7.6.1 主数据准备 240
7.6.2 数据制作方法 241
7.7 场景设计与实现 246
7.7.1 场景设计 246
7.7.2 场景实现 247
7.8 测试监控 251
7.9 测试执行 253
7.9.1 基准测试 253
7.9.2 配置测试 255
7.9.3 负载测试 271
7.9.4 稳定性测试 282
7.10 结果分析 288
7.11 测试报告 288
7.12 本章小结 289
第8章 前端性能测试 290
8.1 前端性能风险 291
8.2 前端性能分析原理 292
8.3 前端性能分析工具 293
8.4 本章小结 302
提 升 篇
第9章 JMeter开发实践 303
9.1 JMeter开发环境建立 304
9.1.1 源码获取 304
9.1.2 配置开发环境 304
9.2 JMeter如何进行调试 307
9.2.1 认识项目结构 307
9.2.2 Eclipse中运行JMeter 308
9.2.3 JMeter组件实现介绍 313
9.3 JMeter开发示例 326
9.3.1 函数助手开发 326
9.3.2 Dubbo Sampler开发 329
9.4 本章小结 333
第 10章 利用容器技术快速部署负载 334
10.1 Docker部署负载实践 335
10.1.1 准备工作 336
10.1.2 启动负载 337
10.2 Kubernetes(K8S)集群部署负载
实践 339
10.2.1 整体结构介绍 339
10.2.2 准备工作 340
10.2.3 启动JMeter集群 342
10.2.4 运行负载测试 345
10.3 本章小结 346