热门关键字:  听力密码  听力密码  新概念美语  单词密码  巧用听写练听力

深入性能测试——LoadRunner性能测试、流程、监控、调优全程实战

中国水利水电出版社
    【作 者】黄文高 编著 【I S B N 】978-7-5226-0969-0 【责任编辑】王开云 【适用读者群】科技 【出版时间】2022-10-26 【开 本】16开 【装帧信息】平装(光膜) 【版 次】第2版第1次印刷 【页 数】512 【千字数】751 【印 张】32 【定 价】118 【丛 书】暂无分类 【备注信息】
图书详情

    本书主要深入系统地讲解性能测试及性能调优相关技术。全书紧紧围绕企业现阶段性能测试的核心内容进行编排,囊括了性能测试的三大核心内容,即性能测试过程、脚本开发、服务器监控与调优。其中,性能测试过程的内容主要包括性能测试流程、性能工作负载建模和生产环境下的性能测试;脚本开发的内容包括特殊协议的脚本开发、接口性能的脚本开发以及全链路性能测试的脚本开发;服务器监控与调优的内容主要包括操作系统资源的监控与调优、Apache服务器监控与调优、Tomcat服务器监控与调优、Nginx服务器监控与调优、MS SQL服务器监控与调优、MySQL服务器监控与调优、Redis服务器监控与调优和前端性能优化的23大规则。

    本书适用于测试工程师或已经在做性能测试的朋友,为了让一些想进入性能测试领域工作但缺少性能测试相关基础知识的朋友也能使用本书,作者免费提供了《性能测试基础—LoadRunner完全讲义》电子书,可通过扫描本书前言后面的二维码获取,通过二维码还可获取本书所有的相关代码等学习资源。希望本书能带领大家畅游性能测试的精彩世界。

    饱含作者超10年的软件测试及授课经验

    理论与实操并重,知识点与案例无缝衔接

    详细讲解性能测试全流程技术

    主流操作系统、Web应用、数据库、存储等服务器以及前端的性能监控、调优一站掌握

    作者赠送LoadRunner电子书、相关课程视频

    本书是《深入性能测试—LoadRunner性能测试、流程、监控、调优全程实战剖析》的升级版,笔者用了整整两年的时间完成了本书的创作,相比本书第一版,现在的内容可以说已经是脱胎换骨。新增了很多当前企业开发中流行的、急需的性能测试及调优的技术内容,当前,这些相关内容系统性学习资料极少。

    笔者从事软件测试16年,从事性能测试13年,见证了国内软件测试从起步到成熟的整个过程。10年前国内很多公司没有软件测试团队,而今天一般的研发公司都有成型的软件测试团队。从10年前的手工测试,到今天不断完成接口测试、自动化测试、性能测试。

    性能测试在近10年时间取得了长足的发展,特别是在移动互联不断发展的情况下,站点访问的用户越来越多,对系统的性能要求越来越高。10年前性能测试的招聘岗位很少,那时候对性能测试的要求很低,只要掌握性能测试工具的使用即可找到一份不错的工作。后来,企业要求性能测试工程师能够监控服务器的一些指标,不包括对全栈指标进行监控,但现在性能测试的高度和要求已经大幅度提高,从简单的脚本开发到全链脚本开发,从简单的场景监控到混合场景百分比模型监控,从单点服务器监控到全链路场景,从只要监控数据到分析和调优等。

    这也是笔者为何对此书的升级付出大量精力的原因,花了整整两年时间升级这本书,就是希望能够将性能测试过程中需要监控和分析的所有对象都覆盖到,这样可以更好地帮助读者解决性能测试过程中遇到的问题,也可以更好地帮助读者完善性能测试技术体系。

    本次升级主要是更新性能调优部分的内容,这些升级的内容可以覆盖企业性能测试常见的测试要求,包括:

    (1)脚本开发。本书在脚本开发部分做了重点升级,主要是升级了接口性能测试脚本开发和全链路脚本开发,以前企业要求的性能测试只需要会简单的脚本开发,但现在性能测试为了更好地模拟业务场景,都要求开发全链路脚本,将每个场景做成一个全链路,这样就可以更完美地模拟真实的业务场景。

    (2)全链路中每个节点的监控。本书在调优方面主要升级的内容包括前端优化,随着前端界面的元素越来越复杂,前端优化在性能测试过程中越来越重要。数据库方面性能优化的升级主要包括关系型数据库MySQL的监控与优化、非关系型数据库Redis的监控与优化、Nginx的性能监控与优化,完善了JVM的监控与优化。

    (3)性能测试流程。深入剖析了性能测试的整个过程,详细介绍性能测试每个节点的工作内容、性能测试过程中的工作负载建模(建模是性能设计中最重要的环境,保证性能测试模拟的真实性),详细介绍生产环境下如何进行性能测试。

    本书完全可以脱离性能测试工具来介绍性能测试,因为现在性能测试的核心是性能优化,性能测试工具只是模拟产生压力的一种方式,并不能提供更全面的监控信息,现在需要监控全链路过程中的每个服务器节点,只有这样才能更好地帮助读者解决性能问题,这也是本书最大的特点。

    由于本次升级的内容比较多,书稿创作完成后达900多页,其中既包含了性能测试基础知识,又深入系统地讲解了性能测试与调优的内容。但显然,如果把这些内容放在一起,对于有一定测试基础的读者来讲会产生不必要的成本支出。因此,本书把性能测试的基础知识部分,即最新版的《性能测试基础—LoadRunner完全讲义》,制作成了电子版的形式,免费向零基础读者提供。有需要的读者可扫描下面的二维码获取相关电子书的内容,以及本书中的源码等学习资源。

    在本书完成之际,感谢那些曾经帮助、支持和鼓励过我的朋友。

    由于编者水平有限,很多内容是自己的经验总结,谬误之处在所难免,欢迎广大读者批评指正。读者在阅读本书过程中如有任何不清楚的问题和批评、建议,可以发邮件到arivnhuang@163.com或直接加编者微信13590101972,编者将尽力给您答疑解惑。

    最后,感谢您购买此书,希望您在书中可以找到那些正在困扰着您的问题的答案。

    编 者

    2022年5月

    前言
    第一版前言

    第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





最新评论共有 1 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册