本文将通过在示例应用程序 PhoneNumberMonitoring.com 上的实际测试场景,比较 LoadRunnerLoadView。测试流程很简单:

启动应用程序 → 登录 → 导航至某个标签页 → 登出

然而,这一流程在 LoadRunner 和 LoadView 中的实现方式却截然不同——尤其是在 设置工作量、灵活性、可扩展性以及真实世界模拟的准确性方面。

使用 LoadRunner:协议级强大功能但复杂度高

LoadRunner 提供了使用 VuGen(虚拟用户生成器)深入协议级控制,支持 HTTP/HTML、SAP、Web 服务、TruClient 等协议。虽然这为企业级测试提供了灵活性,但即使是配置一个基础流程,所需的工作量也非常大。

在本次测试中,我们使用了 Web HTTP/HTML 协议,它适用于不需要完整浏览器渲染的网页应用。

我们在 LoadRunner 中做了什么

  • 协议选择:选择 HTTP/HTML;但选择正确的录制模式(基于 HTML 或 URL)是一项关键决策,通常需要反复试验以确保脚本生成正确。
  • 使用 VuGen 录制:配置端口映射(如截图所示)并选择捕获级别(例如 WinInet 或 Socket)——每种都有其特性。
  • 关联设置:使用 web_reg_save_param_ex 和 JSON 路径手动提取动态会话数据。如果关联失败,测试也会失败——没有自动建议或 UI 提示。
  • 参数化:使用 LoadRunner 的数据参数化工具替换硬编码的值。
  • 思考时间与事务:用 lr_start_transaction() 包裹关键操作,并添加 lr_think_time() 模拟用户延迟。
  • 会话处理:手动管理 Cookie 和自定义请求头。
  • 高级逻辑:使用 C 语言添加 if-else、循环和自定义代码控制流程。


LoadRunner 的主要痛点与限制

尽管 LoadRunner 功能强大,但它存在 多个使用难点录制复杂性

  • 选择 基于 HTML 或 URL 的录制方式 往往影响脚本质量。
  • 选择 WinInet 或 Socket 级别的捕获 会让初学者感到困惑——某些应用只能在特定模式下正确响应。

日志排错与调试

  • LoadRunner 日志是 协议特定且常常难以理解——HTTP 日志、XML 转储和回放日志分散在多个标签页,实时分析困难。
  • 无法实时回放用户会话——使得脚本回放出错时难以可视化排查问题。

协议相关的关联

  • 每种协议(SAP、Oracle、HTTP 等)都需要 不同的关联方法

HTTP/HTML 协议

web_reg_save_param、web_reg_save_param_ex、web_reg_save_param_json、web_reg_save_param_xpath(HTTP/HTML、Web 服务)、web_reg_save_param_attrib 等

SAP GUI 协议

sapgui_get_text、sapgui_select_active_window、sapgui_set_property、sapgui_get_property、sapgui_status_bar_set_text 等

Oracle NCA 协议

nca_set_window、nca_set_menu_item、nca_edit_set、nca_button_press、nca_get_text 等

Web 服务协议

web_custom_request、web_service_call 等

  • 没有统一的关联框架——即使是 TruClient 也完全不同,并且不共享 HTTP 协议的关联逻辑。

性能与可用性

  • TruClient 脚本 模拟浏览器行为,但系统资源消耗大,执行时间长。
  • 可视化流程编辑器功能有限,调试失败时需在多个日志窗口和截图之间切换。

使用 LoadRunner 进行分布式负载测试的设置

  • LoadRunner 需要 多个组件:VuGen 用于脚本编写,Controller 用于编排,Load Generators(LGs)用于分发。
  • 需要 手动设置,包括防火墙规则、端口开放和网络配置。
  • 扩展性与执行编排 增加了复杂性——不适合需要快速迭代的敏捷团队。

LoadRunner 适用于传统系统,但 不适合现代网页测试或敏捷开发

使用 LoadView:简化的真实浏览器负载测试

LoadView 提供一种现代化方法,具有 云原生、基于浏览器的负载测试。它可模拟 真实用户在 Chrome 或 Edge 中的行为,不仅验证后端响应,还验证 真实前端性能(UX 指标)

在 PhoneNumberMonitoring.com 上进行相同流程测试时,我们使用 EveryStep Recorder不到 5 分钟就完成了测试设置——无需编码、无需配置、无需插件。

为什么使用 LoadView 变得轻松

  • 像真实用户一样录制:只需点击、输入、滚动——就像真实用户操作一样。

  • 无需关联:LoadView 自动捕获动态值(令牌、会话)。
  • 支持完整 C# 脚本:对高级用户,LoadView 提供完整的 C# 编程能力,支持 循环、条件、变量声明等,自定义流程非常灵活。

示例:在内容验证失败时中止脚本执行

  • 预设 Cookie 和请求头:可在执行前设置请求头、认证信息、Cookie 和用户代理,更准确地模拟真实场景。
  • 新手友好,专家可控:简单录制即可开始使用,高级测试人员也可按需扩展功能,是简洁与强大兼具的稀有工具。
  • 完整浏览器渲染:支持 SPA、AJAX、WebSockets——你看到的就是你测试的。
  • 地理分布测试:可从 40+ 全球区域中选择模拟用户位置。

  • 实时会话回放:你可以 逐步观看测试过程,包括页面渲染与输入操作——这是 LoadRunner 无法做到的。
  • 前端性能指标:直接从报告中查看 LCP(最大内容绘制时间)、FCP(首次内容绘制)和 TTI(可交互时间)。

  • 可视化流程编辑器:可视化修改任意步骤——无需编写代码或查看日志。

功能对比:LoadRunner vs LoadView

功能 LoadRunner LoadView
录制选项 多种捕获级别(WinInet、Socket)、协议选择 一键浏览器录制
是否需要脚本 是 – 需要高级脚本、参数化、关联 否 – 无需脚本即可录制与运行
动态值处理 手动 – 按协议处理 自动关联
真实浏览器模拟 仅通过 TruClient(耗资源、慢) 原生 Chrome/Edge
前端性能指标 TruClient 支持有限 全面支持(FCP、LCP、TTI)
实时会话回放 不支持 支持 — 可回放
测试创建时间 45–90 分钟 5–10 分钟
日志分析 协议日志复杂,需手动关联 基于 UI 的步骤日志与截图
协议处理方式 根据应用类型不同(HTML、SAP、Oracle) 统一录制所有网页流程
分布式测试 需要生成器与控制器 内置云执行
技能要求 高 – 需脚本编写与调试 低 – 商业用户亦可测试
成本与授权 昂贵的企业授权 透明、按使用计费

实际应用场景影响

使用场景 LoadRunner LoadView
电商结账 需为异步令牌与 JS 延迟编写脚本 真实浏览器流程,验证用户体验
银行
仪表板
需深入关联与令牌跟踪 轻松模拟登录与导航到安全仪表板
地理负载模拟 每个地区需配置 LG UI 内简便地理选择器
敏捷迭代测试 修改与重跑测试较慢 创建快速,易于复用
客户演示与 POC 需设置并协调 录制并即时分享测试结果

最终总结

选择 LoadRunner 的理由:

  • 你需要深入的协议级测试
  • 你在使用传统应用(SAP、Oracle、主机)
  • 你的团队技术能力强,拥有独立基础设施

选择 LoadView 的理由:

  • 你想测试 现代、基于浏览器的应用
  • 你重视 前端性能 与用户体验
  • 你需要 更快、更简单的测试流程并支持真实浏览器