LoadRunner是业界领先的性能测试工具,本文将详细介绍LoadRunner的功能特性、使用方法和最佳实践。

  1. LoadRunner概述

  1.1 主要组件

  ·Virtual User Generator (VuGen):录制和开发测试脚本

  · Controller:设计和执行测试场景

  · Analysis:分析测试结果

  · Load Generator:生成负载

  1.2 支持协议

  · Web (HTTP/HTML)

  · Web Services

  · Java

  · .NET

  · Oracle

  · SAP

  · Siebel

  · Citrix

  · 更多…

  2. 测试脚本开发

  2.1 录制脚本

 

 // LoadRunner C语言脚本示例
  Action()
  {
      // 初始化
      web_init();
      
      // 访问首页
      web_url("首页",
          "URL=http://example.com/",
          "Resource=0",
          "RecContentType=text/html",
          "Referer=",
          "Snapshot=t1.inf",
          "Mode=HTML",
          LAST);
          
      // 登录操作
      web_submit_form("登录",
          "Snapshot=t2.inf",
          ITEMDATA,
          "Name=username", "Value=testuser", ENDITEM,
          "Name=password", "Value=testpass", ENDITEM,
          LAST);
          
      return 0;
  }

 2.2 参数化

// 参数化示例
  Action()
  {
      // 使用参数化数据
      lr_save_string(lr_eval_string("{username}"), "param_username");
      lr_save_string(lr_eval_string("{password}"), "param_password");
      
      // 登录请求
      web_submit_form("登录",
          "Snapshot=t2.inf",
          ITEMDATA,
          "Name=username", "Value={param_username}", ENDITEM,
          "Name=password", "Value={param_password}", ENDITEM,
          LAST);
  }

2.3 关联

 // 关联示例
  Action()
  {
      // 获取动态值
      web_reg_save_param(
          "ParamName=session_id",
          "LB=session_id=",
          "RB=\"",
          "Search=Body",
          LAST);
          
      // 使用关联值
      web_submit_form("提交",
          "Snapshot=t3.inf",
          ITEMDATA,
          "Name=session_id", "Value={session_id}", ENDITEM,
          LAST);
  }

3. 场景设计

  3.1 负载模式

  目标场景:

  ·基于目标

  · 基于事务

  · 基于页面

  · 基于资源

  手动场景:

  · 用户组

  · 负载生成器

  · 运行设置

  · 调度设置

  3.2 场景配置

 // 场景配置示例
  Action()
  {
      // 设置思考时间
      lr_think_time(5);
      
      // 设置事务
      lr_start_transaction("登录事务");
      
      // 执行登录
      web_submit_form("登录",
          "Snapshot=t2.inf",
          ITEMDATA,
          "Name=username", "Value=testuser", ENDITEM,
          "Name=password", "Value=testpass", ENDITEM,
          LAST);
          
      lr_end_transaction("登录事务", LR_AUTO);
  }

 4. 监控设置

  4.1 系统监控

  Windows计数器

  ·CPU使用率

  · 内存使用率

  · 磁盘I/O

  · 网络I/O

  数据库监控

  · 连接数

  · 缓存命中率

  · 锁等待

  · 死锁

  4.2 应用监控

 // 监控点设置示例
  Action()
  {
      // 设置监控点
      lr_set_debug_message(LR_MSG_CLASS_EXTENDED_LOG, LR_SWITCH_ON);
      
      // 记录详细日志
      lr_log_message("开始执行测试");
      
      // 执行测试步骤
      web_url("首页",
          "URL=http://example.com/",
          "Resource=0",
          "RecContentType=text/html",
          "Referer=",
          "Snapshot=t1.inf",
          "Mode=HTML",
          LAST);
          
      lr_log_message("测试执行完成");
  }

5. 结果分析

  5.1 分析报告

  摘要报告:

  ·测试概要

  · 性能指标

  · 错误统计

  · 资源使用

  详细报告:

  · 响应时间分布

  · 吞吐量分析

  · 错误分析

  · 资源分析

  5.2 图表分析

// 自定义图表数据收集
  Action()
  {
      // 收集响应时间
      lr_save_timestamp("start_time", LAST);
      
      // 执行请求
      web_url("首页",
          "URL=http://example.com/",
          "Resource=0",
          "RecContentType=text/html",
          "Referer=",
          "Snapshot=t1.inf",
          "Mode=HTML",
          LAST);
          
      // 计算响应时间
      lr_save_timestamp("end_time", LAST);
      lr_output_message("响应时间: %s", lr_eval_string("{end_time} - {start_time}"));
  }

 6. 最佳实践

  6.1 脚本开发

  脚本结构

  ·初始化部分

  · 业务逻辑部分

  · 清理部分

  · 错误处理

  参数化策略

  · 数据准备

  · 参数选择

  · 更新策略

  · 验证机制

  6.2 场景设计

  负载策略

  · 渐进式增加

  · 阶梯式增加

  · 突发式增加

  · 持续负载

  监控策略

  · 关键指标监控

  · 资源监控

  · 错误监控

  · 性能监控

  6.3 结果分析

  分析方法

  · 趋势分析

  · 对比分析

  · 瓶颈分析

  · 优化建议

  报告生成

  · 报告模板

  · 数据筛选

  · 图表生成

  · 结论总结

  7. 常见问题解决

  7.1 脚本问题

  录制问题

  · 协议选择

  · 录制设置

  · 回放问题

  · 关联问题

  参数化问题

  · 数据准备

  · 参数设置

  · 更新策略

  · 验证机制

  7.2 场景问题

  负载问题

  · 负载生成

  · 资源限制

  · 网络问题

  · 超时设置

  监控问题

  · 计数器设置

  · 数据收集

  · 图表生成

  · 报告导出

  总结

  LoadRunner是一个功能强大的性能测试工具,通过合理使用其各项功能,可以有效进行Web应用的性能测试。在实际使用中,需要根据具体项目需求,选择合适的测试策略和方法,并注意测试过程中的各种细节,才能获得准确的测试结果。同时,要持续学习和实践,掌握更多高级特性和最佳实践,提高测试效率和质量

 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐