产品特色
编辑推荐
√凝聚了近百个项目的性能测试经验,详细阐述了大型项目的性能测试规划与实施方案。
√提出了“全面性能测试方案”,致力解决软件的亚健康状况。
√测试领域专家作品,十年经典崭新回归。
√免费赠送两门LoadRunner学习视频课程,共计14学时。
内容简介
《大型IT系统性能测试入门经典》是一本来自性能测试实战领域的专家作品,主要用来指导性能测试人员规划、设计、实施性能测试。《大型IT系统性能测试入门经典》中深入探讨了性能测试的基础理论与实施方法,并针对大型IT系统的性能测试提出了“全面性能测试方案”,为性能测试规划与设计提供了全新的思路和方法。《大型IT系统性能测试入门经典》通过真实的项目案例讲解性能测试基础理论的应用方法,向读者展示了如何在项目中管理与实施性能测试,并深入探讨了如何根据测试结果来分析与定位系统性能瓶颈。
《大型IT系统性能测试入门经典》主要针对初中级性能测试人员,其他IT人员也可以借助本书来规划、设计、实施性能测试。《大型IT系统性能测试入门经典》还可以作为高校学生学习性能测试的教材。
作者简介
陈绍英,15年以上IT系统开发与测试经验。现就职于中国民生银行信息科技部测试管理中心。本人拥有银行、互联网、电子政务等领域IT系统的测试管理与实施经验,目前主要专注银行系统的性能测试与自动化测试。现负责所在银行IT系统的性能测试管理、智能一体化测试平台DT的设计、开发与推广等工作,曾经带领团队完成了民生银行新一代系统中100多个系统的性能测试组织管理与实施工作。
本人在软件测试理论与实践方面进行了非常深入的研究和探索,目前已出版原创图书作品三部:《Web性能测试实战》(2006年,国内一本性能测试理论方面的作品)、《LoadRunner性能测试实战》(2007年,国内一本讲解LoadRunner的作品)、《LoadRunner虚拟用户开发指南》(2009年)三部;翻译作品一部:《软件测试与持续质量改进》第二、三版(2008年、2011年);在《金融科技治理与研究》、《程序员》等杂志上发表过《银行IT系统功能&性能一体化测试理论及应用》、《性能测试》、《治疗软件亚健康》、《性能测试兵法》、《架构设计阶段的性能测试》、《中小型IT企业产品测试案例解析》等多篇文章。
本人在性能测试方面的研究,丰富了国内IT领域性能测试相关的理论体系,从理论与实践推动了性能测试在国内的发展。已经出版的图书、视频等作品,把一批人带入了性能测试领域,并指导了很多项目经理、测试工程师非常系统地的规划、设计、实施性能测试工作。《Web性能测试实战》一书中提出的“全面性能测试模型”,成为很多测试团队组织与开展性能测试工作的指导原则。
周志龙,现就职于中国民生银行信息科技部测试管理中心。拥有近10年IT系统开发与测试经验。在银行、电信、互联网等领域IT系统有着丰富的性能测试项目经验和测试管理经验,擅长性能测试分析及调优。曾参与编写《性能测试进阶指南》一书,承担过中国移动、中国电信、中国网通、中国建设银行、中国民生银行等相关系统的性能测试实施项目。目前主要专注银行系统的性能测试与自动化测试。
金成姬,北京大学光华管理学院在读MBA。10年以上IT行业从业经验,擅长测试团队管理,拥有丰富的软件测试管理与实施经验。曾参与编写《Web性能测试实战》《LoadRunner性能测试实战》《LoadRunner虚拟用户开发指南》等作品。
精彩书评
虽然国内软件测试方面的图书不少,但深入研究大型IT 系统性能测试理论的并不多,尤其是探索银行、电信等领域大型IT 系统测试的作品则更少。本书的作者们拥有银行、电信、互联网、电子政务等多个行业的测试经验,尤其在中国民生银行新一代核心系统的建设期间参与了近百个项目的性能测试,积累了大量的经验。书中详细描述了从银行、电信等大型项目实战中总结出的性能测试规划与实施方案,为各位IT 同仁在实际项目中管理和实施性能测试提供了有效的指导。
——牛新庄
中国民生银行信息科技部总经理
十年砥砺,十年坚守,始信文章品愈高;
关注性能,关注健康,绍继前贤逞英豪。
祝愿绍英的书,能够帮助到更多的读者,进而让IT 人都能够节省宝贵的时间,永葆健康。
——盖国强
云和恩墨创始人,Oracle ACE 总监
陈绍英是国内是测试领域的专家之一,从事测试工作近20 年,具有大量的测试经验和心得,对测试工作也在不断创新,提出了一些新的测试方法论,并付诸实践,开发出相应的测试工具。与绍英结识多年,为人沉稳,低调务实,注重工作方法的创新、落地,是不可多得的技术人才。
——董国兴
国内知名UNIX 系统、数据库专家
东兴证券 总监
性能问题困扰着很多企业的软件产品,用软件亚健康来形容软件性能问题非常形象,本书的 “全面性能测试方案”为解决性能问题提供了一剂良药。本书理论与实战高度结合,无论对新人还是从业多年的技术人员都是一本不可多得的好书。
——章屹
阿里巴巴B2B高级测试专家
认识绍英多年,他的作品文如其人,踏实,睿智。他在性能测试领域深耕多年,书中汇集了理论、实践、思考和创新,要了解和做性能测试,看这本书是一个很好的选择。
——蔡为东
测试专家,《赢在测试》系列、《行之有效:IT技术团队管理之道》等书籍的作者
这是一本理论与实践高度相结合的作品,作者以其多年实战经验,为性能测试工程师们提供了一部全面系统的学习教材。
作为多年从事金融IT技术测试的管理人员,读后受益颇多。
——王耀
包商银行技术测试高级主管
目录
兵 法 篇
第1 章 系统性能测试基础.2
1.1 性能测试简介3
1.2 性能测试种类6
1.3 性能测试误区8
1.4 性能调整基础 11
1.5 小结13
第2 章 全面性能测试方案.15
2.1 全面性能测试方案简介16
2.2 性能测试策略制订原则19
2.3 测试场景设计通用模型23
2.3.1 预期性能指标测试 23
2.3.2 用户并发性能测试 24
2.3.3 疲劳强度与大数据量测试 32
2.3.4 网络性能测试 34
2.3.5 服务器性能测试 35
2.4 五一测试场景设计模型 37
2.4.1 独立场景设计 38
2.4.2 混合场景设计 39
2.4.3 峰值场景设计 40
2.4.4 容量场景设计 42
2.4.5 疲劳场景设计 43
2.4.6 批处理场景 44
2.5 全面性能测试方案应用 45
2.6 小结46
战 术 篇
第3 章 性能测试管理与实施 50
3.1 性能测试管理概述51
3.1.1 性能测试实施流程 51
3.1.2 性能测试管理障碍 53
3.2 性能测试规划与设计54
3.2.1 性能测试需求分析 55
3.2.2 性能测试整体规划 60
3.2.3 性能测试计划制订 65
3.2.4 性能测试场景设计 69
3.3 性能测试实施和控制 77
3.3.1 测试实施主要阶段 77
3.3.2 测试实施主要过程 80
3.3.3 测试实施变更控制 85
3.4 测试分析与经验总结 89
3.4.1 性能测试规划总结 90
3.4.2 测试场景设计总结 91
3.4.3 测试工具与技术总结 92
3.4.4 瓶颈分析方法总结 92
3.5 小结 93
技 术 篇
第4 章 性能测试结果分析 96
4.1 如何分析性能测试结果 97
4.1.1 性能分析入门知识 98
4.1.2 Analysis 使用基础 100
4.1.3 视频网站分析案例 108
4.2 如何从分析图中发现问题 121
4.2.1 虚拟用户图 121
4.2.2 用户事务图 125
4.2.3 Web 资源图.134
4.2.4 网页元素细分.140
4.3 本章小结153
第5 章 系统性能调优技术.155
5.1 概述155
5.2 VisualVM 性能分析156
5.2.1 VisualVM 简介.156
5.2.2 VisualVM 安装.156
5.2.3 VisualVM 监控.161
5.2.4 线程及堆内存Dump 169
5.3 Nmon 性能分析.172
5.3.1 Nmon 简介172
5.3.2 Nmon 安装172
5.3.3 Nmon 监控173
5.3.4 CPU 利用率分析174
5.3.5 内存利用率分析.175
5.3.6 磁盘IO 分析.176
5.3.7 网络流量分析.177
5.4 小结178
第6 章 JMeter 性能测试技术179
6.1 JMeter 介绍179
6.2 搭建JMeter 测试环境.180
6.2.1 JMeter 安装配置.180
6.2.2 ANT 安装配置182
6.2.3 JMeter 关键配置.183
6.2.4 分布式运行配置.184
6.2.5 监控JMeter 运行状态185
6.3 开发JMeter 测试脚本.186
6.3.1 实现AbstractJavaSamplerClient 接口186
6.3.2 导入JMeter 平台189
6.4 使用JMeter 进行性能测试.189
6.4.1 测试计划设计.189
6.4.2 UI 模式执行测试196
6.4.3 命令行模式执行测试.198
6.4.4 ANT 模式批量执行测试200
6.4.5 测试结果分析.207
6.5 小结208
案 例 篇
第7 章 架构设计阶段性能测试.212
7.1 项目背景212
7.2 性能测试策略/目标/范围/环境.213
7.3 性能测试分析与设计214
7.4 性能测试实施216
7.5 测试结果分析220
7.6 案例点评224
第8 章 电子政务系统测试案例.226
8.1 背景与测试策略226
8.2 性能测试场景设计227
8.3 性能测试实施230
8.4 测试结果分析232
8.5 案例点评233
第9 章 信用卡申请审批系统测试.235
9.1 项目背景介绍235
9.2 性能测试策略236
9.3 测试需求分析与规划236
9.4 性能测试计划及评审238
9.4.1 测试计划.239
9.4.2 测试计划评审结果.244
9.5 性能测试场景245
9.6 性能测试实施252
9.6.1 测试程序开发.252
9.6.2 性能测试实施记录.254
9.6.3 性能测试场景的调整.255
9.7 性能测试结果分析258
9.7.1 开发阶段的性能分析.259
9.7.2 用户现场测试的性能分析.261
9.7.3 综合分析结果以及调整建议.270
9.8 案例点评271
9.9 小结274
附录A 性能测试计划模板.276
附录B 性能测试场景模板.286
附录C 性能测试报告模板.293
前言/序言
从前我们很少看到“软件亚健康”或“亚健康软件”这样的概念,之所以提出这个概念,是因为现在亚健康不但威胁着IT 人的生活质量,也威胁很多应用系统的性能。
伴随着IT 行业的高速发展,软件开发方法也越来越先进,实现的功能也越来越强大,应用软件几乎涉及了国计民生的各个领域。而与之相反的是,这些应用系统的整体性能却越来越低,尤其是一些涉及多用户并发的大型应用系统。因此,近几年软件性能测试工作显得越来越重要,各种性能测试工具也应需而生。“软件亚健康”和“亚健康软件”概念就是在这种背景下提出的。
“软件亚健康”绝非危言耸听。作者曾亲身经历了多个由于性能不合格而终止上线的项目,其中一个项目曾是某国外公司为国内某大型银行开发的一套“银行信用卡申请审批系统”,此系统历经用户三次测试,每次均以数据库服务器崩溃而告终,最后银行只好忍痛让此公司出局。
本书以大型IT 系统作为背景来研究性能测试的规划与设计、管理与实施方法,探讨如何通过规范的性能测试来解决IT 系统的亚健康问题。
下面先从“亚健康软件”开始本书的讨论。
亚健康IT 人与亚健康软件
亚健康IT 人定义:记得2005 年8 月的某一天,作者和几位测试同行一起爬了次香山,结果第二天几个人累得几乎下不了床,一个星期之后,才觉得走路时的腿是自己的。无疑我们这几个人的身体都已进入“亚健康”状态。当时躺在床上忽然想到亚健康IT 人就是“爬了一次香山需要休息一个星期才能恢复正常的从事IT 行业的人”。
类似也可以做如下的定义:
超级健康IT 人——爬了一次香山之后没有什么感觉的IT 人,这类人应该属于具有运动员素质的IT 人。
健康IT 人——爬了一次香山之后休息一两天就恢复正常的IT 人。
不健康IT 人——爬了一次香山之后需要休息一个月甚至更长时间的人。
在软件领域中,判定软件性能高低的依据是其满足用户性能需求的程度以及是否存在一定的扩展空间,所以评价软件性能不要脱离具体用户背景,用户的性能需求与软件是否健康有着很大的关系,这一点与人的健康分类是有很大的区别的。例如对于电子政务系统,可以认为速度达到“自行车的性能”就是健康的,而银行或者电信的应用系统,速度至少要达到“飞机的性能”才是健康的。
与四类IT 人的健康分类相对应,软件也可按其性能高低划分为四类。
超级健康软件——UNIX 是“超级健康软件”的典型,“体魄”像运动员一样,非常“抗折腾”。
健康软件——性能稳定,可以满足用户现在以及将来一定时期内的扩展需求。例如我们日常用到的数据库管理系统。
亚健康软件——软件性能很一般,就像亚健康IT 人正常上下班一样,能满足使用要求,但是扩展性、稳定性都很一般,只要环境发生变化,极有可能成为“不健康软件”。
不健康软件——性能很差,甚至存在严重性能问题的软件。
毫无疑问,开发人员应以做出超级健康或健康的软件为目标。但是现实恰恰相反,就像很多IT 人都处于亚健康状态一样,超级健康和健康软件的比例很低,多数软件都存在性能问题。
亚健康软件是大多数公司赶进度和压缩成本的产物,也是本书讨论的重点。亚健康软件的例子很多:下面是某电子政务系统进行并发测试时,5 个用户与50 个用户的一些事务对比测试结果。
这个电子政务系统是亚健康软件的典型。可以看出在50 个用户并发时,其响应时间是5 个用户并发时的几十倍,甚至上百倍。这套系统倒是与我们这些IT 人很类似,平时上班走路根本看不出什么,可是爬一爬山,是否健康就见分晓了。
本书首次针对性能测试提出了“全面性能测试方案”,和读者共同探讨如何更加有效地诊断与治疗应用系统性能低下的“亚健康”问题。
亚健康软件良药——全面性能测试方案
不言而喻,软件亚健康问题将会越来越突出,因此我们应该尽早寻找诊断和治疗这一问题的方法。为了达到上述目的,本书提出了“全面性能测试方案”,期望能够成为解决软件亚健康问题的一剂“良药”。
“全面性能测试方案”包含性能测试策略制定原则、测试场景设计通用模型、五一测试场景设计模型、全面性能测试方案使用方法四部分内容,基本覆盖了性能测试规划和设计的相关内容,为开展系统性能测试提供了一套完整可行的方案。“全面性能测试方案”主要特点如下。
来自实践领域,适用范围广: “全面性能测试方案”是综合了大量项目的性能测试经验而提出的性能测试模型,可以满足银行、电信、OA、互联网等诸多领域应用系统的性能测试需要。
测试工具无关性:目前性能测试工具的使用已经不再是难题,比较困难的是有了工具去测试什么场景、如何管理与实施性能测试以及如何分析测试结果。“全面性能测试方案”不是依赖于某一特定性能测试工具而提出的,而是一种通用的性能测试方法,它的目标是为使用性能测试工具的人员解决上面的难题。测试人员掌握“全面性能测试方案”后,设计和执行测试时可以选择JMeter、LoadRunner 等任何一种性能测试工具。
根据策略来裁剪测试内容:五一测试场景设计模型按照由浅入深的顺序设计,因此可以根据测试策略进行灵活的裁剪。可以裁剪的特点使模型更加灵活,测试设计人员可以根据实际情况选择对应的测试场景部分进行设计,简介节约了测试成本。
对于很多项目,性能测试是一项需要大量时间和成本投入的工作,因此有了“全面性能测试方案”,并不意味着可以杜绝亚健康软件的产生。但是建议有能力的公司,应该进行合理的投入开发出健康的软件,否则只能经常祈祷“不要发生性能问题”!如果一旦发生严重性能问题,将意味着更高的修复成本,防患于未然才是上策!
最后祝所有IT 人都摆脱亚健康状态,开发出超健康的软件!
配套视频
本书免费提供了作者录制的两门LoadRunner 学习视频课程:《LoadRunner 性能测试快速入门》、《LoadRunner Controller 使用基础》,共计14 学时。
关于本书
本书分为三部分,包括了性能测试设计理论、实施和分析方法、性能测试实施案例等内容。
第一部分:兵法篇,即第1、2 章。第1 章主要介绍性能测试基础理论,是做好性能测试工作的必备知识,主要内容有性能测试简介、性能测试种类、性能测试误区、系统调整等;第2 章介绍全面性能测试方案,是全书的核心部分,主要讲解性能测试策略制定、测试场景设计模型、测试方案使用方法等。
第二部分:战术篇,即第3、4 章。第3 章主要探讨如何在性能测试工作中设计与实施性能测试,包含了性能测试的启动、计划、实施、控制、收尾等内容;第4 章介绍性能测试分析的基础方法。
第三部分:技术篇,即第5、6 章。第5 章主要探讨性能测试基本的调优技术与方法;第6 章主要讲解性能测试工具JMeter 的用法。
第四部分:案例篇,即第7、8、9 章,详细讨论了一些涉及银行、电子政务等不同领域的性能测试案例,介绍了如何在实际中应用前面的理论。
致谢
感谢林锐博士,本书的前一版在林老师的大力推荐下得以顺利地出版;
感谢电子工业出版社的郭立、孙学瑛两位老师,她们对本书的出版提供了非常大的支持;
感谢本书合作者周志龙、金成姬、刘蕙兰、刘建华,本书的写作过程占用了大家大量的休息时间;
感谢电子工业出版社为本书辛勤付出的所有朋友们;
尤其要感谢夫人金成姬和宝贝女儿米菲,夫人通篇审校了本书并润色了那些难于理解的句子,还一起和米菲提供了大量本来可以陪她们的时间来让我写作。
《海量并发交易系统架构与调优实战》 内容简介 在数字时代浪潮下,各种互联网应用和服务层出不穷,用户数量呈指数级增长,对系统承载能力的要求也日益严苛。从社交媒体到电商平台,从在线游戏到金融支付,无一不在挑战着传统IT系统的极限。然而,很多时候,我们所面临的挑战并非仅仅是“快”或“慢”的概念,而是系统能否在海量并发请求的冲击下保持稳定、可靠、高效的运行。大量的项目和团队,在面对用户量的爆发式增长时,常常遭遇性能瓶颈,导致服务不可用、用户体验直线下降,甚至直接影响业务的生死存亡。 本书正是为应对这一严峻挑战而生。它不是一本空泛的理论书籍,而是聚焦于“海量并发交易系统”这一核心痛点,深入剖析其架构设计、核心技术和调优策略。书中从顶层设计到底层实现,由浅入深,层层递进,为读者构建一个完整的、可落地的解决方案。我们将跳出“黑盒测试”的思维模式,深入到系统内部,理解每一次请求的生命周期,挖掘每一次性能瓶颈的根源。 核心内容概览: 第一部分:海量并发系统的基石——架构设计 这一部分将带领读者构建高性能、高可用的系统架构。我们不会止步于常见的微服务拆分,而是深入探讨如何针对“海量并发交易”这一场景,进行更精细化的架构设计。 服务拆分与边界定义: 如何根据业务的特性和并发的特点,合理地划分服务边界,避免服务之间的强耦合,实现独立的伸缩和部署。我们将详细阐述CQRS(命令查询职责分离)模式在交易系统中的应用,以及事件驱动架构(EDA)如何提升系统的响应速度和解耦能力。 数据存储与访问策略: 面对海量交易数据,传统的单体数据库往往不堪重负。本书将深入研究分库分表、读写分离、数据分片等技术,并结合NoSQL数据库(如Redis、MongoDB)的优势,构建多层次、高性能的数据访问架构。特别会关注如何设计合理的分片键,以最大化查询效率并避免热点。 高可用与容错机制: 系统宕机意味着业务损失,尤其是在高并发交易场景下。我们将详细讲解负载均衡(LVS, Nginx, HAProxy)、服务注册与发现(ZooKeeper, etcd, Consul)、熔断、降级、限流等关键的高可用技术,以及如何构建多活、异地容灾方案,确保系统在极端情况下的可用性。 消息队列的深度应用: 消息队列是处理高并发流量的利器。本书将不止于介绍Kafka、RabbitMQ等流行技术,更会深入分析其在削峰填谷、异步处理、解耦业务、保障最终一致性等方面的精妙设计,以及如何根据业务场景选择最合适的队列类型和配置。 缓存策略与应用: 缓存是提升系统响应速度的灵魂。我们将从应用层、数据库层、API网关层等多个维度,详细探讨缓存的穿透、击穿、雪崩等问题,以及如何设计有效的缓存更新策略,实现近乎实时的读写分离。 第二部分:性能优化的核心——技术深度解析 在坚实的架构基础上,我们需要深入到各个技术环节,挖掘性能优化的潜能。 JVM性能调优: Java是许多高并发系统的首选语言。本书将系统性地讲解JVM内存模型、垃圾回收算法(G1, ZGC等)、线程模型,以及如何通过参数调优、代码优化、内存诊断工具(Arthas, JProfiler)来显著提升JVM的运行效率。 网络通信优化: 高并发系统的性能瓶颈常常隐藏在网络传输中。我们将深入分析TCP/IP协议栈,讲解NIO、Netty等高性能网络框架,以及如何优化HTTP/2、gRPC等协议,减少网络延迟,提高吞吐量。 数据库深度优化: 数据库是性能优化的重灾区。本书将从SQL优化、索引设计、表结构设计、事务隔离级别选择、慢查询分析等方面,提供一套行之有效的数据库调优体系。特别会关注分布式事务的解决方案及其性能影响。 操作系统层面优化: 操作系统是运行所有服务的底层。我们将讲解Linux内核参数的调优,如文件句柄限制、网络缓冲区大小、CPU调度策略等,这些看似微小的调整,在高并发场景下可能带来质的飞跃。 并发编程与线程池管理: 合理的并发编程和线程池管理是释放CPU资源的关键。我们将深入讲解Java并发包(java.util.concurrent)的各种工具,如Semaphore, CountDownLatch,以及如何精细化地配置和管理线程池(ThreadPoolExecutor),避免线程泄漏和资源浪费。 第三部分:问题诊断与解决——实战案例与思维 理论结合实践,是本书的另一个核心特色。我们将通过真实的案例,引导读者掌握发现、分析和解决性能问题的能力。 性能瓶颈的定位与度量: 如何使用Profiling工具、APM(Application Performance Management)系统、日志分析工具(ELK Stack)等,准确地定位系统的性能瓶颈,是解决问题的第一步。我们将详细介绍各种工具的使用方法和分析思路。 常见性能问题剖析: 针对内存泄漏、CPU飙升、I/O阻塞、锁竞争、死锁等常见性能问题,我们将通过案例分析,深入剖析其产生的原因,并提供有效的解决策略。 性能测试与容量规划: 性能测试并非简单地压一压。本书将讲解压力测试、负载测试、稳定性测试等不同类型的测试方法,以及如何设计科学的测试用例,明确测试目标,并基于测试结果进行容量规划,为系统的平稳上线和持续迭代保驾护航。 故障演练与应急响应: 在构建了强大的系统后,我们也需要演练其在极端情况下的表现。我们将讲解如何进行混沌工程(Chaos Engineering),主动制造故障,并构建完善的应急响应机制,确保在真实故障发生时能够迅速有效地处理。 持续性能优化与监控: 性能优化并非一蹴而就,而是一个持续的过程。本书将强调建立完善的性能监控体系,并将其融入到日常的开发和运维流程中,实现性能问题的早发现、早解决。 本书的目标读者: 资深开发工程师: 希望提升系统设计能力,能够独立负责和优化高性能、高并发系统的架构师和技术负责人。 性能测试工程师: 希望从“黑盒”测试深入到“白盒”分析,能够更深入地理解系统,定位和解决性能问题。 运维工程师: 希望深入理解业务系统,能够从技术层面优化系统性能,提升系统的稳定性和可靠性。 技术经理与产品经理: 希望了解高性能系统的建设原理和挑战,能够更好地与技术团队协作,推动产品的成功。 “海量并发交易系统架构与调优实战”不仅仅是一本技术书籍,更是一套解决实际问题的思维方式和方法论。通过阅读本书,您将能够构建出更加强大、稳定、高效的系统,应对海量用户带来的挑战,在激烈的市场竞争中脱颖而出。让我们一起踏上这场激动人心的性能优化之旅!