第一部分 基础
第1章 JMeter基础 3
1.1 JMeter简介 3
1.2 JMeter的工作机制 4
1.2.1 性能测试工具的核心要素 4
1.2.2 JMeter的功能 5
1.2.3 JMeter测试流程 5
1.3 JMeter的安装部署 6
1.3.1 JMeter环境需求 6
1.3.2 JMeter运行方式 7
1.3.3 JMeter单机部署 9
1.3.4 JMeter分布式部署 11
1.4 JMeter测试元素和JMeter GUI 13
1.4.1 JMeter测试元素 14
1.4.2 JMeter GUI 18
1.5 元素执行顺序与组件作用域 22
1.5.1 元素执行顺序 22
1.5.2 组件作用域 25
1.6 JMeter测试计划 27
1.6.1 构建测试计划 27
1.6.2 执行测试计划 30
1.7 JMeter线程组 34
1.7.1 普通线程组 34
1.7.2 setUp线程组 36
1.7.3 tearDown线程组 36
1.8 JMeter常用配置元件 37
1.8.1 HTTP信息头管理器 37
1.8.2 HTTP Cookie管理器 38
1.8.3 HTTP缓存管理器 39
1.8.4 HTTP请求默认值 40
1.8.5 JDBC连接配置 41
1.9 小结 43
第2章 测试HTTP 44
2.1 HTTP基础 44
2.1.1 HTTP简介 44
2.1.2 HTTP会话与连接 46
2.1.3 HTTP消息 48
2.2 HTTP请求的配置 52
2.2.1 基本配置 52
2.2.2 高级配置 54
2.2.3 HTTP请求参数的设置 55
2.3 测试HTTP GET请求 57
2.3.1 GET请求参数的设置 57
2.3.2 测试GET请求案例 58
2.4 测试HTTP POST请求 60
2.4.1 POST请求参数的设置 60
2.4.2 测试POST请求案例 60
2.5 测试RESTful风格的请求 63
2.5.1 RESTful风格的HTTP请求方法 63
2.5.2 测试RESTful风格的HTTP请求案例 64
2.6 HTTP文件上传与下载 65
2.6.1 文件上传 65
2.6.2 文件下载 67
2.7 小结 70
第二部分 进阶
第3章 JMeter参数化技术 73
3.1 参数化概述 73
3.1.1 数据驱动测试 73
3.1.2 参数化及其类型 74
3.1.3 参数化实现步骤 75
3.1.4 数据生成工具 75
3.1.5 JMeter中常用的参数化方式 77
3.2 用户参数参数化与用户自定义变量参数化 77
3.2.1 用户参数参数化 77
3.2.2 用户自定义变量参数化 80
3.3 CSV Data Set Config参数化 83
3.3.1 添加CSV Data Set Config 84
3.3.2 配置CSV Data Set Config 84
3.3.3 遍历参数值 86
3.3.4 CSV Data Set Config参数化案例 88
3.4 内置函数参数化 90
3.4.1 参数化相关的内置函数 91
3.4.2 内置函数参数化案例 94
3.5 数据库参数化 96
3.5.1 JDBC Request 96
3.5.2 使用单线程遍历参数值 101
3.5.3 使用多线程遍历参数值 104
3.6 小结 108
第4章 JMeter断言技术 109
4.1 断言概述 109
4.1.1 断言的基本概念和作用 109
4.1.2 JMeter中常用的断言 110
4.2 响应断言 111
4.2.1 添加响应断言 111
4.2.2 配置响应断言 111
4.2.3 响应断言案例 113
4.3 JSON断言 116
4.3.1 JSON与JSON Path 116
4.3.2 添加JSON断言 118
4.3.3 配置JSON断言 118
4.3.4 JSON断言案例 119
4.4 大小断言 122
4.4.1 添加大小断言 122
4.4.2 配置大小断言 122
4.4.3 大小断言案例 123
4.5 持续时间断言 123
4.5.1 添加持续时间断言 124
4.5.2 配置持续时间断言 124
4.5.3 持续时间断言案例 125
4.6 小结 125
第5章 JMeter关联技术 126
5.1 关联概述 126
5.1.1 关联的基本概念和作用 126
5.1.2 JMeter中常用的关联方式 127
5.2 正则表达式提取器关联 127
5.2.1 添加正则表达式提取器 128
5.2.2 配置正则表达式提取器 128
5.2.3 正则表达式提取器关联案例 132
5.3 JSON提取器关联 134
5.3.1 添加JSON提取器 134
5.3.2 配置JSON提取器 135
5.3.3 JSON提取器关联案例 136
5.4 CSS Selector提取器关联 136
5.4.1 添加CSS Selector提取器 136
5.4.2 配置CSS Selector提取器 137
5.4.3 CSS Selector提取器关联案例 138
5.5 跨线程组关联 139
5.5.1 JMeter属性与变量 139
5.5.2 跨线程组传递数据的方式 141
5.5.3 跨线程组关联案例 142
5.6 小结 144
第6章 JMeter脚本调试技术 145
6.1 脚本调试概述 145
6.2 Debug Sampler 146
6.2.1 Debug Sampler简介 146
6.2.2 使用Debug Sampler调试脚本 146
6.3 查看结果树 147
6.3.1 查看结果树简介 147
6.3.2 使用查看结果树调试脚本 148
6.4 日志查看器 152
6.4.1 配置日志级别与路径 153
6.4.2 在日志查看器中查看日志 154
6.4.3 用户自定义日志 155
6.5 小结 156
第三部分 拓展
第7章 使用逻辑控制器构建
复杂测试场景 159
7.1 使用循环控制器 159
7.1.1 循环控制器使用场景 159
7.1.2 添加和配置循环控制器 160
7.1.3 循环控制器使用案例 160
7.2 使用While控制器 162
7.2.1 While控制器使用场景 162
7.2.2 添加和配置While控制器 163
7.2.3 While控制器使用案例 163
7.3 使用ForEach控制器 169
7.3.1 ForEach控制器使用场景 169
7.3.2 添加和配置ForEach控制器 170
7.3.3 ForEach控制器使用案例 170
7.4 使用If控制器 172
7.4.1 If控制器使用场景 172
7.4.2 添加和配置If控制器 173
7.4.3 If控制器使用案例 174
7.5 使用事务控制器 176
7.5.1 事务控制器使用场景 176
7.5.2 添加和配置事务控制器 177
7.5.3 事务控制器使用案例 178
7.6 使用吞吐量控制器 179
7.6.1 吞吐量控制器使用场景 179
7.6.2 添加和配置吞吐量控制器 179
7.6.3 吞吐量控制器使用案例 180
7.7 小结 182
第8章 JMeter扩展 183
8.1 JMeter插件管理器 183
8.1.1 JMeter插件管理器安装 183
8.1.2 JMeter插件管理器使用 183
8.2 扩展线程组插件 185
8.2.1 Concurrency Thread Group插件 185
8.2.2 Ultimate Thread Group插件 187
8.2.3 Inter-Thread Communication插件 189
8.3 引用外部Java程序 192
8.3.1 在测试计划中配置 193
8.3.2 在JMeter特定目录中放置JAR文件 193
8.3.3 在指定目录中放置JAR文件 193
8.3.4 动态加载JAR文件 194
8.4 小结 195
第9章 使用JMeter测试SOAP、 NoSQL和WebSocket 196
9.1 使用JMeter测试SOAP 196
9.1.1 SOAP简介 196
9.1.2 SOAP消息格式 197
9.1.3 SOAP 1.1与SOAP 1.2的区别 197
9.1.4 SOAP测试案例 198
9.2 使用JMeter测试NoSQL 200
9.2.1 NoSQL简介 200
9.2.2 测试Redis 201
9.3 使用JMeter测试WebSocket 203
9.3.1 WebSocket简介 203
9.3.2 WebSocket握手 205
9.3.3 WebSocket帧结构 207
9.3.4 WebSocket心跳机制 208
9.3.5 WebSocket安装配置 209
9.3.6 WebSocket测试案例 211
9.4 小结 212
第四部分 深入
第10章 JMeter内置对象 215
10.1 JSR223简介 215
10.2 JMeter内置对象概述 216
10.3 ctx对象 217
10.3.1 JMeter上下文与ctx对象 217
10.3.2 访问当前请求信息 218
10.3.3 获取前一个取样器的响应信息 219
10.3.4 获取前一个取样器的信息 219
10.3.5 获取变量与属性 220
10.3.6 获取线程(组)的相关信息 221
10.4 vars对象 222
10.4.1 vars对象简介 222
10.4.2 操作变量 222
10.4.3 访问线程信息 224
10.5 props对象 224
10.5.1 props对象简介 224
10.5.2 操作属性 225
10.5.3 获取属性信息 226
10.5.4 其他方法 228
10.6 AssertionResult对象 228
10.6.1 AssertionResult对象简介 228
10.6.2 获取断言信息 228
10.6.3 设置断言结果 229
10.7 sampler对象 230
10.7.1 sampler对象简介 230
10.7.2 获取请求基本信息 230
10.7.3 设置请求基本信息 232
10.7.4 请求头管理 233
10.7.5 请求参数管理 235
10.7.6 文件上传参数管理 238
10.8 prev对象 241
10.8.1 prev对象简介 241
10.8.2 获取响应信息 241
10.8.3 获取请求信息 243
10.8.4 设置响应信息 244
10.8.5 其他方法 246
10.9 log对象 246
10.9.1 log对象简介 246
10.9.2 日志记录 246
10.9.3 其他方法 248
10.10 其他内置对象 248
10.11 小结 249
第11章 JSR223元素与 Groovy脚本开发 250
11.1 JSR223元素与Groovy
编程 250
11.1.1 添加和配置JSR223元素 251
11.1.2 为什么选择Groovy 252
11.2 JSR223 PreProcessor 252
11.2.1 JSR223 PreProcessor的应用场景 252
11.2.2 JSR223 PreProcessor的应用案例 253
11.3 JSR223 Timer 264
11.3.1 JSR223 Timer的应用场景 264
11.3.2 JSR223 Timer的应用案例 264
11.4 JSR223 Sampler 267
11.4.1 JSR223 Sampler的应用场景 267
11.4.2 JSR223 Sampler的应用案例 267
11.5 JSR223 PostProcessor 274
11.5.1 JSR223 PostProcessor的应用场景 274
11.5.2 JSR223 PostProcessor的应用案例 274
11.6 JSR223 Assertion 281
11.6.1 JSR223 Assertion的应用场景 281
11.6.2 JSR223 Assertion的应用案例 281
11.7 JSR223 Listener 292
11.7.1 JSR223 Listener的应用场景 292
11.7.2 JSR223 Listener的应用案例 293
11.8 小结 296
附录A MDClub系统部署说明 297