杰瑞科技汇

LoadRunner11怎么用?关键步骤有哪些?

LoadRunner 11 使用教程

LoadRunner 11 是一款由 Micro Focus(原 HP)开发的业界领先的负载测试和性能测试工具,它通过模拟成千上万的用户并发操作,来对应用系统进行压力测试,从而帮助您发现系统性能瓶颈、评估系统容量和稳定性。

LoadRunner11怎么用?关键步骤有哪些?-图1
(图片来源网络,侵删)

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

  1. LoadRunner 核心概念与工作流程
  2. 详细步骤:从录制到分析
  3. VuGen 脚本开发进阶
  4. Controller 场景设计与执行
  5. Analysis 结果分析
  6. 常见问题与最佳实践

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

核心组件

LoadRunner 主要由三个核心模块组成:

  • Virtual User Generator (VuGen):虚拟用户生成器,用于录制、编辑和调试脚本,将用户的操作行为转化为可执行的脚本(C 语言)。
  • Controller:控制器,用于创建、管理和运行负载测试场景,可以模拟大量虚拟用户(Vuser)对系统施加压力,并实时监控服务器和应用的性能指标。
  • Analysis:分析器,用于收集、合并和负载测试结果,生成图表和报告,从而帮助您分析系统性能瓶颈。

工作流程

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

  1. 计划测试:明确测试目标、测试场景(如并发用户数、测试时长)、监控指标等。
  2. 录制脚本:使用 VuGen 录制用户在业务系统上的关键操作流程。
  3. 完善脚本:在 VuGen 中增强脚本,添加参数化、关联、检查点、事务等,使其更接近真实用户行为。
  4. 设计场景:在 Controller 中设计测试场景,设置虚拟用户数量、运行方式(如加压、持续)、负载机等。
  5. 运行场景:执行负载测试,同时监控被测服务器(如 CPU、内存、网络)和应用的性能数据。
  6. 分析结果:使用 Analysis 工具分析测试数据,定位性能瓶颈,生成测试报告。

第二部分:详细步骤:从录制到分析

我们将以一个最经典的“Web Tours”示例(LoadRunner 自带的 demo 应用)为例,走一遍完整流程。

LoadRunner11怎么用?关键步骤有哪些?-图2
(图片来源网络,侵删)

使用 VuGen 录制脚本

  1. 打开 VuGen

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

  2. 创建新脚本

    • 在弹出的窗口中,选择 "Web - HTTP/HTML" 协议(这是最常见的 Web 应用协议),然后点击 "OK"。
    • 给你的脚本起一个名字,WebTours_Login,并选择一个保存位置,点击 "Create"。
  3. 录制设置

    LoadRunner11怎么用?关键步骤有哪些?-图3
    (图片来源网络,侵删)
    • VuGen 会弹出 "Recording Options" 窗口。
    • URL Address:输入 Web Tours 应用的地址,通常是 http://localhost:1080
    • Recording Mode:保持默认的 "HTML-based script"。
    • Start recording immediately:勾选此项,点击 "OK" 后会自动打开浏览器开始录制。
    • 点击 "OK" 开始录制。
  4. 执行业务操作

    • VuGen 会自动打开一个浏览器(或集成到 IE 中),你需要模拟一个用户的完整操作流程:
      1. 在首页点击 "Sign-In"。
      2. 输入用户名(如 jojo)和密码(如 bean)。
      3. 点击 "Sign-In" 按钮登录。
      4. 登录成功后,点击 "Logout" 退出。
    • 操作完成后,回到 VuGen 窗口,点击工具栏上的 停止录制 按钮(红色方块)。
  5. 查看录制的脚本

    • 停止录制后,你会看到生成的脚本,脚本主要分为三部分:
      • vuser_init:初始化部分,只运行一次,通常用于登录等前置操作。
      • Action:主体部分,会按照迭代次数循环执行,你的核心业务逻辑(登录、查询等)都在这里。
      • vuser_end:结束部分,只运行一次,通常用于登出等后置操作。
    • 你可以在 "Tree" 和 "Script" 视图之间切换。"Tree" 视图以结构化方式展示请求,"Script" 视图显示底层的 C 语言代码。

完善脚本(增强脚本)

录制的脚本只是一个骨架,需要进一步完善才能用于真实的负载测试。

  1. 参数化

    • 目的:避免所有虚拟用户使用相同的数据(如用户名、密码),这会导致缓存或会话问题,无法模拟真实场景。
    • 操作
      • 在 "Tree" 视图中,找到登录请求中的 userNamepassword
      • 右键点击 jojo,选择 "Replace with a parameter..."。
      • 在弹出的窗口中,选择 "New Parameter",命名为 username,点击 "OK"。
      • 同样,将 bean 参数化为 password
      • VuGen 左下角会出现 "Parameter List" 窗口,点击 "Create New Table",输入多组用户名和密码数据(至少 5-10 组)。
  2. 关联

    • 目的:处理动态数据,很多应用(如 Session ID, View State)的值是动态生成的,每次请求都不同,录制时捕获的是固定值,回放时会失败。
    • 操作
      • 在回放脚本时,如果遇到 "Error -27160: Session 'MERRAAGE...' has expired" 之类的错误,通常就是需要关联。
      • 在 "Tree" 视图中,找到返回动态值的请求(通常是登录后的第一个页面)。
      • 右键点击该请求,选择 "Find Correlation..."。
      • VuGen 会自动扫描并建议可关联的值,检查建议是否正确,然后点击 "Correlate"。
      • 成功后,VuGen 会在脚本中自动生成 web_reg_save_param 函数来捕获这个动态值。
  3. 添加检查点

    • 目的:验证脚本回放是否成功,通过检查返回的页面中是否存在特定的文本,来判断业务是否成功执行。
    • 操作
      • 在登录成功的请求后,添加一个检查点。
      • 在 "Tree" 视图中,右键点击登录成功的响应,选择 "Add a step -> Check for a text in the response"。
      • 在弹出的窗口中,输入一个只有登录成功后才会出现的文本,"Sign Out"。
      • 给这个检查点命名,如 "Login_Success_Check"。
  4. 添加事务

    • 目的:衡量某个业务流程的性能(如登录、查询订单)。
    • 操作
      • 在 "Script" 视图中,将光标定位到 "lr_start_transaction("Login");" 的位置。
      • 在登录请求前,输入 lr_start_transaction("Login");
      • 在登录成功的响应后,输入 lr_end_transaction("Login", LR_AUTO);
      • 这样,"Login" 这个事务的响应时间就会被记录下来。
  5. 运行和调试脚本

    • 点击工具栏上的 Start/Stop Recording 按钮旁边的箭头,选择 "Run from Step" 或 "Run"。
    • VuGen 会执行脚本,并在底部 "Execution Log" 中显示运行结果,如果有错误(如关联失败、参数错误),日志会明确指出,你需要根据错误信息修改脚本,直到脚本可以成功回放。

使用 Controller 设计场景

  1. 打开 Controller

    启动 LoadRunner 11,选择 "Controller"。

  2. 创建场景

    • 选择 "Create a new scenario"。
    • 在 "Available Scripts" 中找到你刚刚创建并保存好的 WebTours_Login 脚本,点击向右箭头将其添加到 "Scenario Groups" 中。
  3. 设计负载模式

    • 选择场景类型:选择 "Manual Scenario"(手动场景),这样可以更精确地控制虚拟用户。
    • 设置虚拟用户
      • 在 "Scenario Groups" 中,选择你的脚本。
      • 在 "Number of Vusers" 中输入你想要模拟的并发用户数,50
    • 设置运行模式
      • 选择 "Initialize all Vusers before running the scenario"(所有用户同时开始)。
      • 选择 "Run for the following duration"(运行指定时长),10 分钟。
      • 选择 "Stop Vuser when duration is over"(时间到后停止所有用户)。
  4. 添加监控

    • 目的:在测试过程中实时观察服务器的健康状况,这是定位瓶颈的关键。
    • 操作
      • 在 Controller 界面的下方,点击 "New available graph" 按钮。
      • 选择你要监控的指标,最常用的有:
        • Running Vusers:运行中的虚拟用户数。
        • Hits per Second:每秒点击数。
        • Transactions per Second:每秒事务数。
        • Average Transaction Response Time:平均事务响应时间。
        • Web Resources:Web 资源(如页面、图片)的下载时间。
      • 你需要添加对 服务器 的监控。
        • 点击菜单栏的 "Measurements" -> "Add Measurements..."。
        • 在 "Add Measurements" 窗口中,点击 "Add..." 按钮。
        • 输入你要监控的服务器 IP 地址,选择监控器类型(如 "Windows Resources" 或 "Linux Resources"),输入用户名和密码。
        • 选择要监控的计数器,如 Processor, Memory, Network Interface 等。
  5. 运行场景

    • 所有设置完成后,点击工具栏上的 Start Scenario 按钮(绿色三角形)。
    • 场景开始运行,你可以实时看到各个图表的变化,观察服务器指标和客户端指标(响应时间、TPS)的变化趋势。

使用 Analysis 分析结果

  1. 打开 Analysis

    • 当场景运行结束后,Controller 会提示你是否将结果加载到 Analysis 中,选择 "Yes",Analysis 会自动启动并加载数据。
    • 如果没有自动启动,你也可以手动在 Controller 中点击 "Results" -> "Analyze Results..."。
  2. 分析概览

    Analysis 顶部是概览页面,总结了测试的关键指标,如总事务数、平均响应时间、每秒事务数等。

  3. 使用图表分析

    • 左侧是 "Graphs" 树状列表,包含了所有你在 Controller 中设置过的图表,以及更多分析图表。
    • 关键分析点
      • 响应时间 vs. 负载:随着用户数增加,响应时间是平稳、线性上升,还是急剧恶化?急剧上升通常意味着性能瓶颈。
      • TPS vs. 负载:TPS 是否达到一个平台期然后开始下降?TPS 下降是系统达到处理能力上限的典型标志。
      • 服务器资源使用率
        • CPU 使用率:持续高于 80%-90% 可能是瓶颈。
        • 内存使用率:持续增长且不回收,可能存在内存泄漏。
        • 磁盘 I/O:磁盘队列长度过长,说明磁盘是瓶颈。
      • 错误率:是否有错误产生?错误率上升是系统不稳定的表现。
  4. 合并场景

    如果你想对比多次测试的结果,可以使用 "Merge Graphs" 功能,将不同场景的数据放在同一张图上进行对比。

  5. 生成报告

    分析完成后,点击 "File" -> "Export" -> "Report...",可以生成一个 HTML 格式的正式测试报告,用于分享和存档。


第三部分:VuGen 脚本开发进阶

  • 集合点:在 Controller 中设置,用于在脚本中设置一个等待点,让所有虚拟用户到达此点后,同时释放,模拟瞬间的高并发压力。
  • 思考时间:模拟用户在操作之间的真实停顿,在录制时,VuGen 默认会记录思考时间,你也可以在脚本中手动添加 lr_think_time() 函数来调整或禁用它。
  • 关联函数web_reg_save_param 是最核心的关联函数,它的作用是在服务器响应中查找一个左边界和右边界,并将中间的动态值保存为一个参数。
  • LoadRunner 函数:LR 提供了丰富的函数库,如:
    • lr_output_message():在日志中输出信息。
    • lr_eval_string():解析参数。
    • web_url(), web_submit_data():用于手动发送 HTTP 请求。

第四部分:常见问题与最佳实践

常见问题

  • 问题:脚本回放失败,提示 "Error -27160: Session has expired"。
    • 解决:通常是因为没有正确处理 Session ID 或其他动态数据,需要使用关联功能。
  • 问题:所有虚拟用户都使用同一组参数。
    • 解决:检查参数化设置,确保数据表有多行数据,并且在 "Update value on" 中选择了 "Each iteration" 或 "Each occurrence"。
  • 问题:Controller 中连接不到负载机。
    • 解决
      1. 确保负载机和 Controller 机器网络互通。
      2. 检查负载机上 LoadRunner 的 Agent Process 是否正在运行。
      3. 在 Controller 的 "Scenario" -> "Enable Controller..." 中,勾选 "Remote Agent" 并指定负载机 IP。
      4. 检查防火墙设置是否阻止了 LoadRunner 的通信端口(默认为 54345)。

最佳实践

  1. 从简单到复杂:先录制并调试单个业务流程的脚本,确保其稳定可靠,再组合成完整的业务场景。
  2. 明确测试目标:每次测试前想清楚,这次测试是为了验证什么?是压力测试、负载测试还是稳定性测试?目标不同,场景设计也不同。
  3. 监控是关键:没有服务器监控的性能测试是不完整的,客户端数据(响应时间)告诉你用户体验差,服务器数据告诉你瓶颈在哪里。
  4. 持续迭代:性能测试是一个迭代过程,发现瓶颈 -> 优化代码/配置 -> 再次测试 -> 验证优化效果。
  5. 版本控制:将你的脚本和场景文件纳入版本控制系统(如 Git),方便追踪和管理。
  6. 清理环境:测试结束后,确保清理测试数据,避免对生产环境造成影响。

LoadRunner 11 虽然版本较老,但其核心思想和工作流程至今仍是性能测试领域的基石,掌握它,你将能够系统地、科学地进行性能测试,为应用的稳定运行保驾护航,这份教程为你提供了一个清晰的路线图,最重要的还是 动手实践,多录、多编、多跑、多分析,才能真正将知识转化为技能。

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