杰瑞科技汇

Loadrunner教程怎么学?入门到精通指南?

LoadRunner 完整教程:从入门到精通

LoadRunner 是 Micro Focus(原 HP)公司开发的一款业界顶级的性能测试和负载测试工具,它通过模拟成千上万的用户并发访问,对应用系统进行负载测试和压力测试,以帮助用户找出系统性能瓶颈。

Loadrunner教程怎么学?入门到精通指南?-图1
(图片来源网络,侵删)

LoadRunner 简介

1 核心组件

LoadRunner 主要由以下几个核心组件构成:

  1. Virtual User Generator (VuGen)脚本录制与生成器,用于录制、编辑和调试用户在业务流程中的操作,并将其转化为可执行的脚本(C 语言或 API)。
  2. Controller负载运行控制器,用于创建、管理和监控负载测试场景,你可以定义虚拟用户数量、运行方式、思考时间、IP 欺骗等,并实时监控系统的各项性能指标。
  3. Analysis结果分析器,用于收集、处理和展示负载测试期间产生的数据,生成图表和报告,帮助你分析系统性能瓶颈。
  4. LoadRunner Professional / Enterprise:包含了上述所有组件,并提供了额外的功能,如 TruClient (支持 Web/HTML5/Flex 等技术)、Mobile 和 API 测试等。

2 测试流程

一个典型的 LoadRunner 测试流程如下:

  1. 计划测试:明确测试目标、测试场景(用户数量、业务流程)、监控指标等。
  2. 录制脚本:使用 VuGen 录制用户的业务操作流程。
  3. 完善脚本:在 VuGen 中对录制的脚本进行参数化、关联、添加检查点和自定义逻辑,使其更接近真实用户行为。
  4. 设计场景:在 Controller 中设计负载测试场景,定义虚拟用户如何加载到系统上。
  5. 执行场景:运行负载测试,并实时监控系统性能。
  6. 分析结果:在 Analysis 中分析测试结果,定位性能瓶颈,并生成测试报告。

第一步:录制与编辑脚本 (VuGen)

这是 LoadRunner 测试的起点,我们以一个最常见的 Web HTTP/HTML 协议为例。

1 创建新脚本

  1. 打开 VuGen。
  2. 选择 File -> New Script
  3. 在弹出的对话框中,选择 Web - HTTP/HTML 协议(这是最常用的协议),然后点击 OK
  4. VuGen 会创建一个空的脚本模板,包含 vuser_initActionvuser_end 三个部分。
    • vuser_init:虚拟用户初始化部分,通常用于登录等只需执行一次的操作。
    • Action:主要业务逻辑部分,会被重复执行。
    • vuser_end:虚拟用户结束部分,通常用于注销等清理操作。

2 录制脚本

  1. 在 VuGen 工具栏中,点击 Record 按钮。
  2. Recording Options 对话框中:
    • URL Address:输入你要测试的网站地址,http://demoaut.katalon.com
    • Record into Action:选择将录制内容放到哪个部分,默认是 Action
    • Recording Mode:通常选择 HTML-based script,它更容易理解和修改,如果应用是单页面应用,可以选择 URL-based script
  3. 点击 OK 开始录制。
  4. 系统会打开一个浏览器(通常是 IE 或 Chrome),在浏览器中,执行你想要测试的业务流程,
    • 访问首页。
    • 点击“登录”链接。
    • 输入用户名和密码。
    • 点击“登录”按钮。
    • 浏览一些商品页面。
    • 注销登录。
  5. 完成操作后,回到 VuGen,点击 Stop 按钮停止录制。

3 查看与理解脚本

录制完成后,你会看到自动生成的 C 语言脚本,它会包含很多 web_url()web_link()web_submit_data() 等函数。

Loadrunner教程怎么学?入门到精通指南?-图2
(图片来源网络,侵删)
// Action.c - Action for Recording
#include "lrun.h"
#include "web_api.h"
Action()
{
    // 录制的第一个请求
    web_url("Welcome",
        "URL=http://demoaut.katalon.com/",
        "TargetFrame=",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t1.inf",
        "Mode=HTML",
        LAST);
    // 录制的登录请求
    web_submit_data("login",
        "Action=http://demoaut.katalon.com/login",
        "Method=POST",
        "TargetFrame=",
        "RecContentType=text/html",
        "Referer=http://demoaut.katalon.com/",
        "Snapshot=t2.inf",
        "Mode=HTML",
        "Name=username", "Value=testuser", ENDITEM,
        "Name=password", Value="testpass", ENDITEM,
        "Login=Login", LAST);
    // ... 其他请求 ...
    return 0;
}

4 参数化脚本

为什么参数化? 直接将用户名、密码等写死在脚本中,会导致所有虚拟用户使用同一套数据,这不符合真实情况,参数化可以让每个虚拟用户使用不同的数据。

如何参数化?

  1. 在脚本视图中,选中需要参数化的值,例如用户名 "testuser"。
  2. 右键选择 Replace with a Parameter
  3. 选择参数类型,通常选择 File(从外部文件读取数据)。
  4. VuGen 会创建一个参数(如 {username}),并弹出一个向导,让你创建一个数据文件(如 username.dat)。
  5. 在数据文件中,每行一个值,
    user1
    user2
    user3
    ...
  6. 运行时,LoadRunner 会自动从文件中为每个虚拟用户分配不同的值。

5 关联

为什么需要关联? 很多应用的响应中会包含一个动态变化的值(如 Session ID, JSESSIONID),这个值需要在后续的请求中作为参数传回,关联就是从服务器的响应中“捕获”这个动态值,并保存为一个参数,供后续请求使用。

如何进行关联?

Loadrunner教程怎么学?入门到精通指南?-图3
(图片来源网络,侵删)
  1. 在脚本中,找到一个后续请求需要用到动态值的请求。
  2. 在该请求的函数上右键,选择 Create Correlation
  3. VuGen 会扫描前后请求,建议可能的关联点。
  4. 检查建议是否正确,确认后点击 Create
  5. VuGen 会在脚本中插入 web_reg_save_param() 函数来捕获动态值,并将该值保存为一个参数(如 {SessionID})。

6 添加检查点

检查点用于验证服务器返回的页面内容是否正确,确保你的业务流程被正确执行。

如何添加检查点?

  1. 在一个请求后,你想检查某个文本是否存在,登录成功后,页面应该显示 "Welcome"。
  2. 在该请求的函数上右键,选择 Insert -> Checkpoint -> Text Checkpoint
  3. 在弹出的对话框中,输入要检查的文本,"Welcome"。
  4. VuGen 会插入 web_reg_find() 函数,它会检查后续响应中是否包含指定的文本,如果找不到,事务会失败。

第二步:设计与运行场景 (Controller)

脚本准备好了,现在需要模拟成千上万的用户来访问它。

1 创建场景

  1. 打开 Controller
  2. 选择 Create a new scenario
  3. Scenario Groups 部分,将你在 VuGen 中创建的脚本拖拽到 Available Scripts 区域。
  4. 将脚本从 Available Scripts 拖拽到 Scenario Groups 中。

2 设计场景

Design 视图中,你可以定义负载模型。

  1. 虚拟用户数量:在 "Ramp Up" 列中,设置需要多少虚拟用户,输入 100
  2. 加载方式
    • Ramp Up:在指定的时间内(10 分钟),逐步将虚拟用户增加到目标数量,这是最常用的方式,可以模拟真实用户的逐渐增长。
    • Instant:瞬间启动所有虚拟用户,用于压力测试。
  3. 思考时间:模拟用户在操作之间的停顿,在脚本中,右键点击 lr_think_time() 函数,可以全局启用或禁用思考时间,并设置其最小、最大和平均值。
  4. 运行持续时间:设置场景运行的总时间。

3 添加监控

为了分析性能瓶颈,必须监控服务器和应用的各项指标。

  1. 点击工具栏上的 New Monitor 按钮。
  2. 选择你要监控的目标,通常选择 Web Server
  3. 在弹出的对话框中,输入你要监控的服务器 IP 地址和登录凭据。
  4. 常用的监控指标包括:
    • 服务器资源:CPU 使用率、内存使用率、磁盘 I/O、网络 I/O。
    • 应用服务器资源:JVM 内存、线程数、数据库连接数。
    • 数据库资源:CPU、I/O、锁、缓存命中率。
    • 网络资源:吞吐量。

4 运行场景

  1. 确保脚本和监控都已配置好。
  2. 点击工具栏上的 Start Scenario 按钮。
  3. 场景开始运行,你可以实时查看以下图表:
    • Running Vusers:当前正在运行的虚拟用户数。
    • Hits per Second:每秒点击数。
    • Throughput:吞吐量(数据传输量)。
    • Average Transaction Response Time:事务平均响应时间。
    • Errors per Second:每秒错误数。
    • 以及所有你添加的监控图表。

运行期间,如果发现性能急剧下降或错误率飙升,可以随时点击 Stop 按钮停止测试。


第三步:分析结果 (Analysis)

测试结束后,使用 Analysis 来挖掘数据,找到问题所在。

  1. 在 Controller 中测试停止后,选择 Results -> Analyze Results
  2. Analysis 会自动加载测试数据。

1 关键分析视图

  1. Summary Report:概要报告,包含最重要的性能指标摘要,如总吞吐量、平均响应时间、错误率等。
  2. Graphs:图表视图,可以组合多个图表进行分析。
    • 响应时间 vs. 虚拟用户数:这是最重要的图表之一,当响应时间随用户数增加而急剧上升时,通常表明系统已达到性能瓶颈。
    • 吞吐量 vs. 虚拟用户数:吞吐量在达到一个峰值后开始下降,也说明系统瓶颈出现。
    • 错误分布图:查看哪些事务或请求错误率最高。
  3. Correlation Graphs:关联图,用于分析两个指标之间的关系,将“响应时间”和“CPU 使用率”放在同一个图中,如果两者同时飙升,说明 CPU 可能是瓶颈。
  4. Transaction Summary:事务摘要,列出所有事务的平均响应时间、最小/最大响应时间、成功率等。

2 定位瓶颈

通过分析图表,你可以初步定位瓶颈:

  • 如果响应时间急剧上升,但服务器 CPU、内存、I/O 都很低:可能是应用代码或数据库查询效率低下。
  • CPU 使用率达到 90% 以上:服务器计算能力不足。
  • 如果内存使用率达到 90% 以上:服务器内存不足,可能频繁发生内存交换。
  • 如果磁盘 I/O 饱和:磁盘读写是瓶颈。
  • 如果数据库锁等待时间长:数据库存在并发访问问题。
  • 如果网络吞吐量达到上限:网络带宽是瓶颈。

进阶技巧与最佳实践

1 使用 IP 欺骗

如果需要模拟大量来自不同 IP 地址的用户,以避免防火墙或服务器的单 IP 连接限制,可以在 Controller 中启用 IP Wizard,它会为每个虚拟用户分配一个独立的 IP 地址。

2 关联的深入理解

关联是 LoadRunner 的精髓,对于复杂的动态值(如 JSON 中的 Token),可能需要手动编写 web_reg_save_param() 或使用正则表达式来捕获。

3 事务

在脚本中使用 lr_start_transaction("事务名")lr_end_transaction("事务名", LR_AUTO) 来标记一个业务流程的开始和结束,这样可以在 Analysis 中精确衡量每个业务步骤的性能。

4 集成 CI/CD

LoadRunner 可以与 Jenkins、Azure DevOps 等 CI/CD 工具集成,实现性能测试的自动化,将其作为持续交付流程的一部分。

5 最佳实践

  1. 尽早进行性能测试:不要等到项目末期才做性能测试。
  2. 建立性能基线:在每次系统变更(如新版本上线)前,先运行一次性能测试建立基线,以便对比。
  3. 关注关键业务路径:资源有限时,优先测试对业务最核心、用户最常用的流程。
  4. 持续监控:在测试过程中,要持续关注各个监控指标,而不仅仅是平均响应时间。
  5. 团队协作:性能测试是开发、运维、测试共同的责任,需要团队协作来定位和解决瓶颈。

学习资源推荐

  1. 官方文档:Micro Focus 官网提供了最权威的 LoadRunner 文档和教程。
  2. 官方培训课程:Micro Focus 提供官方的认证培训课程,系统性强。
  3. 在线视频教程:Bilibili、YouTube 等平台有大量免费的 LoadRunner 入门和实战视频。
  4. 技术博客和论坛:CSDN、博客园、Stack Overflow 等社区有大量开发者分享的经验和问题解决方案。

希望这份教程能为你提供一个清晰的路线图,LoadRunner 功能强大,但核心思想并不复杂,多加练习,从录制一个简单的脚本开始,逐步深入,你一定能掌握它!

分享:
扫描分享到社交APP
上一篇
下一篇