如何构建含10个各执不同流程的虚拟用户的Web应用压测脚本?
多差异化流程压测的优化方案
你提到的“10个单用户线程组各对应不同流程”的方案绝非最优,后续调整用户数需要逐个修改线程组,维护成本极高。以下是几种更易维护的实现思路:
1. 单线程组 + CSV参数化 + 逻辑控制器
这是最常用的方案,核心是用参数化给每个线程分配不同流程:
- 准备CSV配置文件,每行记录一个线程的流程标识(如
flow1、flow2)及对应流程所需的参数(如接口ID、操作内容等) - 创建单个线程组,设置总用户数(比如初始10个,后续直接改这里即可)
- 添加
CSV Data Set Config组件,读取上述CSV文件,给每个线程分配唯一的流程标识变量 - 用
Switch Controller或If Controller实现分支逻辑:- 若用
Switch Controller,将其条件设为${flow_type}(CSV中定义的流程标识变量),然后给每个流程创建对应的子节点(包含该流程的所有请求) - 若用
If Controller,则为每个流程设置独立的判断条件(如${__jexl3(${flow_type} == 'flow1',)}),每个条件下挂载对应流程的请求
- 若用
2. 测试片段 + 模块控制器 + 参数化
适合流程复用场景,把每个流程做成独立模块:
- 将每个差异化流程封装成
Test Fragment(测试片段),每个片段包含该流程的完整请求逻辑 - 创建单个线程组,通过CSV或用户定义变量给每个线程分配目标测试片段的名称
- 添加
Module Controller,将其目标设置为变量(如${target_fragment}),这样每个线程会根据变量调用对应的测试片段 - 后续调整用户数直接修改线程组的线程数,修改流程只需编辑对应测试片段,无需改动线程组结构
3. 吞吐量控制器分配流量比例
如果不需要严格固定每个流程的用户数,而是按比例分配负载:
- 创建单个线程组,设置总用户数(如10个)
- 给每个流程创建一个
Throughput Controller,选择“Total Executions”模式,设置该流程的执行次数(如每个流程设为1,总10次),或选择“Percent Executions”模式设置比例(如每个流程10%) - 每个吞吐量控制器下挂载对应流程的请求
- 后续调整总用户数时,只需修改线程组的线程数,各流程的执行量会自动按比例或设定次数分配
以上方案均只需维护单个线程组,用户数调整一步到位,流程逻辑集中管理,大幅降低维护成本。
内容的提问来源于stack exchange,提问作者JustNatural
相关产品推荐
相关产品推荐

