全栈性能测试修炼宝典JMeter实战_陈志勇
基础篇 第1章 性能方向职业发展 1 1.1 为什么选择软件测试 2 1.2 软件测试痛处 2 1.3 软件测试发展路线 3 1.4 不仅仅是性能测试 4 1.5 从招聘要求看岗位价值 5 1.6 性能测试技能树 8 1.6.1 测试工具 8 1.6.2 测试基础 9 1.6.3 代码 10 1.6.4 服务器性能诊断知识 10 1.6.5 性能调优技能 12 1.6.6 自动化/持续集成 13 1.6.7 云计算及虚拟化 13 1.7 本章小结 13 第2章 性能测试初体验 14 2.1 性能测试的价值 15 2.2 性能测试流程 17 2.3 性能测试成功与失败要素 18 2.4 不同角色看性能 20 2.5 性能测试工具选择 21 2.6 性能测试相关术语 22 2.7 性能测试通过标准 23 2.8 性能测试趋势 24 2.9 本章小节 24 工具篇 第3章 JMeter体系结构 25 3.1 JMeter简介 26 3.2 JMeter体系结构 26 3.2.1 X1【取样器】 27 3.2.2 X1【断言】 28 3.2.3 X1【监听器】 28 3.2.4 X2【前置处理器】 29 3.2.5 X2【配置元件】 29 3.2.6 X 2【后置处理器】 30 3.2.7 X3【控制器】 31 3.2.8 X4【定时器】 31 3.2.9 X5【线程组】 31 3.2.10 Test Fragment 32 3.2.11 工作台 32 3.3 JMeter运行原理 33 3.4 JMeter测试计划要素 34 3.5 JMeter环境介绍 35 3.6 JMeter与LoadRunner异同 37 3.7 本章小结 38 第4章 JMeter脚本开发 39 4.1 JMeter工作区介绍 40 4.2 JMeter Http协议录制 41 4.2.1 Badboy进行录制 41 4.2.2 JMeter配置代理进行 录制 49 4.3 JMeter 脚本调试 52 4.4 JMeter 关联 55 4.4.1 后置处理器 56 4.4.2 Regular Expression Extractor 56 4.5 JMeter 参数化 60 4.5.1 配置元件 60 4.5.2 CSV Data Set Config 60 4.5.3 函数助手 62 4.5.4 访问地址参数化 64 4.5.5 HTTP请求默认值 64 4.6 JMeter 检查点 65 4.6.1 断言 65 4.6.2 Response Assertion 66 4.7 JMeter事务 68 4.7.1 逻辑控制器 68 4.7.2 事务控制器 68 4.8 JMeter 集合点 69 4.8.1 定时器 69 4.8.2 同步定时器 69 4.9 JMeter元件运行顺序 70 4.10 本章小结 72 第5章 JMeter负载与监听 74 5.1 场景设计 75 5.2 场景设置 75 5.3 场景运行 77 5.3.1 GUI运行 77 5.3.2 非GUI运行测试 79 5.4 性能参数配置 82 5.5 测试监听 83 5.5.1 JMeter监听器 83 5.5.2 开源监听插件 85 5.6 本章小结 85 第6章 JMeter元件详解 86 6.1 逻辑控制器 87 6.1.1 ForEach Controller(循环控制器) 87 6.1.2 Simple Controller 89 6.1.3 Include Controller 90 6.1.4 Runtime Controller 90 6.1.5 Switch Controller 91 6.1.6 While Controller 91 6.1.7 Interleave Controller 91 6.1.8 Once Only Controller 92 6.1.9 Throughput Controller 93 6.1.10 If Controller 94 6.1.11 Module Controller 94 6.1.12 Random Controller 95 6.1.13 Random Order Controller 95 6.1.14 Loop Controller 96 6.1.15 Recording Controller 96 6.1.16 Transaction Controller 97 6.2 配置元件 98 6.2.1 FTP请求默认值 98 6.2.2 HTTP Authorization Manager 99 6.2.3 HTTP Request Defaults 99 6.2.4 Java Request Defaults 99 6.2.5 JDBC Connection Configuration 100 6.2.6 Random Variable 100 6.2.7 Counter 100 6.2.8 Login Config Element 101 6.3 定时器 101 6.3.1 Gaussian Random Timer 102 6.3.2 Constant Timer 102 6.3.3 Synchronizing Timer 102 6.3.4 Constant Throughput Timer 102 6.3.5 Uniform Random Timer 103 6.3.6 Poisson Random Timer 103 6.3.7 BeanShell Timer 103 6.3.8 BSF Timer 106 6.3.9 JSR223 Timer 106 6.4 前置处理器 106 6.4.1 BeanShell PreProcessor 106 6.4.2 JSR223 PreProcessor 107 6.4.3 BSF PreProcessor 108 6.4.4 Regular User Parameter 108 6.4.5 用户参数 110 6.4.6 JDBC PreProcessor 110 6.4.7 HTML链接解析器 111 6.4.8 HTTP URL 重写修饰符 114 6.5 后置处理器 115 6.5.1 Debug PostProcessor 115 6.5.2 JDBC PostProcessor 116 6.5.3 Result Status Action Handler 116 6.5.4 XPath Extractor 117 6.6 断言 118 6.6.1 BeanShell Assertion 118 6.6.2 Compare Assertion 120 6.6.3 HTML Assertion 120 6.6.4 Size Assertion 121 6.6.5 XML Schema Assertion 122 6.6.6 XML Assertion 123 6.6.7 XPath Assertion 123 6.6.8 Duration Assertion 124 6.6.9 其他断言元件 124 6.7 监听器 124 6.7.1 监听器默认配置 124 6.7.2 Aggregate Graph 127 6.7.3 BeanShell Listener(BeanShell 监听器) 130 6.7.4 Distribution Graph (分布图) 130 6.7.5 Response Time Graph(响应 时间图形监听器) 131 6.7.6 Simple Data Writer 131 6.7.7 Spline Visualizer(样条线 显示取样器) 132 6.7.8 Summary Report (表格形式显示) 133 6.7.9 Save Response to a file (存储服务器响应) 133 6.7.10 View Results Tree (察看结果树) 134 6.7.11 Assertion Results (断言结果) 135 6.7.12 Generate Summary Results (窗口显示结果) 136 6.7.13 View Results in Table (表格形式显示) 136 6.7.14 Monitor Results 137 6.7.15 Aggregate Report 138 6.7.16 Mailer Visualizer 138 6.8 函数助手 139 6.8.1 __BeanShell脚本语言 139 6.8.2 __char 140 6.8.3 __counter 141 6.8.4 __CSVRead 142 6.8.5 __escapeHtml 143 6.8.6 __escapeOroRegexChars 143 6.8.7 __eval 144 6.8.8 __evalVar 144 6.8.9 __FileToString 145 6.8.10 __intSum 146 6.8.11 __longSum 146 6.8.12 __javaScript 146 6.8.13 __jexl 146 6.8.14 __log 147 6.8.15 __logn 148 6.8.16 __machineIP 148 6.8.17 __machineName 149 6.8.18 __P 149 6.8.19 __property 149 6.8.20 __Random 150 6.8.21 __RandomString 150 6.8.22 __regexFunction 151 6.8.23 __samplerName 151 6.8.24 __setProperty 152 6.8.25 __split 152 6.8.26 __StringFromFile 153 6.8.27 __TestPlanName 154 6.8.28 __threadNum 154 6.8.29 __time 154 6.8.30 __unescape 155 6.8.31 __unescapeHtml 155 6.8.32 __urldecode 155 6.8.33 __urlencode 155 6.8.34 __UUID 155 6.8.35 __V 155 6.8.36 __XPath 156 6.9 本章小结 156 第7章 JMeter常用脚本开发 158 7.1 BeanShell Sampler 159 7.2 Debug Sampler 162 7.3 FTP请求 163 7.4 Java请求 164 7.5 JDBC请求 171 7.5.1 JDBC连接池设置 172 7.5.2 添加JDBC Request 174 7.6 JUnit Request 179 7.6.1 JUnit简介 179 7.6.2 JUnit参数 180 7.6.3 JMeter JUnit Request 181 7.7 SOAP/XML-RPC Request 182 7.8 本章小结 184 第8章 JMeter开源测试组件 185 8.1 线程组 187 8.1.1 Ultimate Thread Group 187 8.1.2 Stepping Thread Group 188 8.2 逻辑控制器 189 8.3 配置元件 190 8.4 定时器 190 8.5 监听器 191 8.5.1 Transactions per Second 191 8.5.2 Response Times Over Time 192 8.5.3 Response Times vs Threads 192 8.5.4 Graphs Generator 192 8.6 服务器监控 193 8.7 本章小结 195 实战篇 第9章 性能监控诊断 196 9.1 操作系统性能分析介绍 197 9.2 系统性能分析思路 198 9.2.1 系统性能分析因素- CPU 199 9.2.2 系统性能分析因素- 内存 199 9.2.3 系统性能分析因素- 网络 200 9.2.4 系统性能分析因素-I/O 201 9.2.5 系统性能分析因素- 总结 201 9.3 瓶颈阈值分析思维导图与 手册 202 9.3.1 CPU定位分析 202 9.3.2 内存定位分析 203 9.3.3 网络定位分析 203 9.3.4 IO定位分析 204 9.4 Linux系统性能分析思路和 实践 204 9.4.1 系统负载监控分析实践 205 9.4.2 系统监控分析实践 206 9.5 Windows系统性能分析思路和 实践 217 9.5.1 性能监视器综述 217 9.5.2 性能监视器工具介绍 218 9.5.3 系统监控分析实践 218 9.5.4 资源监视器介绍和 实践 226 9.6 Tomcat监控之Probe 235 9.7 MySQL监控之MONyog 238 9.8 JVM监控 241 9.8.1 jps 241 9.8.2 jstat 243 9.8.3 jmap 245 9.8.4 JVisualVM 247 9.9 本章小结 250 第10章 性能分析调优 251 10.1 性能分析方法 253 10.2 单机性能分析与调优 254 10.2.1 性能分析流程 254 10.2.2 系统性能关注点 256 10.2.3 程序优化 261 10.2.4 配置优化 263 10.2.5 数据库连接池优化 263 10.2.6 线程优化 265 10.2.7 DB优化 268 10.3 业务流程优化 269 10.4 结构优化 269 10.4.1 单机结构 269 10.4.2 集群结构 270 10.4.3 分布式结构 271 10.5 本章小结 277 第11章 综合实践之诊断分析与调优 278 11.1 需求分析 280 11.1.1 需求采集 282 11.1.2 需求分析 285 11.1.3 并发数计算 289 11.2 测试模型 291 11.3 测试计划 291 11.4 环境搭建 292 11.5 脚本开发 295 11.5.1 浏览帖子 295 11.5.2 回复帖子 298 11.5.3 发帖 301 11.6 数据准备 301 11.6.1 主数据准备 302 11.6.2 数据制作方法 303 11.7 场景设计 307 11.7.1 场景设计 307 11.7.2 场景实现 309 11.8 测试监控 312 11.9 测试执行 313 11.9.1 基准测试 313 11.9.2 配置测试 315 11.9.3 负载测试 319 11.9.4 稳定性测试 327 11.10 结果分析 328 11.11 测试报告 329 11.12 本章小结 330 提升篇 第12章 互联网测试必备知识——HTTP 协议 331 12.1 HTTP协议简介 332 12.2 HTTP工作原理 332 12.3 HTTP请求 333 12.4 HTTP应答 335 12.5 HTTP捕获 336 12.6 Http Watch 337 12.6.1 HttpWatch录制 337 12.6.2 HttpWatch数据分析 338 12.7 本章小结 341 第13章 端到端性能监控平台 342 13.1 为什么构建基于云的端到端 性能监控平台 343 13.2 端到端监控的意义 343 13.3 前端监控常见策略 343 13.4 基于httpWatch的自动捕获 344 13.5 基于firebug的自动捕获 345 13.5.1 自动导出瀑布图 345 13.5.2 HARViewer部署 346 13.5.3 基于Fiddler的自动 捕获 348 13.5.4 基于YSlow的前端评估 体系 348 13.5.5 基于PageSpeed的前端 评估体系 350 13.5.6 基于dynaTrace Ajax的 前端评估体系 351 13.6 构建基于Showslow的监控 体系 356 13.6.1 Showslow介绍 356 13.6.2 Showslow环境搭建 356 13.6.3 ShowSlow配置 357 13.6.4 YSlow配置 357 13.6.5 WebDriver驱动的定时 监控体系 359 13.7 本章小结 361 第14章 性能测试自动化——Jenkins+ Ant+ JMeter 362 14.1 为什么要做性能测试自动化 363 14.2 如何做性能测试自动化 365 14.3 Ant+JMeter集成 365 14.3.1 Ant下载 366 14.3.2 Ant安装 366 14.3.3 JMeter中配置XML文件来定义测试活动 367 14.3.4 运行测试计划 369 14.4 Jenkins+Ant集成 371 14.4.1 Jenkins安装 372 14.4.2 建立Slave节点 374 14.4.3 JMeter任务配置 377 14.5 如何运行复杂场景 385 14.6 报告自动化 385 14.6.1 配置TPS、响应时间等 图表 385 14.6.2 报告合成 386 14.7 JMeter脚本拷贝自动化 391 14.8 JMeter Agent自动化 395 14.9 本章小结 398 第15章 JMeter常见问题 399 15.1 JMeter无法开启 400 15.2 JMeter异常关闭 400 15.3 JMeter无法产生负载 401 15.4 JMeter日志输出控制 401 15.5 记录测试结果影响Jmeter 效率 402 15.6 JMeter可以测试接口吗 402 15.7 JMeter可以测试Dubbo 接口吗 403 15.8 JMeter可以测试RPC 接口吗 404 15.9 JMeter函数助手中函数不够用 怎么办 404 15.10 JMeter支持子事务的 定义吗 407 15.11 JMeter非GUI方式运行时如何传 递运行参数 408 15.12 运行场景时察看结果树为什么 要关闭 409 15.13 多个测试计划如何运行 409 15.14 如何找导致CPU瓶颈的 程序 410 15.15 如何找导致内存瓶颈的 程序 410 15.16 如何找导致IO瓶颈的 程序 411 15.17 如何计算并发用户数 411 15.18 JMeter可以做哪些测试 412 15.19 性能测试的分析方法有 哪些 412 15.20 如何看懂Java线程栈 信息 413 15.21 能用本地负载环境测试“云环境” 的性能吗 413 15.22 性能测试环境和生产环境 不一致 414 15.23 本章小结 414 附录A Jforum性能测试计划 415 A.1 性能测试背景 416 A.2 性能测试目标 416 A.3 性能测试范围 416 A.4 名词术语约定 416 A.5 测试环境 417 A.5.1 生产环境系统架构 417 A.5.2 测试环境系统架构 418 A.5.3 生产环境软硬件配置 418 A.5.4 测试环境软硬件配置 419 A.5.5 负载机软硬件配置 419 A.6 需求分析 420 A.6.1 业务模型 420 A.6.2 性能指标 421 A.7 测试策略 422 A.7.1 测试执行策略 422 A.7.2 测试监控策略 422 A.8 测试场景 423 A.9 测试准备 423 A.9.1 测试工具准备 424 A.9.2 测试脚本及程序准备 424 A.9.3 测试数据准备 424 A.9.4 测试环境准备 424 A.10 测试组织架构 425 A.11 交付清单 425 A.12 项目风险 426 A.13 附录 426 附录B 性能测试报告 427 B.1 性能测试背景 428 B.2 性能测试目标 428 B.3 性能测试范围 428 B.4 名词术语约定 429 B.5 测试环境 430 B.5.1 生产环境系统架构 430 B.5.2 测试环境系统架构 430 B.5.3 生产环境软硬件配置 431 B.5.4 测试环境软硬件配置 431 B.5.5 负载机软硬件配置 431 B.6 测试数据 432 B.6.1 历史数据量 432 B.6.2 主数据 432 B.6.3 性能指标 432 B.7 测试进度 433 B.8 测试结果 433 B.8.1 基准测试结果 433 B.8.2 配置测试 434 B.8.3 负载测试结果 438 B.8.4 稳定性测试结果 445 B.9 测试结论 447 B.9.1 测试结论 447 B.9.2 系统缺陷 448 B.10 系统风险 448 参考资料 449 2【后置处理器】 30 3.2.7 X3【控制器】 31 3.2.8 X4【定时器】 31 3.2.9 X5【线程组】 31 3.2.10 Test Fragment 32 3.2.11 工作台 32 3.3 JMeter运行原理 33 3.4 JMeter测试计划要素 34 3.5 JMeter环境介绍 35 3.6 JMeter与LoadRunner异同 37 3.7 本章小结 38 第4章 JMeter脚本开发 39 4.1 JMeter工作区介绍 40 4.2 JMeter Http协议录制 41 4.2.1 Badboy进行录制 41 4.2.2 JMeter配置代理进行 录制 49 4.3 JMeter 脚本调试 52 4.4 JMeter 关联 55 4.4.1 后置处理器 56 4.4.2 Regular Expression Extractor 56 4.5 JMeter 参数化 60 4.5.1 配置元件 60 4.5.2 CSV Data Set Config 60 4.5.3 函数助手 62 4.5.4 访问地址参数化 64 4.5.5 HTTP请求默认值 64 4.6 JMeter 检查点 65 4.6.1 断言 65 4.6.2 Response Assertion 66 4.7 JMeter事务 68 4.7.1 逻辑控制器 68 4.7.2 事务控制器 68 4.8 JMeter 集合点 69 4.8.1 定时器 69 4.8.2 同步定时器 69 4.9 JMeter元件运行顺序 70 4.10 本章小结 72 第5章 JMeter负载与监听 74 5.1 场景设计 75 5.2 场景设置 75 5.3 场景运行 77 5.3.1 GUI运行 77 5.3.2 非GUI运行测试 79 5.4 性能参数配置 82 5.5 测试监听 83 5.5.1 JMeter监听器 83 5.5.2 开源监听插件 85 5.6 本章小结 85 第6章 JMeter元件详解 86 6.1 逻辑控制器 87 6.1.1 ForEach Controller(循环控制器) 87 6.1.2 Simple Controller 89 6.1.3 Include Controller 90 6.1.4 Runtime Controller 90 6.1.5 Switch Controller 91 6.1.6 While Controller 91 6.1.7 Interleave Controller 91 6.1.8 Once Only Controller 92 6.1.9 Throughput Controller 93 6.1.10 If Controller 94 6.1.11 Module Controller 94 6.1.12 Random Controller 95 6.1.13 Random Order Controller 95 6.1.14 Loop Controller 96 6.1.15 Recording Controller 96 6.1.16 Transaction Controller 97 6.2 配置元件 98 6.2.1 FTP请求默认值 98 6.2.2 HTTP Authorization Manager 99 6.2.3 HTTP Request Defaults 99 6.2.4 Java Request Defaults 99 6.2.5 JDBC Connection Configuration 100 6.2.6 Random Variable 100 6.2.7 Counter 100 6.2.8 Login Config Element 101 6.3 定时器 101 6.3.1 Gaussian Random Timer 102 6.3.2 Constant Timer 102 6.3.3 Synchronizing Timer 102 6.3.4 Constant Throughput Timer 102 6.3.5 Uniform Random Timer 103 6.3.6 Poisson Random Timer 103 6.3.7 BeanShell Timer 103 6.3.8 BSF Timer 106 6.3.9 JSR223 Timer 106 6.4 前置处理器 106 6.4.1 BeanShell PreProcessor 106 6.4.2 JSR223 PreProcessor 107 6.4.3 BSF PreProcessor 108 6.4.4 Regular User Parameter 108 6.4.5 用户参数 110 6.4.6 JDBC PreProcessor 110 6.4.7 HTML链接解析器 111 6.4.8 HTTP URL 重写修饰符 114 6.5 后置处理器 115 6.5.1 Debug PostProcessor 115 6.5.2 JDBC PostProcessor 116 6.5.3 Result Status Action Handler 116 6.5.4 XPath Extractor 117 6.6 断言 118 6.6.1 BeanShell Assertion 118 6.6.2 Compare Assertion 120 6.6.3 HTML Assertion 120 6.6.4 Size Assertion 121 6.6.5 XML Schema Assertion 122 6.6.6 XML Assertion 123 6.6.7 XPath Assertion 123 6.6.8 Duration Assertion 124 6.6.9 其他断言元件 124 6.7 监听器 124 6.7.1 监听器默认配置 124 6.7.2 Aggregate Graph 127 6.7.3 BeanShell Listener(BeanShell 监听器) 130 6.7.4 Distribution Graph (分布图) 130 6.7.5 Response Time Graph(响应 时间图形监听器) 131 6.7.6 Simple Data Writer 131 6.7.7 Spline Visualizer(样条线 显示取样器) 132 6.7.8 Summary Report (表格形式显示) 133 6.7.9 Save Response to a file (存储服务器响应) 133 6.7.10 View Results Tree (察看结果树) 134 6.7.11 Assertion Results (断言结果) 135 6.7.12 Generate Summary Results (窗口显示结果) 136 6.7.13 View Results in Table (表格形式显示) 136 6.7.14 Monitor Results 137 6.7.15 Aggregate Report 138 6.7.16 Mailer Visualizer 138 6.8 函数助手 139 6.8.1 __BeanShell脚本语言 139 6.8.2 __char 140 6.8.3 __counter 141 6.8.4 __CSVRead 142 6.8.5 __escapeHtml 143 6.8.6 __escapeOroRegexChars 143 6.8.7 __eval 144 6.8.8 __evalVar 144 6.8.9 __FileToString 145 6.8.10 __intSum 146 6.8.11 __longSum 146 6.8.12 __javaScript 146 6.8.13 __jexl 146 6.8.14 __log 147 6.8.15 __logn 148 6.8.16 __machineIP 148 6.8.17 __machineName 149 6.8.18 __P 149 6.8.19 __property 149 6.8.20 __Random 150 6.8.21 __RandomString 150 6.8.22 __regexFunction 151 6.8.23 __samplerName 151 6.8.24 __setProperty 152 6.8.25 __split 152 6.8.26 __StringFromFile 153 6.8.27 __TestPlanName 154 6.8.28 __threadNum 154 6.8.29 __time 154 6.8.30 __unescape 155 6.8.31 __unescapeHtml 155 6.8.32 __urldecode 155 6.8.33 __urlencode 155 6.8.34 __UUID 155 6.8.35 __V 155 6.8.36 __XPath 156 6.9 本章小结 156 第7章 JMeter常用脚本开发 158 7.1 BeanShell Sampler 159 7.2 Debug Sampler 162 7.3 FTP请求 163 7.4 Java请求 164 7.5 JDBC请求 171 7.5.1 JDBC连接池设置 172 7.5.2 添加JDBC Request 174 7.6 JUnit Request 179 7.6.1 JUnit简介 179 7.6.2 JUnit参数 180 7.6.3 JMeter JUnit Request 181 7.7 SOAP/XML-RPC Request 182 7.8 本章小结 184 第8章 JMeter开源测试组件 185 8.1 线程组 187 8.1.1 Ultimate Thread Group 187 8.1.2 Stepping Thread Group 188 8.2 逻辑控制器 189 8.3 配置元件 190 8.4 定时器 190 8.5 监听器 191 8.5.1 Transactions per Second 191 8.5.2 Response Times Over Time 192 8.5.3 Response Times vs Threads 192 8.5.4 Graphs Generator 192 8.6 服务器监控 193 8.7 本章小结 195 实战篇 第9章 性能监控诊断 196 9.1 操作系统性能分析介绍 197 9.2 系统性能分析思路 198 9.2.1 系统性能分析因素- CPU 199 9.2.2 系统性能分析因素- 内存 199 9.2.3 系统性能分析因素- 网络 200 9.2.4 系统性能分析因素-I/O 201 9.2.5 系统性能分析因素- 总结 201 9.3 瓶颈阈值分析思维导图与 手册 202 9.3.1 CPU定位分析 202 9.3.2 内存定位分析 203 9.3.3 网络定位分析 203 9.3.4 IO定位分析 204 9.4 Linux系统性能分析思路和 实践 204 9.4.1 系统负载监控分析实践 205 9.4.2 系统监控分析实践 206 9.5 Windows系统性能分析思路和 实践 217 9.5.1 性能监视器综述 217 9.5.2 性能监视器工具介绍 218 9.5.3 系统监控分析实践 218 9.5.4 资源监视器介绍和 实践 226 9.6 Tomcat监控之Probe 235 9.7 MySQL监控之MONyog 238 9.8 JVM监控 241 9.8.1 jps 241 9.8.2 jstat 243 9.8.3 jmap 245 9.8.4 JVisualVM 247 9.9 本章小结 250 第10章 性能分析调优 251 10.1 性能分析方法 253 10.2 单机性能分析与调优 254 10.2.1 性能分析流程 254 10.2.2 系统性能关注点 256 10.2.3 程序优化 261 10.2.4 配置优化 263 10.2.5 数据库连接池优化 263 10.2.6 线程优化 265 10.2.7 DB优化 268 10.3 业务流程优化 269 10.4 结构优化 269 10.4.1 单机结构 269 10.4.2 集群结构 270 10.4.3 分布式结构 271 10.5 本章小结 277 第11章 综合实践之诊断分析与调优 278 11.1 需求分析 280 11.1.1 需求采集 282 11.1.2 需求分析 285 11.1.3 并发数计算 289 11.2 测试模型 291 11.3 测试计划 291 11.4 环境搭建 292 11.5 脚本开发 295 11.5.1 浏览帖子 295 11.5.2 回复帖子 298 11.5.3 发帖 301 11.6 数据准备 301 11.6.1 主数据准备 302 11.6.2 数据制作方法 303 11.7 场景设计 307 11.7.1 场景设计 307 11.7.2 场景实现 309 11.8 测试监控 312 11.9 测试执行 313 11.9.1 基准测试 313 11.9.2 配置测试 315 11.9.3 负载测试 319 11.9.4 稳定性测试 327 11.10 结果分析 328 11.11 测试报告 329 11.12 本章小结 330 提升篇 第12章 互联网测试必备知识——HTTP 协议 331 12.1 HTTP协议简介 332 12.2 HTTP工作原理 332 12.3 HTTP请求 333 12.4 HTTP应答 335 12.5 HTTP捕获 336 12.6 Http Watch 337 12.6.1 HttpWatch录制 337 12.6.2 HttpWatch数据分析 338 12.7 本章小结 341 第13章 端到端性能监控平台 342 13.1 为什么构建基于云的端到端 性能监控平台 343 13.2 端到端监控的意义 343 13.3 前端监控常见策略 343 13.4 基于httpWatch的自动捕获 344 13.5 基于firebug的自动捕获 345 13.5.1 自动导出瀑布图 345 13.5.2 HARViewer部署 346 13.5.3 基于Fiddler的自动 捕获 348 13.5.4 基于YSlow的前端评估 体系 348 13.5.5 基于PageSpeed的前端 评估体系 350 13.5.6 基于dynaTrace Ajax的 前端评估体系 351 13.6 构建基于Showslow的监控 体系 356 13.6.1 Showslow介绍 356 13.6.2 Showslow环境搭建 356 13.6.3 ShowSlow配置 357 13.6.4 YSlow配置 357 13.6.5 WebDriver驱动的定时 监控体系 359 13.7 本章小结 361 第14章 性能测试自动化——Jenkins+ Ant+ JMeter 362 14.1 为什么要做性能测试自动化 363 14.2 如何做性能测试自动化 365 14.3 Ant+JMeter集成 365 14.3.1 Ant下载 366 14.3.2 Ant安装 366 14.3.3 JMeter中配置XML文件来定义测试活动 367 14.3.4 运行测试计划 369 14.4 Jenkins+Ant集成 371 14.4.1 Jenkins安装 372 14.4.2 建立Slave节点 374 14.4.3 JMeter任务配置 377 14.5 如何运行复杂场景 385 14.6 报告自动化 385 14.6.1 配置TPS、响应时间等 图表 385 14.6.2 报告合成 386 14.7 JMeter脚本拷贝自动化 391 14.8 JMeter Agent自动化 395 14.9 本章小结 398 第15章 JMeter常见问题 399 15.1 JMeter无法开启 400 15.2 JMeter异常关闭 400 15.3 JMeter无法产生负载 401 15.4 JMeter日志输出控制 401 15.5 记录测试结果影响Jmeter 效率 402 15.6 JMeter可以测试接口吗 402 15.7 JMeter可以测试Dubbo 接口吗 403 15.8 JMeter可以测试RPC 接口吗 404 15.9 JMeter函数助手中函数不够用 怎么办 404 15.10 JMeter支持子事务的 定义吗 407 15.11 JMeter非GUI方式运行时如何传 递运行参数 408 15.12 运行场景时察看结果树为什么 要关闭 409 15.13 多个测试计划如何运行 409 15.14 如何找导致CPU瓶颈的 程序 410 15.15 如何找导致内存瓶颈的 程序 410 15.16 如何找导致IO瓶颈的 程序 411 15.17 如何计算并发用户数 411 15.18 JMeter可以做哪些测试 412 15.19 性能测试的分析方法有 哪些 412 15.20 如何看懂Java线程栈 信息 413 15.21 能用本地负载环境测试“云环境” 的性能吗 413 15.22 性能测试环境和生产环境 不一致 414 15.23 本章小结 414 附录A Jforum性能测试计划 415 A.1 性能测试背景 416 A.2 性能测试目标 416 A.3 性能测试范围 416 A.4 名词术语约定 416 A.5 测试环境 417 A.5.1 生产环境系统架构 417 A.5.2 测试环境系统架构 418 A.5.3 生产环境软硬件配置 418 A.5.4 测试环境软硬件配置 419 A.5.5 负载机软硬件配置 419 A.6 需求分析 420 A.6.1 业务模型 420 A.6.2 性能指标 421 A.7 测试策略 422 A.7.1 测试执行策略 422 A.7.2 测试监控策略 422 A.8 测试场景 423 A.9 测试准备 423 A.9.1 测试工具准备 424 A.9.2 测试脚本及程序准备 424 A.9.3 测试数据准备 424 A.9.4 测试环境准备 424 A.10 测试组织架构 425 A.11 交付清单 425 A.12 项目风险 426 A.13 附录 426 附录B 性能测试报告 427 B.1 性能测试背景 428 B.2 性能测试目标 428 B.3 性能测试范围 428 B.4 名词术语约定 429 B.5 测试环境 430 B.5.1 生产环境系统架构 430 B.5.2 测试环境系统架构 430 B.5.3 生产环境软硬件配置 431 B.5.4 测试环境软硬件配置 431 B.5.5 负载机软硬件配置 431 B.6 测试数据 432 B.6.1 历史数据量 432 B.6.2 主数据 432 B.6.3 性能指标 432 B.7 测试进度 433 B.8 测试结果 433 B.8.1 基准测试结果 433 B.8.2 配置测试 434 B.8.3 负载测试结果 438 B.8.4 稳定性测试结果 445 B.9 测试结论 447 B.9.1 测试结论 447 B.9.2 系统缺陷 448 B.10 系统风险 448 参考资料 449
用户评论