新書推薦:
《
新能源材料
》
售價:NT$
290.0
《
传统文化有意思:古代发明了不起
》
售價:NT$
199.0
《
亚述:世界历史上第一个帝国的兴衰
》
售價:NT$
490.0
《
人工智能与大数据:采煤机智能制造
》
售價:NT$
440.0
《
新民说·逝去的盛景:宋朝商业文明的兴盛与落幕(上下册)
》
售價:NT$
790.0
《
我从何来:自我的心理学探问
》
售價:NT$
545.0
《
失败:1891—1900 清王朝的变革、战争与排外
》
售價:NT$
390.0
《
万千心理·我的精神分析之道:复杂的俄狄浦斯及其他议题
》
售價:NT$
475.0
|
編輯推薦: |
资深一线测试专家、软件测试培训课程高级讲师、首批ISTQB资格认证获得者黄文高老师倾心编写饱含作者超10年的软件测试及授课经验理论与实操并重,知识点与案例无缝衔接详细讲解性能测试全流程技术主流操作系统/Web应用、数据库、存储等服务器/前端,性能监控、调优一站掌握作者赠送LoadRunner电子书、相关课程视频
|
內容簡介: |
本书主要深入系统地讲解性能测试及性能调优相关技术。全书紧紧围绕企业现阶段性能测试的核心内容进行编排,囊括了性能测试的三大核心内容,即性能测试过程、脚本开发、服务器监控与调优。其中,性能测试过程的内容主要包括性能测试流程、性能工作负载建模和生产环境下的性能测试;脚本开发的内容包括特殊协议的脚本开发、接口性能的脚本开发以及全链路性能测试的脚本开发;服务器监控与调优的内容主要包括操作系统资源的监控与调优、Apache服务器监控与调优、Tomcat服务器监控与调优、Nginx服务器监控与调优、MS SQL服务器监控与调优、MySQL服务器监控与调优、Redis服务器监控与调优和前端性能优化的23大规则。
本书适用于测试工程师或已经在做性能测试的朋友,为了让一些想进入性能测试领域工作但缺少性能测试相关基础知识的朋友也能使用本书,作者免费提供了《性能测试基础—LoadRunner完全讲义》电子书,可通过扫描本书前言后面的二维码获取,通过二维码还可获取本书所有的相关代码等学习资源。希望本书能带领大家畅游性能测试的精彩世界。
|
目錄:
|
目 录
前言
第一版前言
第1章 性能测试过程 1
1.1 性能测试过程概述 1
1.2 性能测试设计 2
1.2.1 需求调研 2
1.2.2 业务模型 3
1.2.3 场景模型 5
1.2.4 数据设计 6
1.2.5 环境设计 8
1.3 性能测试构建 9
1.3.1 用例设计 9
1.3.2 脚本开发 11
1.3.3 场景设计 12
1.3.4 搭建测试环境 13
1.3.5 准备数据 13
1.4 性能测试过程执行 13
1.5 性能测试分析、诊断、调节 13
1.6 小结 14
第2章 工作负载建模 15
2.1 什么是工作负载建模 15
2.2 工作负载建模主要活动 16
2.2.1 定义性能测试目标 16
2.2.2 理解应用程序 16
2.2.3 关键场景识别 17
2.2.4 确定关键场景使用路径 17
2.2.5 确定唯一测试参数 18
2.2.6 确定场景中的相对负载分布 19
2.2.7 确定目标负载水平 19
2.2.8 其他项设置 20
2.3 小结 20
第3章 生产系统性能测试 21
3.1 什么是生产环境 21
3.2 生产环境性能测试风险 22
3.3 为什么需要在生产环境下进行性能测试 23
3.4 生产环境性能测试误解 24
3.5 生产环境下性能测试最佳实践 25
3.6 小结 26
第4章 特殊协议 27
4.1 Windows Sockets(WinSock)协议 27
4.1.1 Windows Sockets录制选项设置 27
4.1.2 Windows Sockets录制 29
4.1.3 Windows Sockets数据操作 33
4.1.4 关于LRS函数 35
4.2 邮件服务协议 41
4.2.1 邮件服务协议简介 41
4.2.2 邮件服务协议录制 43
4.2.3 脚本分析 48
4.2.4 关于SMTP和POP3函数 50
4.3 小结 52
第5章 基于接口性能测试 53
5.1 WSDL协议简介 53
5.2 Web Service接口测试 56
5.2.1 选择Web Services协议 56
5.2.2 选择Manage Services管理待测试的
服务 57
5.2.3 Import Services导入服务 58
5.2.4 添加服务调用(Add Service Call) 60
5.2.5 调试脚本 63
5.2.6 增强脚本 64
5.3 web_service_call函数 65
5.4 Java环境 68
5.5 JavaVuser常用函数 69
5.6 JavaVuser脚本 70
5.6.1 手工插入Java的方法 71
5.6.2 增强Java脚本 72
5.6.3 Java脚本关联 72
5.6.4 Java脚本参数化 72
5.7 web_submit_data 73
5.8 web_custom_request 76
5.9 小结 80
第6章 全链路脚本开发 81
6.1 什么是全链路性能脚本 81
6.2 如何将脚本封装成.h头文件 83
6.3 业务场景对全链路脚本的影响 86
6.3.1 关键场景识别 87
6.3.2 确定主要场景导航路径 89
6.4 全链路脚本开发实例 89
6.5 小结 94
第7章 操作系统性能监控与调优 95
7.1 Windows操作系统监控 95
7.1.1 LoadRunner直接监控 95
7.1.2 Windows性能工具监控 96
7.1.3 Windows计数器 101
7.2 Linux/UNIX操作系统监控 107
7.2.1 程序执行模型 107
7.2.2 CPU监控 110
7.2.3 内存监控 115
7.2.4 磁盘监控 119
7.2.5 网络监控 124
7.3 nmon系统资源监控工具 128
7.3.1 nmon工作流程 128
7.3.2 nmon命令 129
7.3.3 结果分析 137
7.4 小结 138
第8章 Apache监控与调优 139
8.1 Apache目录结构 139
8.2 Apache配置文件 140
8.3 Apache监控 144
8.3.1 status模块监控 144
8.3.2 Apachetop监控 151
8.4 Apache调优 154
8.4.1 硬件与操作系统 154
8.4.2 运行时的配置 155
8.4.3 编译时的配置 159
8.5 MPM调优 161
8.5.1 选择MPM 161
8.5.2 MPM模块工作原理 162
8.5.3 MPM相关参数 165
8.6 日志文件分析 171
8.6.1 access_log日志文件 171
8.6.2 error_log日志文件 173
8.6.3 日志文件分析工具或指令 173
8.7 小结 175
第9章 Tomcat监控与调优 176
9.1 Tomcat结构体系 176
9.2 Tomcat监控 180
9.2.1 Status页监控 180
9.2.2 JConsole监控 182
9.2.3 Probe监控 192
9.3 Tomcat调优 197
9.3.1 Tomcat配置 198
9.3.2 连接器配置 202
9.3.3 APR配置 207
9.4 JVM调优 211
9.4.1 JVM内存模型 211
9.4.2 堆与栈 214
9.4.3 PermGen与Metaspace的区别 215
9.4.4 GC回收机制 218
9.4.5 垃圾收集算法 219
9.4.6 垃圾回收器 223
9.4.7 类加载过程 230
9.4.8 JVM参数设置 231
9.5 日志文件分析 236
9.5.1 日志文件类型 236
9.5.2 日志文件配置 236
9.6 小结 239
第10章 Nginx监控与调优 240
10.1 Nginx三大工作模块 241
10.1.1 Nginx启动、停止 241
10.1.2 Nginx工作原理 242
10.1.3 Nginx进程模型 243
10.1.4 Nginx Http请求过程 243
10.2 Nginx配置上下文 245
10.3 Nginx监控 245
10.3.1 status监控 246
10.3.2 Ngxtop监控 247
10.4 Nginx负载均衡 251
10.4.1 负载均衡概述 251
10.4.2 Nginx负载均衡工作原理 251
10.4.3 设置Http负载均衡 252
10.4.4 负载均衡算法 253
10.4.5 设置服务器权重 255
10.4.6 慢启动 257
10.4.7 限制连接数 257
10.4.8 开启会话持久性 257
10.5 健康检查 259
10.5.1 被动式健康检查 259
10.5.2 主动式健康检查 260
10.5.3 强制健康检查 262
10.6 Nginx压缩与解压 263
10.6.1 启用压缩 264
10.6.2 启用解缩 265
10.6.3 发送压缩文件 266
10.7 Nginx缓存 266
10.7.1 启用响应缓存 266
10.7.2 与进程相关的缓存 268
10.7.3 指定缓存的请求 268
10.7.4 限制或禁用响应缓存 269
10.7.5 清除缓存内容 269
10.7.6 字节范围缓存 271
10.7.7 组合缓存配置实例 272
10.8 小结 273
第11章 MS SQL数据库监控与调优 274
11.1 监控SQL Server资源 274
11.1.1 瓶颈类型 274
11.1.2 内存瓶颈 275
11.1.3 瓶颈类型 277
11.1.4 磁盘瓶颈 277
11.1.5 Wait Statistics监控 278
11.2 SQL Server等待类型 279
11.2.1 SQL等待类型 279
11.2.2 如何跟踪等待 289
11.2.3 阻塞与锁 291
11.3 SQL Profiler监控查询 296
11.3.1 SQL Trace相关术语 296
11.3.2 SQL Trace选项 299
11.3.3 捕获阻塞事件 303
11.3.4 捕获Showplan XML数据 305
11.3.5 捕获死锁图 308
11.3.6 SQL Profiler识别长时间查询 311
11.3.7 Profile Trace与System Monitor关联 315
11.4 索引调优 317
11.4.1 索引原理 317
11.4.2 填充因子 317
11.4.3 聚集索引 318
11.4.4 非聚集索引 321
11.4.5 堆表 323
11.4.6 用DTA调校索引 323
11.4.7 索引维护 329
11.5 T-SQL调优 333
11.5.1 NOT IN和NOT EXISTS 333
11.5.2 谓词的使用 334
11.5.3 为中间结果使用临时表 335
11.6 小结 336
第12章 MySQL性能监控与调优 337
12.1 使用LoadRunner直接压测MySQL 337
12.2 慢查询 339
12.2.1 查看慢查询相关设置 339
12.2.2 启动和设置慢查询 340
12.2.3 慢查询日志文件分析 340
12.2.4 慢查询日志分析工具
mysqldumpslow 341
12.3 EXPLAIN语句 343
12.3.1 EXPLAIN语法 343
12.3.2 EXPLAIN Output Columns输出列 344
12.3.3 EXPLAIN Join Types连接方式 347
12.3.4 EXPLAIN Extra Information额外信息 349
12.4 profile语句 352
12.4.1 开启profile 352
12.4.2 show profile 352
12.5 索引 357
12.5.1 索引结构 357
12.5.2 索引常用策略 361
12.5.3 索引优缺点 372
12.6 查询执行过程 372
12.7 SQL执行顺序 376
12.8 优化数据类型和优化访问数据 378
12.8.1 优化数据类型 378
12.8.2 常见数据类型 379
12.8.3 优化访问数据 383
12.9 状态监控 384
12.9.1 SHOW STATUS语句 384
12.9.2 SHOW STATUS变量 386
12.10 配置文件 389
12.10.1 使用选项文件 389
12.10.2 配置文件常见设置 390
12.11 小结 396
第13章 Redis性能监控与调优 397
13.1 使用LoadRunner调用Redis API进行压测 397
13.2 Redis Slowlog 401
13.2.1 什么是Slowlog 401
13.2.2 设置Slowlog 401
13.2.3 查看Slowlog 402
13.3 持久化 403
13.3.1 RDB持久化 404
13.3.2 AOF持久化 408
13.3.3 RDB和AOF的优缺点 411
13.3.4 备份策略RDB与AOF相互协同 411
13.4 主从复制 413
13.4.1 配置主从复制 413
13.4.2 断开复制 415
13.4.3 主从复制工作原理 416
13.4.4 心跳 421
13.4.5 master关闭持久化,保证复制的安全性 422
13.4.6 Redis复制如何处理过期的key 423
13.4.7 允许只写入N个附加的副本 423
13.4.8 只读性质的slave 424
13.4.9 重新启动和故障转移后的部分同步 424
13.5 哨兵 425
13.5.1 为什么需要Sentinel 425
13.5.2 部署Sentinel 425
13.5.3 主观下线和客观下线 427
13.5.4 故障转移 428
13.5.5 Sentinel配置项 429
13.6 内存优化 430
13.6.1 获取内存数据 430
13.6.2 内存消耗模型 432
13.6.3 内存上限设置 434
13.6.4 回收内存策略 434
13.7 性能测试 436
13.7.1 性能测试工具redis-benchmark 436
13.7.2 延迟监控与分析 439
13.7.3 big key 446
13.7.4 Hot key 448
13.7.5 缓存粒度 451
13.7.6 缓存穿透 452
13.7.7 缓存击穿 454
13.7.8 缓存雪崩 456
13.8 小结 457
第14章 前端性能监控与调优 458
14.1 前端监控工具YSlow 458
14.1.1 安装YSlow 458
14.1.2 使用YSlow 459
14.2 23大前端性能规则 462
14.2.1 最小化HTTP请求 462
14.2.2 使用内容发布网络 463
14.2.3 添加Expires头 463
14.2.4 Gzip组件 465
14.2.5 将样式表放在顶部 465
14.2.6 将脚本放在底部 466
14.2.7 避免使用CSS表达式 468
14.2.8 将JavaScript和CSS置于外部 469
14.2.9 减少DNS查找 471
14.2.10 精简JavaScript和CSS 472
14.2.11 避免重定向 474
14.2.12 删除重复脚本 478
14.2.13 配置ETags 478
14.2.14 使AJAX可缓存 480
14.2.15 AJAX使用Get请求 481
14.2.16 减少DOM数 483
14.2.17 避免空链接 485
14.2.18 避免404错误 486
14.2.19 减少Cookie的大小 488
14.2.20 使用一些空闲Cookie的域 492
14.2.21 避免过滤器 494
14.2.22 不要缩放图片 496
14.2.23 使用icon格式图片和使用缓存 496
14.3 小结 497
|
內容試閱:
|
本书是《深入性能测试—LoadRunner性能测试、流程、监控、调优全程实战剖析》的升级版,笔者用了整整两年的时间完成了本书的创作,相比本书第一版,现在的内容可以说已经是脱胎换骨。新增了很多当前企业开发中流行的、急需的性能测试及调优的技术内容,当前,这些相关内容系统性学习资料极少。
笔者从事软件测试16年,从事性能测试13年,见证了国内软件测试从起步到成熟的整个过程。10年前国内很多公司没有软件测试团队,而今天一般的研发公司都有成型的软件测试团队。从10年前的手工测试,到今天不断完成接口测试、自动化测试、性能测试。
性能测试在近10年时间取得了长足的发展,特别是在移动互联不断发展的情况下,站点访问的用户越来越多,对系统的性能要求越来越高。10年前性能测试的招聘岗位很少,那时候对性能测试的要求很低,只要掌握性能测试工具的使用即可找到一份不错的工作。后来,企业要求性能测试工程师能够监控服务器的一些指标,不包括对全栈指标进行监控,但现在性能测试的高度和要求已经大幅度提高,从简单的脚本开发到全链脚本开发,从简单的场景监控到混合场景百分比模型监控,从单点服务器监控到全链路场景,从只要监控数据到分析和调优等。
这也是笔者为何对此书的升级付出大量精力的原因,花了整整两年时间升级这本书,就是希望能够将性能测试过程中需要监控和分析的所有对象都覆盖到,这样可以更好地帮助读者解决性能测试过程中遇到的问题,也可以更好地帮助读者完善性能测试技术体系。
本次升级主要是更新性能调优部分的内容,这些升级的内容可以覆盖企业性能测试常见的测试要求,包括:
(1)脚本开发。本书在脚本开发部分做了重点升级,主要是升级了接口性能测试脚本开发和全链路脚本开发,以前企业要求的性能测试只需要会简单的脚本开发,但现在性能测试为了更好地模拟业务场景,都要求开发全链路脚本,将每个场景做成一个全链路,这样就可以更完美地模拟真实的业务场景。
(2)全链路中每个节点的监控。本书在调优方面主要升级的内容包括前端优化,随着前端界面的元素越来越复杂,前端优化在性能测试过程中越来越重要。数据库方面性能优化的升级主要包括关系型数据库MySQL的监控与优化、非关系型数据库Redis的监控与优化、Nginx的性能监控与优化,完善了JVM的监控与优化。
(3)性能测试流程。深入剖析了性能测试的整个过程,详细介绍性能测试每个节点的工作内容、性能测试过程中的工作负载建模(建模是性能设计中最重要的环境,保证性能测试模拟的真实性),详细介绍生产环境下如何进行性能测试。
本书完全可以脱离性能测试工具来介绍性能测试,因为现在性能测试的核心是性能优化,性能测试工具只是模拟产生压力的一种方式,并不能提供更全面的监控信息,现在需要监控全链路过程中的每个服务器节点,只有这样才能更好地帮助读者解决性能问题,这也是本书最大的特点。
由于本次升级的内容比较多,书稿创作完成后达900多页,其中既包含了性能测试基础知识,又深入系统地讲解了性能测试与调优的内容。但显然,如果把这些内容放在一起,对于有一定测试基础的读者来讲会产生不必要的成本支出。因此,本书把性能测试的基础知识部分,即最新版的《性能测试基础—LoadRunner完全讲义》,制作成了电子版的形式,免费向零基础读者提供。有需要的读者可扫描下面的二维码获取相关电子书的内容,以及本书中的源码等学习资源。
|
|