《应用程序性能测试的艺术(第2版)》—第2章 2.1节性能测试工具架构

第2章 选择合适的性能测试工具
应用程序性能测试的艺术(第2版)
生活中,人们只需要两种工具:让设备运转起来的WD-40(一种润滑剂)和使其停滞的冷缠胶。

——G. Weilacher
用于性能测试的自动化工具在过去20年的大部分时间里都以某种形式存在。在这期间,应用技术发生了巨大的改变,从胖客户端到Web架构,到如今越来越多的应用以无线的方式来提供服务。相应的,自动化工具所需提供的功能也越来越面向Web和无线开发,而不再是支持传统的二层应用架构中常用的技术。应用技术的集中化对于性能测试人员来说是一件好事,因为市场上有很多自动化工具供应商都能很好地支持Web和无线技术,测试人员可以根据需要选择物美价廉的工具。同时,开源社区中也不乏一些优秀的性能测试工具。

听起来不错,但用户还是得当心:如果你的一些性能测试涉及非Web场景,那么可选的工具会迅速变少。尽管经过这么多年,自动化工具的技术魔咒依然存在。通常开源工具对于非Web场景的性能测试支持都比较弱,这就意味着性能测试的工具开销不可避免。对于非Web场景,性能测试的执行和分析并没有多大不同,关键的难点在于应用操作的录制,以及针对录制脚本的后期编辑。有些技术比如“加密”、“压缩”会给性能测试工具带来更大的麻烦,甚至我们有可能根本无法录制,只能通过手工编码或者针对性地开发一些测试组件才能满足性能测试的需要。Web应用的性能测试有时候也会遇到挑战,比如流媒体的压测、使用了客户端证书的安全机制等,针对这些场景,不是所有的性能测试工具都能满足你的需求。在最终决定使用哪个工具之前,你应该充分考虑工具的实际能力和你的压测需求,我强烈建议在购买工具之前先做一个概念验证(Proof of Concept,POC)。尽管有着诸多挑战,但是压测工具还是我们的必需选择——如果不使用工具,我们无法开展有效的性能测试。在第1章我也提到了这个观点,它也是为什么许多应用在上线之前没有进行有效性能测试的原因之一。如果要开展可靠的、可重复的性能测试,我们必须使用自动化技术。

自动化的性能测试工具可以帮助我们简化测试流程。工具通常允许用户对终端用户的操作进行录制,进而产生对应的脚本。这些脚本会被用来创建性能测试会话或者场景,这些会话/场景模拟了一批典型用户的操作行为。这才是真正意义上的性能测试,它们可以非常方便地反复执行,这是人工测试所不具备的一个重要优势。同时,性能测试自动化工具会自动存储测试结果,并且可以方便地对多次测试结果进行比较,因此可以显著提升性能结果分析过程的效率。

2.1 性能测试工具架构
性能测试自动化工具通常由以下模块组成。

脚本模块
支持对终端用户操作行为的录制,有些工具会支持多种中间件协议的录制。允许用户对录制下来的脚本进行编辑,关联脚本内部和外部的数据,对响应时间度量的粒度进行控制。“中间件”在这里是指应用用于客户端和服务端通信的主要协议(对于Web应用来说,主要是指HTTP或者HTTPS)。

测试管理模块
支持性能测试会话或者场景的创建和执行,使用会话和场景来模拟不同用户的操作行为。这些会话/场景使用指定的性能测试脚本和一个或者多个施压引擎(取决于需要多大的负载)来产生期望的负载。

施压引擎
产生负载——通常使用多台工作站或者服务器,需要使用多少台取决于期望达到的负载。通过部署在相对少量的物理机或者虚拟机上的施压引擎来产生大量虚拟用户(Virtual User,VU)来模拟大量的终端用户操作行为。用户客户端本身对于内存和CPU资源的消耗很大程度上决定了一个施压引擎能够产生多少虚拟用户,进而决定我们需要部署多少施压引擎。

分析模块
提供对每次测试执行所产生的数据进行分析的能力。数据通常包括各种自动产生的报表、可配置的图表和数据表格。有些分析模块还提供专家功能,帮助用户对结果进行深度分析,提炼重要关注点。

可选模块
通常作为上述模块的补充用来对测试环境中的服务器和网络进行性能监控,或者用来集成其他类型工具帮助分析。图2-1展示了一个典型的性能测试工具部署结构。应用的终端用户被一批工作站或者服务器取代,这些机器通过创建虚拟用户来给目标应用施加负载/压力。

时间: 2024-09-18 06:56:10

《应用程序性能测试的艺术(第2版)》—第2章 2.1节性能测试工具架构的相关文章

《全栈性能测试修炼宝典 JMeter实战》—第2章 2.1节性能测试初体验

第2章 性能测试初体验 全栈性能测试修炼宝典 JMeter实战 从本章你可以学到: 性能测试的价值 性能测试流程 性能测试成功与失败要素 不同角色看性能 性能测试工具选择 性能测试相关术语 性能测试通过标准 性能测试趋势 性能测试是一项综合性的工作,致力于暴露性能问题,评估系统性能趋势.性能测试工作实质上是利用工具去模拟大量用户操作来验证系统能够承受的负载情况,找出潜在的性能问题,分析并解决:找出系统性能变化趋势,为后续的扩展提供参考.测试显然不是录制脚本那么简单的事情(而且现在很多系统还无法录

《精通软件性能测试与LoadRunner最佳实战》—第2章2.2节性能测试需求分析

2.2 性能测试需求分析精通软件性能测试与LoadRunner最佳实战性能测试的目的就是把客户的真正需求搞清楚,这是性能测试最关键的过程.有很多客户对性能测试是不了解的,可能您会因为对客户提出的"我们需要贵单位对所有的功能都进行性能测试"."系统用户登录响应时间小于3秒"."系统支持10万用户并发访问"等要求所困扰.不知道您是不是看出了上面几个要求存在的问题, 下面让我们逐一来分析一下这几句话. 1."我们需要贵单位对所有的功能都进行性

《全栈性能测试修炼宝典 JMeter实战》—第1章 1.6节性能测试技能树

1.6 性能测试技能树 下面细化一下性能测试所要掌握的知识,如图1-1所示. 1.6.1 测试工具 通过测试工具能提高测试软件开发速度,腾出时间专注于问题分析.主流工具有LoadRunner与JMeter,当然了,工具也不能解决所有问题,有时候还是需要自己编写程序来实现测试脚本.很多初学者认为这2个工具只能用来做性能测试,其实能做性能测试的工具也可以做功能自动化回归.API和UI测试等都可以实现.不是非得Selinum.WebDriver等才能做自动化测试. 常见难点 (1)用户和业务模型分析搭

《全栈性能测试修炼宝典 JMeter实战》—第2章 2.3节性能测试成功与失败要素

2.3 性能测试成功与失败要素 性能测试上手难度比较高,是一门融合测试.开发.运维.需求调研.架构.协调管理等综合技能的学科,掌握一门性能测试工具对于性能测试来说只是万里长征的第一步,没有一定的需求.开发和运维专业能力,往往会吃一些苦头. 性能测试有几大难点: (1)需求分析: (2)场景设计: (3)性能诊断调优. (4)环境搭建和模拟 往往很多性能测试从业者在需求分析方面没有做到位,不能准确地预估用户行为:在场景上不能复现用户操作,无法把需求体现在脚本和场景设计上,无法模拟真实的系统负载:这

《全栈性能测试修炼宝典 JMeter实战》—第2章 2.2节性能测试流程

2.2 性能测试流程 做事情我们讲究方法,注重效益,例如生产企业会有流水线.做性能测试也一样,我们也有规范的流程,完全符合项目管理流程,图2-3所示是性能测试常规流程. (1)业务学习:通过查看文档,手工操作系统来了解系统功能. (2)需求分析:分析系统非功能需求,圈定性能测试的范围,了解系统性能指标. (3)工作评估:工作量分解,评估工作量,计划资源投入(即需要多少人力,多少工作日来完成性能测试工作). (4)设计模型:圈定性能测试范围后,把业务模型映射成测试模型. 什么是测试模型呢?比如一个

《全栈性能测试修炼宝典 JMeter实战》—第2章 2.6节性能测试相关术语

2.6 性能测试相关术语 (1)负载:模拟业务操作对服务器造成压力的过程,比如模拟100个用户进行发帖. (2)性能测试(Performance Testing):模拟用户负载来测试系统在负载情况下,系统的响应时间.吞吐量等指标是否满足性能要求. (3)负载测试(Load Testing):在一定软硬件环境下,通过不断加大负载(不同虚拟用户数)来确定在满足性能指标情况下能够承受的最大用户数.简单说,可以帮我们对系统进行定容定量,找出系统性能的拐点,给予生产环境规划建议.这里的性能指标包括TPS(

《全栈性能测试修炼宝典 JMeter实战》—第2章 2.5节性能测试工具选择

2.5 性能测试工具选择 工欲善其事必先利其器,性能测试时模拟大量负载需要工具帮忙,市面上可供使用的负载工具繁多,如何选择呢? 首先我们要明白负载工具是帮助我们来模拟负载的,对于性能测试来说,工具并不是核心,分析.评估.找出性能问题才是核心,这些是主观因素:工具是客户因素,自然要降低其对结果的影响,所以工具选择时我们有几个方面要考虑. (1)专业.稳定.高效,比如Loadrunner,工业级性能负载工具. (2)简单易上手,在测试脚本上不用花太多时间. (3)有技术支持,文档完善,不用在疑难问题

《全栈性能测试修炼宝典 JMeter实战》—第2章 2.8节性能测试趋势

2.8 性能测试趋势 "云"计算已经来到我们身边,测试也已经向云计算在发展,性能测试也将深度"云"计算化. 提高工作效率是人类一直的追求,性能测试将会在自动化的道路上越走越快,持续集成也将更好的集成性能测试部分.已经有公司在用docker来做持续集成. 另外,最近几年开始流行devops(当然devops也会基于云计算),开发与运维,开发与测试的边界越来起窄,很多运维及测试的事情都在开发的考虑范围内,自动化测试工作,性能测试工作都会有一部分并入devops中,测试的

《全栈性能测试修炼宝典 JMeter实战》—第2章 2.7节性能测试通过标准

2.7 性能测试通过标准 性能测试从需求.设计.准备.执行到分析,最后需要判断性能测试是否通过,性能测试工程师最终需要考虑很多因素,判断的标准相应也会有多个维度. 性能测试通过标准包括服务端性能.前端性能和用户体验性能,常规通过标准如表2-2所示.

《精通软件性能测试与LoadRunner最佳实战》—第2章2.1节性能测试的基本过程

第2章 性能测试过程概述 2.1 性能测试的基本过程精通软件性能测试与LoadRunner最佳实战笔者所在公司招聘性能测试人员时,经常会问一个问题"您能否简单地介绍一下性能测试的过程?"多数应聘者的回答差强人意,原因是很多人不是十分清楚以至于回答问题的思路混乱.其实,大家在应聘性能测试职位时,必须要清楚这个职位是具体做哪些工作的,并且按照工作的流程把每一个环节都表述清楚.下面笔者将结合自己多年的工作经验向读者介绍一下,性能测试的过程到底是如何进行的. 为了方便大家了解性能测试的过程,笔