作者简介
应用程序性能测试的艺术(第2版)
Ian Molyneaux,EMEA地区的性能领域专家,是Intechnica公司总裁。Intechnica公司是一家总部位于英国曼切斯特的软件咨询公司。他精通企业级应用性能保证,在管理,流程和工具方面都颇有建树。
本书特色
本书作者具有15年的性能测试经验。
本书详尽阐述了不完善的性能测试策略会带来哪些问题。
本书也提供了一种健壮的,结构化的方法用以保证你的应用能够性能表现优异,特别是在需求增长的时候也能够做到可扩展。
图书评论
应用程序性能测试的艺术(第2版)
时至今日,应用程序的性能变得至关重要。这本最新的应用程序性能测试指南,将会指导你针对关键应用程序开展性能测试,从而保证应用程序的性能和可扩展性。通过本书,你将学习完整的性能测试流程、每个测试步骤的细节,以及进行性能测试计划、协调和执行的最佳实践。
本书包括以下内容:
设定合理的性能测试目标
实施有效的性能测试策略
解读性能测试结果
应对不同的应用技术和架构
理解终端用户监控(EUM)的重要性
使用自动化性能测试工具
测试传统的本地应用、Web应用和Web服务
识别并解决性能测试中经常被忽视的问题
本书作者具有多年的性能测试经验。本书详尽阐述了不完善的性能测试策略会带来哪些问题,还提供了一种健壮的、结构化的方法,以保证应用程序在需求增长的情况下也能够性能表现优异且具备可扩展性。
版权声明
应用程序性能测试的艺术(第2版)
Copyright © 2015 by O’Reilly Media, Inc.
Simplified Chinese Edition, jointly published by O’Reilly Media, Inc. and Posts & Telecom Press, 2016. Authorized translation of the English edition, 2015 O’Reilly Media, Inc., the owner of all rights to publish and sell the same.
All rights reserved including the rights of reproduction in whole or in part in any form.
本书中文简体版由O’Reilly Media, Inc.授权人民邮电出版社出版。未经出版者书面许可,对本书的任何部分不得以任何方式复制或抄袭。
版权所有,侵权必究。
内容提要
应用程序性能测试的艺术(第2版)
性能测试通过自动化的测试工具模拟多种条件来对系统的各项性能指标进行测试,在软件的质量保证中起着重要的作用。
本书基于作者十多年的项目经验编写而成,全书共10章,分别介绍了为什么要做性能测试、如何选择合适的性能测试工具、有效性能测试的基础、性能测试流程、性能测试结果解读、性能测试与无线客户端、终端用户体验监控与性能、在性能测试中集成外部监控、应用技术及其对性能测试的影响以及作者对未来性能测试的思考。
作者结合丰富的实践经验,介绍了有关性能测试的相关知识,适合软件测试人员及想要学习性能测试的读者阅读参考。
序言
应用程序性能测试的艺术(第2版)
当我在2009年1月出版本书第1版的时候,我无论如何也没有想到它会在性能测试社区受到如此欢迎。我收到了来自世界各地的读者来信,感谢我写了这本书,对此我深感意外但同时也倍受鼓舞。这本书的主要目标读者是那些希望成为性能测试专家的技术人员。同时这本书也适合那些从事和性能测试相关工作的IT专业人员,他们可能是或大或小的互联网公司成员,如果他们对工作中的系统性能负有直接的责任,那么这本书对他们而言就再合适不过了。
我认为就算到现在,2009年出版的本书第1版中的大多数原理和概念依然有效。但同时IT行业从2009年以来也发生了很多变化,软件应用的部署模式和测试方法都随之发生变化。以云计算为例,2009年的时候,它还是一朵“浮云”,业界尚没有很成熟的云计算服务商。但是到了2014年,云似乎成了Web部署的标配模式。无论是开发环境、测试环境还是生产环境,云计算都能支持实时的启动和停止。在第2版中的各个章节我都根据需要加入了云计算相关的内容。
如今无线设备百花齐放,至2014年年底,无线设备带来的网络流量将会成为所有互联网流量中占比最大的一部分。我在本书第1版简单提到了无线,现在在第2版中我单独开辟了1章来介绍无线设备的性能测试。终端用户监控(End-User Monitoring,EUM)在过去的5年时间里也成熟起来。它和性能测试在某些方面有着交集,因此我在第2版中新添了两章来专门讨论终端用户监控。终端用户监控所提供的数据对于我们理解真实世界的软件应用性能非常重要。
在第2版中,我对几乎所有的原有章节和附录部分都做了修订和扩充。新加入了那些我认为会对性能测试人员有帮助的最新材料,不管你是测试新手还是领域专家都会有所帮助。现如今,业务的兴起还是消亡还是会受到关键软件/应用性能的影响。但还是有很多应用在发布之前没有经过足够的扩展性测试和性能测试,这真让人遗憾。需要再次强调,有效的性能测试能够帮助我们尽早地发现和定位性能瓶颈,从而可以快速解决这些瓶颈,只有这样我们才能放心地发布应用。本书第2版中使用了很多相关的参考资料来强调性能测试在市场中的持续需求。但是这依然不是一本能够教你如何对某某技术进行调优的著作。除非技术本身对于性能测试的方法有很大影响,我尽量避免了深入特定的技术细节。这本书的目的在于结合我15年多的性能测试项目管理经验,提供一份常识性的关于如何进行性能测试计划、执行和结果解读的指南。
同样,我也不会介绍业界一些特定的性能测试方法论(说实话我认为它并不存在)。应用性能测试有其独有的原则并且还没有形成一套自己的行业标准。我希望本书依然能够成为正规性能测试流程的标杆。
我个人的工作在2009年发生了变化,虽然我仍然在一家对应用性能有激情的公司工作,但是这本书依然是独立于工具和具体的工具供应商的。在本书中描述的流程和策略对于使用任何专业的性能解决方案都是适用的。
希望你会喜欢这本书。
——Ian Molyneaux,2014
前言
应用程序性能测试的艺术(第2版)
这本书是针对那些希望学习和拓展自己在应用性能测试方面知识的技术人员的基础读物,无论是软件测试人员还是完全的新人都可以阅读。
我认为性能测试和其他软件原则一样,更像一门艺术。在没有一致的性能测试方法和合适的自动化工具的情况下很难开展。一个人需要很多年的经验才能成为一位专业的性能测试工程师,但是有一些基本技能是可以通过恰当的教导和合适的指南在短时间内学会的。
这本书假设读者具备一些软件测试知识,但不一定要和性能测试相关。有效的性能测试需要的一个前提条件就是使用自动化技术。因此,为了能从本书中获取更多的有用信息,读者最好能够对一些自动化性能测试工具有所了解。
下面这些参考资料可以帮助你更好地学习。
Web Load Testing for Dummies, Scott Barber& Colin Mason (Wiley)
.NET Performance Testing and Optimization, Paul Glavich & Chris Farrell (RedGate Books)
Web Performance Turing, Patrick Killilea (O’Reilly)
Web Performance Warrior, Andy Still (O’Reilly)
本书内容结构
基于我工作中的一些笔记(始终没有成为完善的白皮书)和十多年的项目经验,本书强调了为何在发布应用之前的性能测试至关重要。本书将引导你学习有效性能测试策略的若干步骤。
下面是对本书各个章节和附录的一些简单介绍。
第1章:为什么要做性能测试,讨论了应用性能测试背后的逻辑并且从历史角度来探讨性能测试在IT领域的发展。
第2章:选择合适的性能测试工具,介绍了自动化的重要性和如何选择合适的性能测试工具。
第3章:有效性能测试的基础,介绍了有效性能测试的基础概念并且阐述了其重要性。
第4章:性能测试流程,推荐了一种最佳实践方法。流程是基于第3章的理论概念而来的,它将需求和应用性能测试的模型映射起来。这一章还使用了一些案例来更好地阐述最佳实践方法。
第5章:性能测试结果解读,介绍了有效的根源分析方法。这一章介绍了典型的性能测试产出以及如何解读性能测试结果。
第6章:性能测试与无线客户端,介绍了无线设备的性能知识以及无线客户端对性能测试造成的独特挑战。
第7章:终端用户体验监控与性能,介绍了终端用户体验监控和性能测试之间的互补关系。
第8章:在性能测试中集成外部监控,介绍了如何将终端用户体验监控和性能测试进行集成。
第9章:应用技术及其对性能测试的影响,介绍了特定的软件技术栈对于性能测试的影响。虽然本书中的测试方法是通用的,但一些特定的技术对于如何实际开展性能测试会有一定影响。
第10章:总结,这在本书第1版中是没有的。我认为用我对未来性能测试和终端用户体验监控发展趋势的思考,作为全书的结束是个不错的主意。
附录A,用例定义样例,展示了如何在性能测试中准备测试用例。
附录B,概念验证和性能测试快速指南,重复了本书中的性能测试实践方法。
附录C,性能测试工具供应商,列举了性能测试和性能分析中需要使用到的自动化技术供应商。虽然我在写书的时候列举了当时尽可能多的工具选择,但这个列表并不意味着我对某个工具有偏好或者推荐。
附录D,监控模板样例:硬件关键性能指标,提供了在进行性能测试的时候需要对服务器或者网络进行监控的时候可以使用的指标模板。
附录E,项目计划样例,提供了一份微软Project格式的典型性能测试计划。
术语表
本书中使用到了以下术语。
APM
应用性能管理(Application Performance Monitoring),提供深入应用层面的性能分析工具。
APMaaS
APM即服务(APM as a Service)(云计算)。
Application Landscape
部署软件应用所需要的服务器网络基础设施的一种通用描述方法。
AWS
亚马逊Web服务(Amazon Web Services)。
CDN
内容发布网络(Content Delivery Network),根据用户地理位置就近提供静态或者可缓存动态内容的远程内容缓存服务。
CI
持续集成(Continuous Integration),在软件工程领域,是指在同一天内将开发人员的代码进行合并的操作。这最初是在极限编程(Extreme Programming,XP)里提出的。主要的目的在于减少集成问题,在XP中也称为集成地狱(引自Wikipedia)。
DevOps
一种软件开发模式,强调软件开发人员和IT运维人员之间的沟通、协作和集成。DevOps是应对软件开发和IT运维直接的相互依赖而产生的,目的在于帮助企业迅速发布软件产品和服务。
EUM
终端用户监控(End-user Monitoring),是一种对终端用户响应时间和行为进行离散监控的通用说法。
IaaS
设施即服务,Infrastructure as a Service(云计算)。
ICA
独立计算架构(Independent Computing Architecture)是一种Citrix私有协议。
ITIL
IT基础架构库(Information Technology Infrastructure Library)。
ITPM
IT资产管理(Information Technology Portfolio Management)。
ITSM
IT服务管理(Information Technology Service Management)。
JMS
Java消息服务(Java Message Service),前身是Java Message Queue。
Load injector
自动化性能测试方案中用来模拟真实终端用户操作的PC或者服务器。
IBM/WebSphere MQ
IBM的面向消息的中间件。
Pacing
性能测试中用以控制脚本执行速度的延迟。
PaaS
平台即服务(Platform as a Service)(云计算)。
POC
概念验证(Proof of concept),产品售前周期中的一个验证性项目。它可以帮助客户将建议的软件方案和自身的应用条件进行对比,提供后续参考。通常也叫做Proof of value。
RUM
真实用户监控(Real-user monitoring)是一种被动模式的终端用户体验监控。
SaaS
软件即服务(Software as a Service)(云计算)。
SOA
面向服务架构(Service-oriented architecture)。
SUT
被测系统(System under test)。
Think time
思考时间,和Pacing类似,指的是在脚本中模拟真实用户和软件之间的交互延迟。更多地被用来提供更真实的请求排队模型而不是用来控制吞吐率。
Timing
计时单位,通常是交易流程中的一个组件,是用户关心的一个独立的用户操作,比如登录或者添加到购物车。
Transaction
事务,有着明确开始和结束的应用功能区块。比如,登录或者搜索。它经常和用例这个概念混用。
UEM
用户体验监控(User experience monitoring)是对终端用户体验监控的一个通用说法,经常是指在生产环境的监控。
Use case, user journey
用以表示典型应用操作的一组终端用户事务。典型的事务可能是登录、打开搜索对话框、输入查询条件、单击搜索按钮、退出。事务是自动化性能测试的基础元素。
WOSI
Windows操作系统实例(Windows Operating System Instance)是机器或者工作站上运行的Windows操作系统。
致谢
应用程序性能测试的艺术(第2版)
感谢O’Reilly公司的每一个人,没有你们的帮助我这样一个外行作者是不可能完成这本书的。感谢我的编辑,Andy Oram;助理编辑,Isabel Kunkle;编辑主任,Marlowe Shaeffer;还有帮助我制作图表和美工的Robert Romano;感谢Jacquelynn McIlvaine和Karen Tripp帮助我开创博客,并且提供了最初的编写材料;感谢Karen Tripp和Keith Fahlgren帮我建立DocBook库并且回答我的各种问题。
对于更新的第2版,我要感谢我的助理编辑Allyson MacDonald,以及开发编辑Brian Anderson,他们给了我很多无价的反馈和指导。
同时我也要感谢我的前任职公司以及现在的伙伴,Compuware公司,感谢他们允许我使用他们公司的一些性能方案的截图来更好地阐述本书中的观点。我也感谢下面这些专家,他们给了我很多建议和帮助:Peter Cole,前Greenhat公司的总裁和CTO,他帮我更好地理解和扩展了SOA的性能测试模型;Quotium公司的Adam Brown;Scott Barber,软件测试协会的创始人和主席;前SUN公司的David Collier-Brown;Matt St. Onge;Gerrad咨询公司的Paul Gerrard;前Compuware专家服务部门的Francois MacDonald;以及前Compuware法国公司、现在AppDynamics公司的Alexandre Mechain。
我还要特别感谢我最尊敬的同事Larry Haig,他对本书中关于终端用户监控的章节,以及对性能测试和终端用户监控的集成章节提供了无价的帮助和指引。
最后我还要感谢过去十几年中和我共事过的软件测试人员和顾问。因为你们的帮助和建议,才会有这本书的诞生!
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
目录
前言
第1章 为什么要做性能测试
1.1节从终端用户角度看性能
1.2节为什么性能问题如此常见
1.3节小结
第2章 选择合适的性能测试工具
2.1节性能测试工具架构
2.2节如何选择性能测试工具
2.3节性能测试工具集:概念验证
2.4节小结
第3章 有效性能测试的基础
第4章 性能测试流程
第5章 性能测试结果解读
第6章 性能测试与无线客户端
第7章 终端用户体验监控与性能
第8章 在性能测试中集成外部监控
第9章 应用技术及其对性能测试的影响
第10章 总结
附录A 用例定义样例
附录B 概念验证和性能测试快速指南
附录C 性能测试工具供应商
附录D 监控模板样例:硬件关键性能指标
附录E 项目计划样例