LoadRunner 测试工具: Archi结构图及组件

⚡ 智能摘要

LoadRunner 是一款企业级性能测试工具,目前由 [公司名称] 出售。 OpenText它模拟 VuGen、控制器、负载生成器和分析中的数千个虚拟用户,以便在真实流量发现瓶颈之前将其暴露出来。

  • 🔘 起源: 内置的 Mercury Interactive,先被惠普收购,然后是 Micro Focus,现在 OpenText.
  • ☑️ 覆盖范围: 最广泛的协议库之一,涵盖从 HTTP 和 Ajax 到 SAP, Oracle 以及 Citrix。
  • VuGen: 将客户端和服务器流量记录到 VUser 脚本中,该脚本会重放业务流程。
  • 🧪 控制器: 影响场景——虚拟用户数量、增长速度、注入器、IP欺骗和SLA检查。
  • 🛠️ 负载生成器: 将虚拟用户分散到多台机器上,这样控制器就不会扭曲测量结果。
  • 📊 分析: 将原始结果转储转换为图表,以定位系统在负载下的瓶颈。

LoadRunner 测试工具组件和 Archi质地

什么是负载运行器?

LoadRunner 是一款 性能测试 该工具由……率先开发 Mercury 1999 年 Interactive 公司成立。LoadRunner 后来于 2006 年被惠普收购,惠普软件业务于 2016 年宣布与 Micro Focus 合并,该交易于 2017 年完成。

品牌注解: OpenText 该公司于2023年1月完成了对Micro Focus的收购。该工具已不再以惠普或HP的名义销售。 Micro Focus LoadRunnerLoadRunner Professional 现已推出 OpenText LoadRunner Enterprise 是一款专业的性能工程软件。 OpenText 企业性能工程,以及 LoadRunner Cloud 是 OpenText 核心性能工程。以下组件名称——VuGen、控制器、负载生成器和分析——保持不变。

LoadRunner 支持多种开发工具、技术和通信协议。它拥有市面上最全面的协议库之一,可用于执行性能测试。LoadRunner 软件生成的性能测试结果可作为与其他工具进行比较的基准。

LoadRunner 视频

在学习各个组件之前,请观看下面的视频,快速了解 LoadRunner。

为什么使用 LoadRunner?

LoadRunner 不仅是性能测试领域的先驱工具,而且仍然是性能测试范式的市场领导者之一,并且仍然是许多企业进行基准测试的参考点。

协议覆盖范围是团队选择它的最明显原因,如下面的组件图所示。

LoadRunner定位为企业应用程序的性能测试工具

广义上讲,LoadRunner 工具支持 RIA(富互联网应用程序)、Web 2.0(HTTP/HTML、Ajax、Flex 和 Silverlight 等)、移动、 SAP, Oracle,MS SQL 服务器、Citrix、RTE、 Mail 最重要的是, Windows Socket。很少有同类工具能在单个工具中提供如此丰富的协议,如下面的协议列表所示。

LoadRunner支持的应用协议范围

在软件测试领域,选择 LoadRunner 最令人信服之处在于其卓越的可靠性。LoadRunner 早已建立起良好的声誉,因为您经常会发现客户使用 LoadRunner 来交叉验证您的性能基准测试结果。如果您已经在使用 LoadRunner 进行性能测试,那么您将会感到非常安心。

LoadRunner 软件与同一系列的其他工具(例如 Unified Functional Testing(前身为 LoadRunner))紧密集成。 QTP现已作为 OpenText 功能测试)和 ALM(应用程序生命周期管理,现在 OpenText ALM/质量中心)——使您能够执行端到端的测试流程。

LoadRunner 的工作原理是在目标应用程序上模拟虚拟用户。这些虚拟用户(也称为 VUser)会复制客户端的请求,并期望收到相应的响应以完成事务。

为什么需要性能测试?

以下行业估算数据被广泛引用,数据来自 2010 年代初期,但它们所描述的模式并没有改变:页面加载速度慢会造成经济损失。

由于网站性能不佳,每年估计损失收入达 4.4 亿美元。

在如今的Web 2.0时代,如果网站在8秒内没有响应,用户就会点击离开。试想一下,当你搜索时,等待5秒钟会是什么感觉? Google 或者在 Facebook 上发送好友请求。性能中断的后果往往比人们想象的更具破坏性。例如,美国银行网上银行就曾遭受过类似的打击。 Amazon 网络服务、Intuit 和 Blackberry。

根据邓白氏公司的统计,财富500强企业中有59%每周平均会经历1.6小时的停机时间。考虑到拥有至少10,000万名员工的财富500强企业平均每小时工资为56美元,此类企业每周因停机造成的劳动力成本将高达896,000万美元,每年累计超过46万美元。

仅需5分钟停机时间 Google据估计,2013 年 8 月 .com 域名被删除给这家搜索巨头造成了高达 545,000 美元的损失。

据估计,过去一段时间里,企业每秒钟损失的销售额高达1,100美元。 Amazon 网络服务中断。

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

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

然而,并非所有申请都是候选申请。 负载测试 它面向客户端-服务器、多用户系统,因此像下面这样的单用户桌面实用程序不值得进行性能测试。

单用户桌面实用程序,不适用于性能测试。

什么是LoadRunner Archi结构?

总体而言,LoadRunner 的架构虽然复杂,但易于理解。下图展示了 LoadRunner 的四个组件如何相互协作。

LoadRunner架构图,展示了VuGen、控制器、负载生成器和分析模块。

假设你被指派检查 Amazon.com,拥有 5000 名用户。

在实际情况下,这5000名用户不会全部都停留在首页——他们会分散在网站的不同版块。那么我们该如何模拟这种差异呢?

VuGen

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

因此,以上述示例为例,VuGen 可以录制以模拟以下业务流程:

  • 浏览 Amazon.com
  • 结账
  • 支付处理
  • 检查我的帐户页面

脚本顺利重放后,通常需要捕获动态服务器值。 相关 在能够扩大规模之前。

控制器

一旦虚拟用户脚本最终完成, 控制器 是 LoadRunner 的主要组件之一,它通过管理例如以下方面来控制负载模拟:

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

以我们的例子为例,控制器会将以下参数添加到 VuGen 脚本中:

  1. 3500 名用户正在浏览产品页面 Amazon.com
  2. 750 位用户正在结账
  3. 500 位用户正在进行支付处理
  4. 只有在 500 位用户完成付款处理后,才有 250 位用户查看我的帐户页面。

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

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

代理机器/负载 Generator喷油器

LoadRunner 控制器负责模拟数千个虚拟用户 (VUser)——这些虚拟用户会消耗硬件资源,例如处理器和内存——因此会限制模拟它们的机器的性能。此外,控制器在同一台机器(即控制器所在的机器)上模拟这些虚拟用户,因此结果可能不够精确。为了解决这个问题,所有虚拟用户都被分布在不同的机器上,这些机器被称为 LoadRunner 集群。 Generators 或负载喷射器。

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

以我们的类比为例 Amazon 例如,该组件的输出是 5000 个虚拟用户,分布在两个注入器上:在机器 A 上生成 2500 个虚拟用户,在机器 B 上生成 2500 个虚拟用户。

信号分析

一旦负载场景执行完毕,其作用就显现出来了。 信号分析 LoadRunner 的组件介入了。

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

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

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

以下示例说明了带宽可能造成瓶颈的情况。假设 Web 服务器的带宽为 1Gbps,但数据流量超过了此容量,导致后续用户访问速度变慢。为了确定系统是否能够满足此类需求,性能工程师需要分析应用程序在异常负载下的行为。下图是 LoadRunner 生成的用于显示带宽的图表。

LoadRunner 分析图显示带宽是性能瓶颈

如何进行性能测试

性能测试路线图大致可分为 5 个步骤,如下图所示:

  1. 负载测试规划
  2. 创建 VuGen 脚本
  3. 场景创建
  4. 场景执行
  5. 结果分析(随后进行系统调整)

安装好 LoadRunner 后,让我们逐一了解该过程中涉及的步骤。

从规划到结果分析的五步性能测试路线图

步骤1)规划负载测试

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

组建你的团队

开始使用 LoadRunner 进行测试时,最好记录下参与测试过程的每个团队中哪些人将参与测试活动,如下面的团队图表所示。

LoadRunner性能测试团队的角色配置

  • 项目经理: 提名负责此项活动并作为升级联络人的项目经理。
  • 职能专家/业务分析师: 提供 SUL 的使用情况分析以及网站或 SUL 的业务功能方面的专业知识。
  • 性能测试专家: 创建自动化性能测试并执行负载场景。
  • 系统 Archi术语: 提供SUL的蓝图。
  • Web 开发人员和 SME: 负责网站的维护、监控、开发和漏洞修复。
  • 系统管理员: 在整个测试项目中维护相关服务器。

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

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

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

需求指标图ping 每个业务流程每天每小时的用户数量

在上述示例中,数字表示在特定时间段内连接到应用程序的用户数量 (SUL)。我们可以举例说明。tract 表示一天中任何小时连接到业务流程的最大用户数,计算方法见最右侧列。

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

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

定义测试数据管理程序

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

  • 用户“A”创建了一个财务合同trac并将其提交审核。
  • 另一位用户“B”批准了200个连接trac这是用户“A”创建的一天
  • 另一位用户“C”支付了大约150个contrac这是用户“B”批准的一天

在这种情况下,用户 B 需要有 200 个连接tracts 已在系统中“创建”。此外,用户 C 需要 150 个 contracts 被标记为“已批准”,以模拟 150 个用户的负载。

这实际上意味着你必须至少创建 200+150 = 350 个 contracTS。

之后,批准 150 个 contrac将作为用户 C 的测试数据——剩余的 200 个 contracts 将作为用户 B 的测试数据。

大纲监视器

仔细分析所有可能影响系统性能的因素。例如,硬件配置降低可能会对系统负载下的性能产生影响。

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

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

步骤 2)创建 VuGen 脚本

规划之后的下一步是创建虚拟用户脚本,并添加 参数化、事务和运行时设置 随着剧本的完善。

步骤3)场景创建

下一步是在控制器中创建负载场景,选择手动场景或目标导向场景。

步骤4)场景执行

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

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

此次执行可能会导致服务器宕机 应力 并表现出异常行为。这正是性能测试的目的所在。测试结果将用于详细分析和根本原因分析。

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

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

获得的一些图表包括:

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

常见问题

性能测试针对的是客户端-服务器、多用户系统。例如,可以使用独立的桌面实用程序进行性能测试。 Microsoft 计算器服务于单个用户,没有服务器层,因此不适合进行性能测试。

性能测试用于衡量和报告应用程序在负载下的运行情况。性能工程将测试与调优相结合,从而对系统进行同步测量和优化,直至达到所需的用户体验。

序号 OpenText 该公司于 2023 年 1 月完成了对 Micro Focus 的收购,该系列产品现已出售。 OpenText 专业、企业和核心性能工程。

专业版适用于单个团队在一台机器上的测试,企业版增加了跨组织的基于项目的共享测试,核心版运行云托管负载生成,无需本地注入器。

将目标虚拟用户数量除以协议的内存占用量。以上述 HTTP 示例为例,每个虚拟用户占用 2-4 MB 内存,这意味着大约四台 4 GB 内存的机器可以运行 10,000 个虚拟用户。

IP 欺骗技术为每个虚拟用户赋予一个不同的源地址,因此负载均衡器、缓存和服务器会将模拟流量视为许多独立的客户端,而不是一台饱和的机器。

机器学习可以确定正常的响应时间基线,自动标记异常运行并聚类相关错误,从而减少工程师阅读图表的时间,增加修复底层瓶颈的时间。

副驾驶 它会编写 C 风格的 VuGen 辅助代码和参数化逻辑,但它无法知道您记录的相关值,因此每个生成的脚本仍然需要进行重放检查。

总结一下这篇文章: