LoadRunner进行混合场景压测就是在一个场景中同时运行不同协议的脚本,比如Web(HTTP/HTML)和Web Services(SOAP/REST)以更真实地模拟生产流量。
1. 准备
已经用VuGen录好或编写好两个独立脚本,如:
Web_Script.usr - 根据HTTP/HTML协议录制的页面浏览脚本
WS_Script.usr - 根据Web Services 协议或Web HTTP 调用REST/SOAP的接口脚本
确定脚本可在 VuGen 中正常回放,且关联、参数化已完成。
2. 创建混合场景
打开 Controller,选择Manual Scenario手动场景。
混合场景建议用手动方式,以便独立控制每个脚本组的Vuser数量、负载生成器和运行时设置。
添加脚本组
在Design标签页,找到Scenario Groups窗格,点击Add Group(或右键空白处 Add Group)。
分别添加 Web_Script.usr 和 WS_Script.usr。
每个脚本会作为一个独立的Group显示在列表中。
设置各组的Vuser数量
在Quantity列直接输入每个脚本的并发用户数。
也可以切换到百分比方式:勾选Use Percentage of Total Vusers,然后为每个组分配百分比,总Vuser数由全局设置决定。
3. 配置负载生成器
在Group的Load Generators 列,指定该组脚本运行的负载机。
如果只有本机,则选择localhost;有多台负载机时,保证网络可达并已安装Load Generator服务。
不同协议对负载机的要求相同,只要安装了完整LoadRunner组件即可。
4. 调整运行时设置(Run-time Settings)
每个脚本组都有自己的运行时设置,需要单独配置:
右键点击某个 Group - Details - Run-time Settings,或选中Group后点工具栏上的齿轮图标。
要点:
Think Time:页面浏览脚本可保留录制时的思考时间并回放;接口脚本一般设为忽略思考时间Replay as recorded 或 Ignore think time 视情况而定。
Pacing:控制每次迭代之间的间隔。可通过 Pacing 配合 Vuser 数来调节各个脚本的吞吐量比例。
Log:调试时启用扩展日志,压测时建议仅开启错误日志。
网络仿真:如需要模拟不同带宽,可在此配置,两组可不同。
超时设置:Web Services 脚本可能需要更大的请求超时,单独在该脚本的运行时设置中调整。
5. 设定场景执行计划(Schedule)
混合场景推荐使用 Scenario Schedule(按场景计划),让所有 Vuser 一起按全局时间表启动和停止:
在 Design 标签页中,找到 Schedule 区域(一般靠右)。
选择 Scenario 方式(而不是 Group)。
设置:
Ramp Up:逐步加载所有 Vuser,如每 15 秒启动 5 个。
Duration:所有 Vuser 不断运行的时间,如 10 分钟。
Ramp Down:逐步停止。
如果确实需要让两组 Vuser 有不同的启动时间如先启动接口用户,再启动页面用户,可切换为 Group Schedule,然后为每个Group独立定义Ramp Up/Down及Duration。
6. 运行和监控
切换到 Run 标签页,点击Start Scenario。
观察运行图:控制器会同时显示不同组的 Vuser 状态、事务响应时间、吞吐量等。
可添加自定义监控:
跨脚本的事务混合统计,可在 Analysis 中合并图表。
在 Run 视图中可按 Group 挑选数据,方便快速定位问题。
7. 精确控制混合比例
要模拟真实流量中 Web 和 Web Service 请求的 TPS 比例(如 70% 页面请求 + 30% 接口请求),可以通过组合 Vuser 数量、Pacing 和迭代次数来实现:
调整 Pacing 使得接口脚本平均每秒发出更多请求,从而用更少的 Vuser 达到所需 TPS。
压测前先做一轮校准:单独运行每个脚本,测量单 Vuser 的平均 TPS,然后按比例反推所需的 Vuser 数量。
8. 常见问题
协议冲突:如果两个脚本都用到 HTTP,且录制时浏览器或 API 客户端的 User-Agent、Keep-Alive 等设置不同,回放可能互相干扰。建议分别在运行时设置中模拟对应的浏览器/客户端头信息。
IP 欺骗:如果启用了 IP 欺骗,所有脚本组会共享同一个 IP 池,除非各自指定不同的生成器或专家设置,一般不影响混合压测。
日志分析:运行结束后,在 Analysis 中可通过Group Name方面拆分报告,查看 Web 和 Web Services 各自的表现。
在LoadRunner Controller中同时运行Web和Web Services脚本本质上就是多协议混合场景:
用手动场景添加不同 .usr脚本的组;
分别配置各组的运行时设置(思考时间、Pacing 等);
通过全局或分组计划统一调度;
结合 Vuser 数量和 Pacing 精确模拟混合TPS比例。