第一部分 基础篇 2
第1章 软件性能测试的基本概念 2
1.1 什么是软件性能 2
1.1.1 用户视角的软件性能 2
1.1.2 管理员视角的软件性能 3
1.1.3 开发视角的软件性能 4
1.1.4 Web前端性能 5
1.1.5 总结 6
1.2 软件性能的几个主要术语 6
1.2.1 响应时间 7
1.2.2 并发用户数 9
1.2.3 吞吐量 14
1.2.4 性能计数器 16
1.2.5 思考时间 17
1.3 软件性能测试方法论 18
1.3.1 SEI负载测试计划过程 18
1.3.2 RBI方法 19
1.3.3 性能下降曲线分析法 20
1.3.4 LoadRunner的性能测试过程 21
1.3.5 Segue提供的性能测试过程 22
1.3.6 敏捷性能测试 22
1.3.7 本书提供的性能测试模型 26
1.4 本章小结 27
第2章 性能测试的应用领域 28
2.1 性能测试的方法 28
2.1.1 验收性能测试 29
2.1.2 负载测试 30
2.1.3 压力测试 31
2.1.4 配置测试 31
2.1.5 并发测试 32
2.1.6 可靠性测试 33
2.1.7 失效恢复测试 34
2.2 性能测试应用领域分析 35
2.2.1 能力验证 36
2.2.2 规划能力 36
2.2.3 性能调优 37
2.2.4 缺陷发现 40
2.2.5 性能基准比较 41
2.2.6 总结 42
2.3 本章小结 42
第3章 性能计数器及性能分析方法 44
3.1 操作系统计数器及分析 44
3.1.1 Windows操作系统的主要计数器 44
3.1.2 UNIX/Linux操作系统的主要计数器 48
3.1.3 内存分析方法 50
3.1.4 处理器分析方法 52
3.1.5 磁盘I/O分析方法 52
3.1.6 进程分析方法 53
3.1.7 网络分析方法 54
3.2 应用服务器计数器 55
3.2.1 IIS应用服务器计数器 55
3.2.2 J2EE应用服务器计数器 56
3.3 数据库服务器计数器 58
3.4 本章小结 59
第4章 性能测试工具原理 60
4.1 服务端性能测试工具架构 62
4.2 前端性能测试工具原理 65
4.3 选择服务端性能测试脚本使用的协议 66
4.4 性能测试工具的选择与评估 69
4.4.1 创建和购买的选择 69
4.4.2 测试工具的评估和选择过程 71
4.5 本章小结 75
第5章 性能测试的组织 76
5.1 性能测试团队的人员构成 76
5.2 性能测试过程模型(PTGM) 78
5.2.1 测试前期准备阶段 79
5.2.2 测试工具引入阶段 81
5.2.3 测试计划阶段 82
5.2.4 测试设计与开发阶段 85
5.2.5 测试执行与管理 89
5.2.6 测试分析 91
5.3 敏捷性能测试模型(APTM) 92
5.3.1 APTM的检查表 93
5.3.2 APTM中的活动 94
5.3.3 环境与工具 96
5.4 本章小结 99
第6章 Web前端性能 100
6.1 前端性能示例 101
6.2 HTTP概要 104
6.2.1 HTTP协议结构 105
6.2.2 典型的HTTP请求与响应分析 106
6.2.3 与前端性能相关的头信息 108
6.3 浏览器打开URL的方式 113
6.3.1 连接到URL所在服务器 113
6.3.2 获取页面对应的HTML文档 113
6.3.3 解析文档并获取所需要的资源 114
6.3.4 页面上的JS文件与CSS文件 114
6.3.5 onload事件 117
6.4 提高前端性能的方法 117
6.4.1 减少网络时间 118
6.4.2 减少发送的请求数量 119
6.4.3 提高浏览器下载的并发度 120
6.4.4 让页面尽早开始显示 121
6.4.5 其他 122
6.5 单机前端性能工具 122
6.5.1 Firebug工具 122
6.5.2 HttpWatch工具 125
6.5.3 Chrome自带的开发工具 127
6.5.4 Page Speed工具 128
6.5.5 DynaTrace AJAX Edition工具 129
6.5.6 单机前端性能测试工具小结 131
6.6 监控用户体验到的前端性能 131
6.6.1 在页面上增加计时点 132
6.6.2 使用JavaScript库简化计时点工作 134
6.6.3 将计时信息发送给服务器 138
6.7 本章小结 142
第二部分 实践篇 144
第7章 案例1 某制造型企业信息化项目的性能测试 144
7.1 项目背景 144
7.2 项目特点 144
7.3 性能测试过程 145
7.3.1 测试前期准备 145
7.3.2 测试工具引入 146
7.3.3 测试计划 146
7.3.4 测试设计与开发 148
7.3.5 测试执行与管理 154
7.3.6 测试分析 156
7.4 案例小结 161
第8章 案例2 某省电信公司业务系统的性能测试 162
8.1 项目背景 162
8.2 项目特点 162
8.3 性能测试过程 164
8.3.1 测试前期准备 164
8.3.2 测试工具引入 165
8.3.3 测试计划 167
8.3.4 测试设计与开发 174
8.3.5 测试执行与管理 183
8.3.6 测试分析 184
8.4 案例小结 192
第9章 案例3 某通信企业Web业务系统的性能测试 193
9.1 项目背景 193
9.2 项目特点 193
9.3 性能测试过程 194
9.3.1 测试前期准备 194
9.3.2 测试工具引入 195
9.3.3 测试计划 195
9.3.4 测试设计与开发 199
9.3.5 测试执行与管理 217
9.3.6 测试分析 222
9.4 案例小结 231
第10章 案例4 某集成商的性能选型测试 233
10.1 项目背景 233
10.2 项目特点 233
10.3 性能测试过程 234
10.3.1 测试前期准备 234
10.3.2 测试工具引入 235
10.3.3 测试计划 235
10.3.4 测试设计与开发 237
10.3.5 测试执行与管理 239
10.3.6 测试分析 241
10.4 案例小结 247
第三部分 工具篇 250
第11章 LoadRunner快速入门手册 250
11.1 LoadRunner的性能测试流程 250
11.2 LoadRunner脚本开发 252
11.2.1 基本录制 252
11.2.2 修正测试脚本 256
11.2.3 Run-Time Setting 260
11.2.4 单机运行测试脚本 263
11.3 Tools(工具)菜单 264
11.4 LoadRunner场景设置 265
11.4.1 Manual Scenario 266
11.4.2 Manual Scenario with PercentageMode 271
11.4.3 Goal-Oriented Scenario 271
11.4.4 启用IP Spoofer(IP欺骗) 273
11.5 LoadRunner场景监视设置 274
11.5.1 Windows Resources 275
11.5.2 IIS服务器 276
11.5.3 UNIX/Linux Resources 276
11.5.4 WebLogic Server 277
11.5.5 Apache Server 277
11.5.6 数据库服务器 279
11.6 LoadRunner的Analysis应用 279
11.6.1 基本操作 280
11.6.2 图表的归并(Merge)操作 284
11.6.3 图表的自动关联(Auto Correlate)操作 287
11.6.4 性能测试结果比较 288
第12章 LoadRunner高级使用技巧 289
12.1 参数化技巧 289
12.1.1 LoadRunner的参数化操作 291
12.1.2 不同类型的参数 293
12.2 关联技巧 297
12.2.1 LoadRunner中的主要关联函数 299
12.2.2 LoadRunner的自动关联操作 300
12.2.3 LoadRunner的手工关联操作 302
12.3 调试技巧 303
12.3.1 断点 303
12.3.2 单步跟踪 304
12.3.3 Log输出 305
12.3.4 使用对话框输出 306
12.3.5 以TreeView模式查看返回数据 307
12.4 其他技巧 308
12.4.1 设置域登录的用户名和口令 308
12.4.2 检查返回数据的正确性 309
12.4.3 调用外部函数 310
第13章 JMeter应用手册 313
13.1 JMeter入门 313
13.1.1 JMeter基础概念 314
13.1.2 建立第一个简单的JMeter Test Plan 316
13.2 用JMeter测试一个进销存应用 332
13.2.1 被测应用介绍 332
13.2.2 录制测试计划 334
13.2.3 调试Test Plan 338
13.2.4 关联Test Plan中的Sampler 343
13.2.5 参数化Test Plan 349
13.2.6 HTTP属性管理器 358
13.2.7 为Test Plan增加逻辑控制 363
13.2.8 使用Timer让Test Plan更准确地模拟用户行为 371
13.3 扩展JMeter 371
13.3.1 使用BeanShell类组件 372
13.3.2 基于Java Request Sampler定制Sampler的行为 375
13.4 JMeter的分布式测试功能 378
附录A 部分有价值的脚本和数据处理技巧 380
A.1 在UNIX平台上写日志的Perl脚本 380
A.2 在UNIX平台上记录单个进程内存使用的Perl脚本 392
A.3 用于模拟发送数据的Socket进程(Perl适用于UNIX和Windows平台) 399
A.3.1 用于实现Socket监听和发送的主代码 399
A.3.2 用于发送数据的代码 401
A.4 用Excel处理规则的记录数据 402
附录B 性能测试过程中使用的模板 406
B.1 性能测试团队成员职责技能描述表 406
B.2 性能测试工具需求规划表 407
B.3 性能测试环境调查表 407
B.4 典型业务列表 408
B.5 业务用例描述 408
B.6 场景列表 409
B.7 测试计划 410
B.8 测试环境检查表(CheckList) 410
B.9 测试执行记录日志 411
B.10 性能测试分析报告 411
参考文献 413