杰瑞科技汇

loadrunner使用教程

LoadRunner 使用教程:从入门到实战

LoadRunner 是业界领先的性能测试工具,由 Micro Focus 公司开发,它通过模拟成千上万的用户并发访问应用系统,来测试系统的负载能力和性能瓶颈。

本教程将分为以下几个核心部分:

  1. LoadRunner 核心概念与工作流程
  2. 实战第一步:录制你的第一个脚本
  3. 脚本增强与参数化
  4. 设置场景与执行测试
  5. 分析测试结果
  6. LoadRunner 最佳实践与进阶

第一部分:LoadRunner 核心概念与工作流程

在开始之前,必须理解 LoadRunner 的几个核心组件和整个工作流程。

核心组件

  1. VuGen (Virtual User Generator) - 虚拟用户生成器

    • 作用:录制、编辑和增强脚本,它是你创建测试脚本的地方。
    • 产出物:一个 .c (C语言) 或 .vbs (VBScript) 格式的脚本文件。
  2. Controller - 控制器

    • 作用:设计和执行负载测试场景,你可以在这里定义虚拟用户数量、运行方式、负载机等,并实时监控测试过程。
    • 产出物:一个场景文件 .lrs
  3. Analysis - 分析器

    • 作用:收集、合并和分析测试结果,它会生成各种图表和报告,帮助你定位性能瓶颈。
    • 产出物:分析报告。

LoadRunner 性能测试工作流程

这是一个经典的迭代过程,通常遵循以下步骤:

  1. 计划测试:明确测试目标、测试范围、业务场景、用户数量、思考时间等。
  2. 创建 Vuser 脚本:使用 VuGen 录制或编写脚本,模拟一个真实用户的操作。
  3. 设计场景:在 Controller 中,将脚本组织成一个或多个场景,模拟成千上万的用户并发操作。
  4. 运行场景:执行测试,并实时监控系统性能指标(如响应时间、吞吐量、错误率等)。
  5. 分析结果:使用 Analysis 工具分析测试数据,找出瓶颈,生成报告。
  6. 优化与迭代:根据分析结果,开发人员优化系统,然后重复步骤 2-5,验证优化效果。

第二部分:实战第一步:录制你的第一个脚本

假设我们要测试一个简单的登录功能。

前提条件

  • 安装好 LoadRunner。
  • 确保你的电脑可以访问到要测试的 Web 应用(http://example.com/login)。

操作步骤

  1. 打开 VuGen

    启动 LoadRunner,选择 "Virtual User Generator"。

  2. 创建新脚本

    • 在 VuGen 的欢迎界面,选择 "New Script"。
    • 在弹出的协议选择对话框中,选择 Web - HTTP/HTML,这是最常见的 Web 应用协议,点击 "OK"。

loadrunner使用教程-图1

  1. 录制选项
    • VuGen 会弹出 "Recording Options" 窗口,你需要配置录制的内容。
    • URL Address: 输入你要测试的网站地址,http://example.com
    • Recording Mode: 选择 HTML-based script,这是最常用的模式,它会录制用户的点击和导航,并生成对应的 Web 函数(如 web_url, web_link)。
    • Advanced...: 点击 "Advanced",在 "Support Charset" 中,确保选择了正确的字符集(通常是 "UTF-8"),这能避免中文等特殊字符乱码。
    • 点击 "OK" 开始录制。

loadrunner使用教程-图2

  1. 执行录制操作
    • VuGen 会自动打开一个基于 IE 内核的浏览器(或你系统默认的浏览器)。
    • 像真实用户一样操作:
      1. 访问登录页面 http://example.com/login
      2. 输入用户名和密码。
      3. 点击 "登录" 按钮。
      4. 登录成功后,可以浏览一下首页。
      5. 点击 "退出" 或 "注销" 按钮。
    • 操作完成后,回到 VuGen 界面,点击工具栏上的 停止录制 按钮 (红色方块)。

loadrunner使用教程-图3

  1. 查看生成的脚本

    • 停止录制后,VuGen 会显示生成的脚本,你会看到类似下面的代码结构:
    vuser_init()
    {
        // 初始化操作,通常只执行一次
        web_url("login",
            "URL=http://example.com/login",
            "Resource=0",
            "Recalc=Yes",
            "TargetFrame=",
            "Snapshot=t1.inf",
            "Mode=HTML",
            LAST);
        // ... 其他登录操作的函数
    }
    Action()
    {
        // 主要业务逻辑,会根据场景设置迭代执行
        // 输入用户名和密码,点击登录
        web_submit_data("login.pl",
            "Action=http://example.com/login.pl",
            "Method=POST",
            "Recalc=Yes",
            "TargetFrame=",
            "Snapshot=t2.inf",
            "Mode=HTML",
            ITEMDATA,
            "Name=user", "Value=testuser", ENDITEM,
            "Name=pass", Value="testpass", ENDITEM,
            "Name=Login", "Value=Login", ENDITEM,
            LAST);
        // ... 其他操作
    }
    vuser_end()
    {
        // 清理操作,通常只执行一次
        // 退出登录
        web_link("Logout",
            "Text=Logout",
            "URL=http://example.com/logout",
            LAST);
    }

第三部分:脚本增强与参数化

直接录制的脚本有很多问题,比如所有用户都用同一个用户名和密码登录,这不符合真实情况,我们需要对脚本进行增强。

参数化

参数化是将脚本中固定的值(如用户名、密码、搜索关键词)替换为从数据源(如 CSV 文件、数据库)中读取的变量,从而模拟不同用户的不同行为。

示例:将登录用户名和密码参数化

  1. 选中要参数化的文本:在 Action() 部分,找到 web_submit_data 函数,选中用户名 testuser 和密码 testpass
  2. 右键选择 "Replace with a parameter":在弹出的菜单中选择此选项。

loadrunner使用教程-图4

  1. 创建参数
    • 在弹出的 "Create Parameter" 窗口中:
      • Name: 给参数起个名字,如 usernamepassword
      • Parameter type: 选择 File,表示从文件中读取。
      • File path: 点击 "Browse",创建一个新的 CSV 文件(users.csv)。
      • 点击 "Create"。
  2. 准备数据文件
    • 用记事本或 Excel 打开 users.csv 文件,填入多组用户名和密码,每行一组,用逗号分隔。
      user1,pass1
      user2,pass2
      user3,pass3
      ...
  3. 设置参数属性
    • 回到 VuGen,点击菜单 View -> Parameter List,打开参数列表。
    • 选中你创建的参数(如 username),在右侧属性中:
      • Update value on: 选择 Each iteration,这样每个虚拟用户在每次迭代时都会读取下一行数据。

插入思考时间

真实用户在操作之间会有停顿(例如阅读页面内容),我们需要在脚本中插入 lr_think_time 来模拟这种延迟。

  1. 在脚本中找到两个操作之间,比如登录成功后。
  2. 在合适的位置插入 lr_think_time(5);,这里的 5 代表 5 秒的随机延迟(通常会在一个范围内随机,如 lr_think_time(random_range(3, 7));)。

关联

关联是处理动态值的关键,很多应用的响应中会包含一些动态变化的值(如 Session ID, Token),这些值需要在后续的请求中作为参数传回。

  • 如何判断需要关联?:当你运行脚本时,如果收到错误(如 "Invalid Session ID"),或者查看日志发现某个请求参数是 {SessionID_1} 这样的占位符,就说明需要关联了。
  • 如何关联?
    1. 在 VuGen 中,点击菜单 Web -> Create Correlation
    2. VuGen 会自动扫描录制日志,提示可能的关联项。
    3. 你也可以手动在录制日志中找到动态值,然后使用 web_reg_save_param 函数将其捕获并保存为一个参数。

第四部分:设置场景与执行测试

脚本准备好了,现在需要使用 Controller 来模拟大量用户并发。

操作步骤

  1. 打开 Controller

    启动 LoadRunner,选择 "Controller"。

  2. 创建新场景

    • 在 "New Scenario" 向导中,选择 Manual Scenario(手动场景),这样我们可以更精确地控制虚拟用户。
    • 点击 "OK"。
  3. 加载脚本

    • 在 Controller 的 "Design" 标签页中,左侧的 "Available Scripts" 列表是空的。
    • 点击工具栏的 Start Recording with New Script 图标,然后选择你刚才在 VuGen 中创建并保存的脚本,脚本会出现在 "Available Scripts" 列表中。
    • 将脚本拖拽到右侧的 "Scenario Groups" 窗口中。
  4. 配置虚拟用户

    • 在 "Scenario Groups" 中,选中你的脚本。
    • 在下方的 "Number of Vusers" 中,设置你想要模拟的并发用户数,50

loadrunner使用教程-图5

  1. 设置运行模式

    • 在 "Schedule" 标签页中,你可以设置测试的执行计划。
    • Ramp Up:在多长时间内将用户数增加到设定值(50 个用户在 5 分钟内逐渐加载)。
    • Duration:保持满负载运行多长时间(例如运行 30 分钟)。
    • Ramp Down:在多长时间内将用户数降为 0。
    • 可以设置:Ramp Up 5 min -> Duration 30 min -> Ramp Down 0 min。
  2. 添加监控

    • 在 "Online" 标签页,右侧有 "Available Graphs" 和 "Measures"。
    • 将需要监控的指标(如 Running Vusers, Hits per Second, Response Time, Throughput, Errors per Second)拖拽到左侧的 "Graphs" 区域。
    • 重要:点击 "Add Measurements" -> "Add Measurements for the Host",添加你要监控的服务器(IP地址),并勾选你要监控的系统资源(如 CPU, Memory, Disk I/O),这需要提前在目标服务器上安装 LoadRunner 的 Agent。
  3. 运行场景

    • 所有设置完成后,点击工具栏的 Start Scenario 按钮 (绿色三角形)。
    • 测试开始,你可以在 Controller 的 "Online" 标签页中实时看到各种性能指标的变化图表。

第五部分:分析测试结果

测试结束后,需要分析数据,找出问题。

操作步骤

  1. 打开 Analysis

    • 在 Controller 测试运行完毕后,会提示你 "Open Analysis",直接点击即可。
    • 也可以手动启动 LoadRunner 的 "Analysis" 组件,并选择刚刚生成的测试结果目录。
  2. 查看概要报告

    Analysis 会自动生成一个概要报告,显示关键指标的平均值、最大值、最小值等。

  3. 分析主要图表

    • Running Vusers (虚拟用户数):确认用户是否按计划加载和卸载。
    • Average Transaction Response Time (平均事务响应时间):这是最重要的指标之一,如果随着用户数的增加,响应时间急剧上升,说明系统遇到了瓶颈。
    • Throughput (吞吐量):指系统每秒处理的请求数或数据量,如果吞吐量在达到某个用户数后不再增长甚至下降,也是瓶颈的信号。
    • Errors per Second (每秒错误数):监控错误率,错误率突然升高通常是系统崩溃或出现严重问题的标志。
  4. 定位瓶颈

    • 如果响应时间变长
      • 查看服务器监控图表(CPU, Memory, Disk, Network),如果某个资源(如 CPU)达到 100%,说明是服务器资源瓶颈。
      • 查看数据库监控(如果配置了),可能是 SQL 查询效率低下或数据库连接池耗尽。
    • 如果吞吐量下降

      通常意味着系统处理能力达到上限,无法接受更多的请求。

    • 如果错误率升高

      查看错误详情,分析是应用逻辑错误、超时还是服务器内部错误。

  5. 生成报告

    • 点击菜单 Report -> Generate Report,可以生成一个详细的 HTML 或 Word 格式的测试报告,用于分享和存档。

第六部分:LoadRunner 最佳实践与进阶

  • 脚本维护:定期更新和关联脚本,以应对应用的版本更新。
  • 场景设计:不要只做“压力测试”(不断增加用户直到崩溃),还要做“负载测试”(在预期用户量下稳定运行)和“耐力测试”(长时间运行)。
  • 数据驱动:使用参数化来模拟真实、多样的用户行为。
  • 监控是关键:不要只看 LoadRunner 的数据,一定要结合服务器、数据库、中间件(如 Tomcat, Nginx)的监控数据,才能准确定位瓶颈。
  • 持续集成:将 LoadRunner 测试集成到 CI/CD 流程中,实现自动化回归测试。

这份教程为你提供了一个完整的 LoadRunner 使用路径,性能测试是一个“计划-执行-分析-优化”的循环过程,熟练掌握 VuGen、Controller 和 Analysis,并结合对应用架构和服务器知识的理解,你就能成为一名出色的性能测试工程师。

祝你学习顺利!

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