LoadRunner的Virtual User Generator (VuGen) 是主要脚本组件,通过模拟各种通信协议来还原用户和系统之间的交互行为,从而完成性能测试脚本的编写。
以下是截至2025年,VuGen支持的主要协议类别和代表性协议清单,并附带了详细说明,来帮助您为不同的测试场景选择合适的协议。
VuGen支持的主要协议清单
Web和应用服务协议类别
Web - HTTP/HTML
💡 Web Services (SOAP/REST)
💡 TruClient (Web/Mobile)
💡 DevWeb
💡 AJAX, Flex, WebSocket
适用于所有基于浏览器或API交互的Web应用、单页应用(SPA)及微服务架构。其中,TruClient协议通过控制真实浏览器(如Chrome、Edge)来录制和回放,能高度还原前端渲染、JavaScript执行等复杂用户交互。DevWeb协议则为 Web 协议测试提供了轻量级、跨平台的解决方案。
企业级和ERP系统协议类别
💡 SAP GUI / SAP - Web
💡 Oracle NCA /Oracle - Web / Oracle 2-Tier
💡 Siebel Web
💡 PeopleSoft
专门用于测试 SAP、Oracle 等主流ERP系统。不同协议对应不同的客户端和技术栈,例如,SAP GUI用于录制经典的Windows客户端操作,而SAP - Web则用于基于浏览器的访问。
数据库和服务协议类别
💡 ODBC
💡 JDBC
💡 Tuxedo
💡 CORBA / COM/DCOM
用于直接测试数据库性能(ODBC, JDBC)或中间件事务(Tuxedo)。
远程访问和虚拟化协议类别
💡 Citrix ICA
💡 RDP (Remote Desktop Protocol)
用于测试虚拟桌面和远程应用交付的性能,模拟用户通过Citrix或微软远程桌面访问应用的行为。
消息和物联网(IoT)协议类别
💡 MQTT
💡 CoAP (受限应用协议)
💡 AMQP, JMS
适用于物联网(IoT)场景、消息队列系统。MQTT和CoAP都是轻量级的消息传输协议,专为网络带宽和电源资源受限的设备设计。
通用和底层协议协议类别
💡 C Vuser
💡 Windows Sockets
💡 DNS, FTP, SMTP, POP3, IMAP
当没有特定协议可用时,C Vuser协议提供了极大的灵活性,允许你用C语言库函数编写自定义逻辑。Windows Sockets则用于基于底层Socket通信的应用程序测试。
重要协议深度解析和技术选型建议
了解协议清单后,如何根据自身项目特点进行选择和组合很重要。
现代Web应用测试的首选:TruClient和DevWeb
对于大量使用JavaScript框架(如React, Vue.js, Angular)的单页应用(SPA),TruClient 协议是最佳选择。它能像真实用户一样等待页面元素加载完成,自动处理动态内容,并提供可视化的脚本编辑界面,大大降低了测试现代Web应用的复杂度。
而DevWeb协议则是一个轻量级的替代方案,特别适用于 HTTP 级别和 WebSocket 流量的测试,并且支持在 Windows、Linux 和 macOS 上运行,适合在跨平台环境中进行高效的接口级性能测试。
企业级主要系统的专用协议
在测试SAP、Oracle等大型ERP系统时,务必根据其访问方式选择对应的专用协议。例如,通过胖客户端访问就用SAP GUI协议,通过浏览器访问则用SAP-Web协议。这些协议能深度识别应用内部对象,保证脚本的稳定和准确性。
应对混合架构和新兴技术
当前系统架构往往是微服务、容器化和多协议并存的混合模式。面对这种情况,VuGen的多协议脚本(Multi-Protocol Script) 功能允许在一个脚本中组合使用多种协议(如 HTTP、WebSocket、MQTT),从而精准模拟跨系统的完整业务流。
此外,VuGen 也在持续集成对新技术的支持,例如 支持 .NET 6 的 .NET+ 协议,以及专为金融领域ISO-8583标准 交易监控设计的Finance ISO协议。
协议选择和脚本开发
如何开始:在VuGen中创建新脚本时,会打开协议选择向导。如果不确定,可以先用 Web - HTTP/HTML 协议尝试录制主要业务流程,再根据捕获的请求类型判断是否需要引入其他协议。
脚本开发:选定协议后,VuGen 会提供丰富的函数库(如HTTP协议下的 web_url, web_submit_data)来构建脚本。你通常需要配合使用参数化、关联(如 web_reg_save_param)和检查点等技术来增强脚本的健壮性和真实性。
VuGen脚本通常包含 vuser_init、Action 和 vuser_end 三部分。将登录等初始化操作放在 Init,主要业务放在 Action(可多次迭代),退出操作放在 End,这有助于清晰地组织测试逻辑。