第1章 软件性能测试 1
1.1什么是软件的性能 1
1.1.1软件 1
1.1.2软件性能的产生 4
1.1.3功能与性能的关系 4
1.1.4用户眼里的软件性能 6
1.1.5软件人员眼里的软件性能 12
1.2软件性能测试 16
1.2.1性能测试在软件测试的周期位置 16
1.2.2性能测试策略揭秘 20
1.3如何做性能测试 23
1.3.1 Goal(定义目标) 26
1.3.2 Analysis(分析) 28
1.3.3 Metrics(度量) 29
1.3.4 Execution(执行) 30
1.3.5 Adjust(调整) 31
1.4性能测试工具的评估和选择 32
1.4.1测试预算VS工具价格 33
1.4.2协议、开发技术、平台、中间件VS工具的支持 33
1.4.3工具可使用的复杂程度VS项目计划的影响 34
第2章 第一次亲密接触LoadRunner 35
2.1从性能测试到LoadRunner的映射 35
2.2 LoadRunner工作原理 38
2.3安装LoadRunner 41
2.4揭开License的神秘面纱 42
第3章 走近LoadRunner 44
3.1 LoadRunner的运行原理 45
3.1.1 LoadRunner三大高手 45
3.1.2三大高手联手的一场性能测试盛大演出 48
3.2 LoadRunner的录制原理 50
3.2.1网络协议与LoadRunner的Vuser 50
3.2.2选择LoadRunner Protocol的两大定律 55
3.2.3 LoadRunner录制技术 56
第4章 LoadRunner脚本语言基础 62
4.1 C语言与LoadRunner脚本 66
4.1.1看不见的main 67
4.1.2全局变量与局部变量 71
4.1.3在LoadRunner脚本里灵活使用C语言 74
4.1.4高级——用户自定义函数 78
4.2通用VU函数 81
4.2.1事务和事务控制函数 82
4.2.2命令行分析函数 83
4.2.3系统信息函数 83
4.2.4字符串函数 83
4.2.5消息函数 84
4.2.6运行时(run-time)函数 84
4.3协议相关函数 85
4.3.1 HTTP协议原理 85
4.3.2 HTTP在LoadRunner的实现 86
第5章 VU——用户行为的模拟器 89
5.1图灵试验与LoadRunner VU模拟奥秘 90
5.1.1图灵试验场景 90
5.1.2 LoadRunner模拟揭秘 91
5.2录制脚本 94
5.2.1选择协议 94
5.2.2规划脚本结构 96
5.2.3 HTTP Vuser中的URL mode和HTML mode 96
5.2.4查看日志 99
5.3回放脚本 101
5.4关联 102
5.4.1录制前Correlation(关联) 103
5.4.2录制后关联 106
5.4.3手动关联 109
5.5脚本视图和树视图 113
5.5.1树视图(Tree View) 113
5.5.2脚本视图(Script View) 114
5.5.3理解Snapshot 115
5.6事务、同步点和思考时间 115
5.6.1 Transaction(事务) 115
5.6.2 Rendezvous Point(同步点) 118
5.6.3注释 119
5.6.4 Think Time(思考时间) 119
5.7数据驱动——参数化(Parameters) 121
5.7.1为什么需要参数化 121
5.7.2参数的创建 123
5.7.3定义参数的属性 130
5.7.4高级——从已存在的数据库中导入参数数据 136
5.8检查点(Check point) 142
5.8.1为什么需要检查点 142
5.8.2检查点实施之一:ContentCheck定义 144
5.8.3检查点实施之二:检查函数 144
5.8.4检查点设置技巧 147
5.9高级——多Action 147
5.10高级——脚本错误处理机制 150
5.11高级——脚本调试技巧 152
5.11.1动态运行(Animated run) 152
与非动态运行(Non-Animated run) 152
5.11.2日志设置 153
5.12高级——编写脚本的最佳实践 156
5.13 VU脚本运行成功后 157
第6章 Controller——性能测试的指挥中心 158
6.1得到细化后的性能需求 159
6.2设计性能测试场景 162
6.2.1创建手工场景 164
6.2.2百分比模式创建手工场景 173
6.2.3创建面向目标场景 174
6.2.4多IP的实现原理以及模拟 180
6.3运行场景 183
6.3.1场景控制 183
6.3.2执行期间查看场景 191
6.3.3监视场景 196
6.3.4高级——用户自定义数据采集点 201
6.3.5主要的计数器 203
6.3.6实例——分析实时监视图表 211
6.4场景运行后 213
6.5高级——如何合理规划性能测试拓扑 213
6.5.1选择最优的测试机配置 215
6.5.2客户端CPU瓶颈估算 216
6.5.3客户端网络瓶颈估算 217
6.5.4客户端内存瓶颈估算 219
6.5.5总评估 221
第7章 Analysis——寻找系统瓶颈的得力助手 222
7.1 Analysis报告概要(Summary) 223
7.1.1概要部分 223
7.1.2统计部分 224
7.1.3事务统计 225
7.1.4 HTTP响应统计 227
7.2 Analysis标准图 227
7.2.1 Vuser图 227
7.2.2事务图 228
7.2.3网页细分图 230
7.3交叉结果和合并图 233
7.3.1叠加 235
7.3.2平铺 236
7.3.3关联 236
7.4生成测试报告 237
7.4.1创建HTML格式报告 237
7.4.2创建Word格式报告 238
7.4.3高级——数据点报告 239
第8章 欲善其事先利其器——VU脚本开发实战 240
8.1邮件服务SMTP/IMAP协议介绍 241
8.1.1电子邮件的工作原理 241
8.1.2 SMTP协议介绍 241
8.1.3 POP3协议介绍 243
8.1.4 IMAP协议介绍 244
8.2 VU的SMTP Vuser对SMTP协议的封装及实现 244
8.2.1使用SMTP Vuser录制Outlook 2003发送邮件 247
8.2.2对SMTP Vuser录制生成的脚本进行分析 251
8.2.3回放SMTP Vuser脚本并分析网络日志 253
8.3 VU Java Vuser自开发SMTP程序 255
8.3.1 VU创建Java模板虚拟用户 255
8.3.2设置Java环境 257
8.3.3在Java Vuser中开发SMTP发送mail脚本 258
8.3.4参数化增强脚本 260
第9章 学以致用——一步一步做Web系统性能测试 264
9.1软件系统背景及架构设计介绍 264
9.2性能要求和性能指标分析(Goal阶段) 267
9.2.1性能指标 267
9.2.2业务模型分析和需求细化 268
9.3性能测试方案和用例设计(Analysis阶段) 268
9.4性能测试各种度量的建立(Metrics阶段) 273
9.4.1性能脚本的生成 273
9.4.2定义用户行为 274
9.4.3场景的设置与运行 274
9.4.4计数器的设置与性能数据收集 276
9.5运行场景,得到测试结果和相关数据(Execution阶段) 277
9.5.1脚本的开发 277
9.5.2数据的生成 278
9.5.3并发登录测试 279
9.5.4负载测试 279
9.6分析测试瓶颈(Adjust阶段) 280
9.6.1并发测试结果分析 280
9.6.2交易流程测试结果分析及性能评价 281
9.6.3查询流程测试结果分析 281
第10章 循序渐进——进阶LoadRunner高手 282
10.1性能测试用例的设计策略 282
10.1.1“普遍撒网,重点查看”的原则 282
10.1.2保证数据的有效性 284
10.2 LoadRunner高级功能的使用——Web Click Vuser 286
10.2.1 Web Click Vuser的产生背景 286
10.2.2 Web Click Vuser与传统Vuser的差别 286
10.2.3使用Web Click Vuser 286
第11章 定量分析及诊断——建立性能度量模型 291
11.1实现性能度量的准备工作 292
11.1.1性能度量 292
11.1.2度量方式 294
11.2案例实践——性能测试第一阶段Ajax页面基准性能分析 298
11.2.1页面基准分析目标 298
11.2.2分析所使用的工具 299
11.2.3术语揭示 299
11.2.4基准测试案例设计及运行 300
11.2.5结果分析 305
11.2.6优化建议 306
11.2.7预测 306
11.3案例实践:性能测试第二阶段Ajax系统负载测试 307
11.3.1本轮测试目的 307
11.3.2测试场景规划 307
11.3.3负载测试案例分析 309
11.3.4性能结果量化分析 312
11.4总结 315
第12章 测试也开发——自开发性能测试框架 316
12.1性能测试框架架构设计 317
12.1.1技术考虑的准备 317
12.1.2 Automation Center性能测试框架设计实例 319
12.1.3定义XML格式的性能测试任务文件 325
12.1.4 Automation Center性能测试调度运行 329
12.1.5性能测试报告诊断系统 330
12.2核心技术及具体实现方法 332
12.2.1性能测试数据源格式定义 332
12.2.2测试程序与性能测试框架的接口实现 336
12.2.3测试任务克隆技术 339
12.2.4多任务通信技术 340
12.2.5 Observer性能监控技术 341
12.2.6基于XSL技术的性能测试报告构建 344
12.3总结 346
附录A有关LoadRunner的常见问题解答 347