LoadRunner 测试工具 – 组件 & Archi质地

什么是负载运行器?

加载程序 是一个性能测试工具,由 Mercury 于 1999 年。LoadRunner 后来于 2006 年被 HPE 收购。2016 年,LoadRunner 被 MicroFocus 收购。

LoadRunner 支持各种开发工具、技术和通信协议。事实上,这是市场上唯一一款支持如此多协议的工具,可以进行 性能测试. LoadRunner 软件产生的性能测试结果可作为与其他工具的对比基准

LoadRunner 视频

为什么使用 LoadRunner?

加载程序 不仅是性能测试领域的先驱工具,而且它仍然是性能测试范式的市场领导者。在最近的评估中,LoadRunner 在性能测试行业占有约 85% 的市场份额。

加载程序

广义上讲,LoadRunner 工具支持 RIA(富互联网应用程序)、Web 2.0(HTTP/HTML、Ajax、Flex 和 Silverlight 等)、移动、 SAP, Oracle,MS SQL 服务器、Citrix、RTE、 Mail 最重要的是, Windows 套接字。市场上没有任何竞争工具能够在单一工具中提供如此多种多样的协议。

加载程序

在软件测试中选择 LoadRunner 更有说服力的是该工具的可信度。LoadRunner 工具早已建立了声誉,您经常会发现 客户端使用 LoadRunner 交叉验证您的性能基准。 如果您已经使用 LoadRunner 来满足您的性能测试需求,那么您就会感到轻松不少。

LoadRunner 软件与其他 HP 工具(如统一功能测试 (QTP) 和 ALM(应用程序生命周期管理))紧密集成,使您能够执行端到端测试流程。

LoadRunner 的工作原理是在主题应用程序上模拟虚拟用户。这些虚拟用户也称为 VUser,它们复制客户端的请求并期望通过事务获得相应的响应。

为什么需要性能测试?

据估计, 收入损失4.4亿 由于网络性能不佳,每年都会记录一次。

在当今的 Web 2.0 时代,如果网站在 8 秒内没有响应,用户就会点击离开。想象一下,当您在 Google 上搜索或在 Facebook 上发出好友请求时等待 5 秒钟。性能停机的后果通常比想象的更具破坏性。我们有一些例子,例如最近影响美国银行网上银行的事件, Amazon Web 服务、Intuit 或 Blackberry。

根据 Dunn & Bradstreet 的数据,59% 的财富 500 强公司每周的停机时间约为 1.6 小时。考虑到拥有至少 500 名员工的财富 10,000 强公司平均每小时支付 56 美元,此类组织停机成本的人工部分每周将达到 896,000 美元,相当于每年超过 46 万美元。

据估计,Google.com(5 年 19 月 13 日)仅 545,000 分钟的宕机就给这家搜索巨头带来了高达 XNUMX 美元的损失。

据估计,由于最近的 Amazon Web 服务中断。

当组织部署软件系统时,可能会遇到许多可能导致性能延迟的情况。许多因素会导致性能下降,以下是一些示例:

  • 数据库中记录数量增加
  • 系统同时发出的请求数量增加
  • 与过去相比,同时访问系统的用户数量更多

什么是LoadRunner Archi结构?

从广义上讲,HP LoadRunner 的架构很复杂,但很容易理解。

加载程序 Archi质地
加载程序 Archi结构图

假设你被指派检查 Amazon.com 可供 5000 名用户使用

在现实情况下,这 5000 名用户不会出现在主页上,而是出现在网站的不同部分。我们如何进行不同的模拟。

虚拟用户接口

VUGen 或虚拟用户 Generator 是一个 IDE(集成开发环境)或富编码编辑器。VUGen 用于复制系统负载 (SUL) 行为。VUGen 提供“记录”功能,以编码脚本(也称为 VUser 脚本)的形式记录客户端和服务器之间的通信。

因此,考虑上述示例,VUGen 可以记录以模拟以下业务流程:

  1. 浏览 Amazon.com
  2. 结账
  3. 支付处理
  4. 检查我的帐户页面

控制器

一旦 VUser 脚本完成,Controller 就是主要的 LoadRunner 组件之一,它通过管理来控制负载模拟,例如:

  • 每个业务流程或 VUser 组模拟多少个 VUser
  • VUsers 的行为(上升、下降、同时或并发性质等)
  • 负载场景的性质,例如真实生活或目标导向或验证 SLA
  • 使用哪些注入器,每个注入器有多少个 VUser
  • 定期整理结果
  • IP欺骗
  • 错误报告
  • 交易报告等

从我们的示例控制器中进行类比,将向 VUGen 脚本添加以下参数

1) 3500 名用户 浏览 Amazon.com

2) 750 位用户正在 结账

3) 500 名用户 执行付款处理

4) 250 名用户 仅在 500 名用户完成付款处理后才检查我的帐户页面

甚至可能出现更复杂的情况

  1. 每 5 秒启动 2 个 VUser,直到负载达到 3500 个 VUser(冲浪 Amazon 实现“产品页面”功能。
  2. 迭代 30 分钟
  3. 暂停 25 个 VUser 的迭代
  4. 重新启动 20 个 VUSer
  5. 每秒启动 2 个用户(在结帐、付款处理、我的帐户页面)。
  6. 机器 A 上将生成 2500 个 VUser
  7. 机器 B 上将生成 2500 个 VUser

代理机器/负载 Generator喷油器

HP LoadRunner Controller 负责模拟数千个 VUser,这些 VUser 消耗硬件资源,例如处理器和内存,因此对模拟它们的机器设置了限制。此外,Controller 从同一台机器(Controller 所在的机器)模拟这些 VUser,因此结果可能不准确。为了解决这个问题,所有 VUser 都分布在不同的机器上,称为 载荷 Generators 或负载喷射器。

作为一般做法,控制器驻留在不同的机器上,并从其他机器模拟负载。根据 VUser 脚本的协议和机器规格,可能需要多个负载注入器才能进行完整模拟。例如,HTTP 脚本的 VUser 需要每个 VUser 2-4MB 进行模拟,因此需要 4 台每台具有 4 GB RAM 的机器来模拟 10,000 个 VUser 的负载。

以我们的 Amazon 例如,该组件的输出将是

信号分析

一旦执行了负载方案,“信号分析”LoadRunner 的组件介绍。

在执行期间,Controller 以原始形式创建结果转储,并包含诸如哪个版本的 LoadRunner 创建了此结果转储以及配置是什么等信息。

所有错误和异常都记录在 Microsoft access 数据库,名为 output.mdb。“Analysis”组件读取此数据库文件以执行各种类型的分析并生成图表。

这些图表显示了各种趋势,以了解负载下错误和故障背后的原因;从而有助于判断 SUL、服务器(例如 JBoss、 Oracle)或基础设施。

下面是带宽可能造成瓶颈的示例。假设 Web 服务器的容量为 1GBps,而数据流量超出此容量,导致后续用户受到影响。为了确定系统是否满足此类需求,性能工程师需要分析负载异常的应用程序行为。下面是 LoadRunner 生成的图表,用于获取带宽。

信号分析

如何进行性能测试

性能测试路线图大致可以分为5个步骤:

  • 负载测试规划
  • 创建 VUGen 脚本
  • 场景创建
  • 场景执行
  • 结果分析(随后进行系统调整)

现在您已经安装了 LoadRunner,让我们逐一了解该过程中涉及的步骤。

性能测试

性能测试流程涉及的步骤

步骤1)规划负载测试

性能测试规划不同于 SIT(系统集成测试) or UAT(用户验收测试)规划可进一步划分为如下所述的小阶段:

组建你的团队

组建你的团队

开始使用 LoadRunner 测试时,最好记录下参与此过程的每个团队的人员。

项目经理:

提名负责此项活动并作为升级联络人的项目经理。

职能专家/业务分析师:

提供 SUL 的使用情况分析,并提供有关网站/SUL 业务功能的专业知识

性能测试专家:

创建自动化性能测试并执行负载场景

系统 Archi术语:

提供 SUL 蓝图

Web 开发人员和 SME:

  • 维护网站并提供监控方面
  • 开发网站并修复错误

系统管理员:

  • 在整个测试项目中维护所涉及的服务器

概述所涉及的应用程序和业务流程:

成功 负载测试 要求您计划执行某些业务流程。业务流程由符合所需业务交易的明确定义的步骤组成,以便实现您的负载测试目标。

可以准备一个需求指标来获取系统上的用户负载。以下是一家公司的考勤系统的示例:

概述所涉及的应用程序和业务流程

在上面的例子中,数字表示在给定时间内连接到应用程序的用户数 (SUL)。我们可以提取一天中任何时间连接到业务流程的最大用户数,该数在最右边的列中计算得出。

类似地,我们可以得出一天中任何时间连接到应用程序的用户总数(SUL)。这是在最后一行计算的。

以上两个事实结合起来,我们就可以计算出需要测试系统性能的用户总数。

定义测试数据管理程序

如前所述,性能测试得出的统计数据和观察结果受到众多因素的极大影响。为性能测试准备测试数据至关重要。有时,特定的业务流程会使用一个数据集并生成不同的数据集。请看以下示例:

  • 用户“A”创建了一份金融合同并提交审核。
  • 另一个用户“B”每天批准用户“A”创建的 200 份合同
  • 另一个用户“C”每天支付约 150 份由用户“B”批准的合同

在这种情况下,用户 B 需要在系统中“创建” 200 份合同。此外,用户 C 需要 150 份“已批准”合同,以模拟 150 名用户的负载。

这隐含地意味着您必须创建至少 200+150= 350 份合同。

之后,批准 150 份合约作为用户 C 的测试数据,剩下的 200 份合约将作为用户 B 的测试数据。

大纲监视器

推测可能影响系统性能的每一个因素。例如,减少硬件可能会对 SUL(系统负载)性能产生潜在影响。

列出所有因素并设置监视器,以便您可以衡量它们。以下是几个示例:

  • 处理器(用于 Web 服务器、应用服务器、数据库服务器和注入器)
  • RAM(用于 Web 服务器、应用程序服务器、数据库服务器和注入器)
  • Web/应用服务器(例如 IIS、JBoss、Jaguar Server、Tomcat 等)
  • DB 服务器(如果 Oracle 以及MSSQL Server、SP等)
  • 网络带宽利用率
  • 集群情况下的内部和外部 NIC
  • 负载均衡器(它在集群的所有节点上均匀分配负载)
  • 数据流量(计算在客户端和服务器之间传输的数据量 - 然后计算 NIC 的容量是否足以模拟 X 个用户)

步骤2)创建VUGen脚本

规划后的下一步是创建 VUser 脚本。

步骤3)场景创建

下一步是创建负载场景

步骤4)场景执行

场景执行是通过指示多个 VUser 同时执行任务来模拟服务器上的用户负载。

您可以通过增加或减少同时执行任务的 VUser 数量来设置负载级别。

此执行可能会导致服务器承受压力并出现异常。这正是性能测试的目的。得出的结果随后将用于详细分析和根本原因识别。

步骤5)结果分析(随后进行系统调整)

在场景执行期间,LoadRunner 会记录应用程序在不同负载下的性能。保存测试执行得出的统计数据并执行详细分析。“HP 分析”工具会生成各种图表,帮助识别系统性能滞后以及系统故障的根本原因。

获得的一些图表包括:

  • 第一个缓冲区的时间
  • 交易响应时间
  • 平均交易响应时间
  • 每秒点击次数
  • Windows 更多
  • 错误统计
  • 交易摘要

常见问题

性能测试始终只针对基于客户端-服务器的系统进行。这意味着,任何不是基于客户端-服务器架构的应用程序都不需要性能测试。

例如, Microsoft 计算器既不是基于客户端-服务器的,也不运行多个用户;因此,它不适合进行性能测试。

性能测试

了解性能测试和性能工程之间的区别是很重要的。下面分享一种理解:

性能测试 是一门与 测试和报告 软件应用程序在各种参数下的当前性能。

绩效工程 是测试和调整软件以实现所需性能的过程。此过程旨在优化最重要的应用程序性能特征,即用户体验。

从历史上看,测试和调优是截然不同且经常相互竞争的领域。然而,在过去几年中,一些测试人员和开发人员独立合作成立了调优团队。由于这些团队取得了巨大的成功,将性能测试与性能调优结合起来的概念开始流行起来,现在我们称之为性能工程。