一、LoadRunner是什么?

LoadRunner 是一款由 Micro Focus(原 HP)开发的性能测试工具,用于模拟大量用户对应用系统的访问,从而测试系统的负载能力和性能瓶颈。


二、LoadRunner 11 主要组成模块

  • VuGen(Virtual User Generator):录制和编辑脚本
  • Controller:控制测试运行,管理虚拟用户
  • Load Generator:生成负载的机器
  • Analysis:测试结果分析和报告生成

三、基本使用流程

1. 录制脚本(VuGen)

  • 选择协议(HTTP/HTML、Web Services等)
  • 录制用户操作(浏览网页、登录等)
  • 录制完成后对脚本进行编辑(参数化、关联、添加检查点)

2. 脚本调试

  • 在 VuGen 中运行脚本,检查脚本是否能成功执行

3. 设计测试场景(Controller)

  • 创建测试场景,设置虚拟用户数、测试时间
  • 分配 Load Generator 机器

4. 运行测试

  • 启动测试,Controller 控制负载生成
  • 实时监控测试进度和性能指标

5. 分析结果(Analysis)

  • 收集测试数据
  • 生成报告,找出性能瓶颈(响应时间、吞吐量、错误率等)

四、常用技巧

  • 参数化:用数据表替换脚本中的固定值,实现动态输入
  • 关联:自动提取服务器返回的动态数据,保证脚本连续性
  • 事务定义:用 lr_start_transaction 和 lr_end_transaction 测量关键操作的响应时间
  • 检查点:用 web_reg_find 验证页面内容正确性

五、示例代码片段(VuGen C脚本)

Action()
{
    lr_start_transaction("Login");

    web_url("login_page",
        "URL=http://example.com/login",
        "TargetFrame=",
        "Resource=0",
        "RecContentType=text/html",
        "Mode=HTTP",
        LAST);

    web_submit_data("login_submit",
        "Action=http://example.com/login/submit",
        "Method=POST",
        ITEMDATA,
        "Name=username", "Value=admin", ENDITEM,
        "Name=password", "Value=123456", ENDITEM,
        LAST);

    lr_end_transaction("Login", LR_AUTO);

    return 0;
}

好的!这里给你补充一个更完整的 LoadRunner 11 C 脚本示例,包含了录制的请求、参数化、关联以及事务控制,方便你直接参考和修改使用。


LoadRunner 11 脚本示例(HTTP/HTML 协议)

Action()
{
    // 开始事务 - 登录
    lr_start_transaction("Login");

    // 预先注册关联,捕获登录页面返回的Session ID(示例)
    web_reg_save_param("SessionID",
        "LB=session_id=",
        "RB=;",
        LAST);

    // 访问登录页面,获取Session ID等动态数据
    web_url("OpenLoginPage",
        "URL=http://example.com/login",
        "Resource=0",
        "RecContentType=text/html",
        "Mode=HTTP",
        LAST);

    // 参数化用户名和密码,使用外部数据文件
    // VuGen中需先添加参数UserName和Password

    // 提交登录表单
    web_submit_data("SubmitLogin",
        "Action=http://example.com/login/submit",
        "Method=POST",
        "RecContentType=text/html",
        ITEMDATA,
        "Name=username", "Value={UserName}", ENDITEM,
        "Name=password", "Value={Password}", ENDITEM,
        "Name=session_id", "Value={SessionID}", ENDITEM,
        LAST);

    // 结束登录事务,自动判断成功或失败
    lr_end_transaction("Login", LR_AUTO);

    // 添加思考时间,模拟用户等待
    lr_think_time(3);

    // 其他业务操作示例(访问首页)
    lr_start_transaction("OpenHomePage");

    web_url("HomePage",
        "URL=http://example.com/home",
        "Resource=0",
        "RecContentType=text/html",
        "Mode=HTTP",
        LAST);

    lr_end_transaction("OpenHomePage", LR_AUTO);

    return 0;
}

说明

  • lr_start_transaction 和 lr_end_transaction 包裹关键业务,统计性能数据。
  • web_reg_save_param 用于捕获动态返回数据,确保会话连续。
  • {UserName} 和 {Password} 是参数化变量,需要在 VuGen 参数列表中配置对应的测试数据文件。
  • lr_think_time 模拟用户思考等待时间,避免压力测试不自然。
  • web_url 和 web_submit_data 分别用于GET和POST请求。