为你的应用选择正确协议
在性能测试中,正确选择协议是录制可回放、可扩展脚本的基础。错误的选择会导致脚本无法录制、回放失败或无法真实模拟用户行为。
协议选择原则
LoadRunner的VuGen支持数十种协议,包括了从传统C/S架构到现代微服务的各种应用。选择协议的根本原则是一致被测系统的技术栈和通信方式。
一个常见误区是认为Windows Sockets协议可以录制一切,工作在TCP/IP层。理论上是可行的,但录制的脚本可读性极差,几乎无法维护和参数化,且会包含大量无关的网络包数据。因此仅适用于自定义TCP/UDP通信的应用程序,或作为其他协议无法识别时的手段。
协议分类
VuGen的协议应用领域分类类别:
Web应用 (B/S):第一选择协议Web (HTTP/HTML),补充协议TruClient, Ajax TruClient, Flex,通过浏览器访问,使用HTTP/HTTPS(80/443端口)。现代单页应用(SPA)建议使用TruClient以更好处理异步请求。
数据库客户端:第一选择协议对应数据库协议 (如MS SQL Server, Oracle 2-Tier, ODBC),补充协议Windows Sockets,C/S结构,客户端直连数据库。需根据后端数据库类型选择。ODBC适用于根据ODBC连接的各类数据库。
中间件/ERP/CRM:第一选择协议专用协议 (如SAPGUI, Oracle NCA, PeopleSoft),补充协议Web (HTTP/HTML),SAP GUI客户端、Oracle EBS表单等。一般有专用的协议选项,能更好地模拟客户端对象操作。
邮件系统:第一选择协议Web (HTTP/HTML) 或 邮件协议 (SMTP, POP3, IMAP),通过浏览器收发邮件用HTTP;使用Outlook、Foxmail等客户端则需用邮件协议。
Web Service/API:第一选择协议Web Services,补充协议Web (HTTP/HTML),系统提供SOAP或RESTful API。选择Web Services协议可直接分析WSDL,生成函数调用,比纯HTTP脚本更易维护。
Java应用:第一选择协议Java over HTTP 或 RMI-Java ,纯Java编写的C/S应用。注意此类协议一般无法录制,需要手工编写Java代码。
自定义Socket应用:第一选择协议Windows Sockets ,自己根据Socket开发的应用程序。这是该协议的主要适用场景。
协议选择
当无法确定协议时,可以按以下优先级和方法进行:
询问开发和架构师:了解技术栈、通信框架和使用的端口。
使用协议分析向导:VuGen内置的Protocol Advisor工具。启动后操作应用程序,会分析流量并给出协议推荐列表。
网络抓包分析:使用Wireshark或Fiddler捕获应用程序的网络流量。观察使用的目的端口和协议特征是标准。
如,流量主要指向443端口且为TLS加密,则为HTTPS(属Web协议)。
看到1521端口和Oracle TNS协议头,则为Oracle 2-Tier协议。
经验试错:对于常见架构,可根据经验选择。如果录制失败或回放异常,按推荐顺序尝试其他可能协议。
多协议混合录制配置
现代应用往往是混合架构,如一个操作可能先后触发Web前端请求、中间件调用和数据库查询。此时需要多协议混合录制。
配置流程:
在VuGen创建新脚本时,选择Multiple Protocols。
勾选所有涉及的协议(如Web (HTTP/HTML)和Windows Sockets)。
录制时,VuGen会同时捕获所有选中协议类型的流量。
解决:
数据关联:协议A返回的Token需要用于协议B的请求。这需要熟练使用 web_reg_save_param 等关联函数,跨协议传递动态值。
脚本复杂度:混合脚本更复杂,调试时应分模块回放,先保证单个协议部分运行成功。
协议录制级别和方式
选定协议后,对于最常用的Web协议,还需选择录制级别:
HTML-based Script :根据用户动作(如点击)录制,生成易于理解的、根据上下文的函数。脚本较短,回放更接近真实浏览器,资源默认不录制。
URL-based Script:录制所有HTTP请求,包括每个图片、JS、CSS。脚本冗长,适用于使用JavaScript生成请求、非HTML应用(如Flex)或HTTPS网站。
总结
先分析,后录制:不要盲目开始。先用抓包工具或询问弄清楚应用架构。
单一优先,混合补充:尽量用单一协议;复杂业务才用多协议。
工具:充分利用Protocol Advisor和抓包工具进行辅助判断。
环境:保证录制和回放环境的网络、代理设置一致,避免因环境问题误判协议。