JMeter T24负载测试:动态会话ID处理及SV-06错误解决
解决T24负载测试中SV-06安全违规错误的动态参数配置指南
一、从登录响应中捕获动态值(会话ID、compScreen等)
给登录请求添加后置处理器来捕获这些动态生成的值,以下两种方法按需选择:
方法1:正则表达式提取器(适配任意响应格式)
- 在登录HTTP请求上右键 → 添加 → 后置处理器 → 正则表达式提取器
- 针对每个动态值单独配置提取器(比如会话ID和compScreen各建一个):
- 引用名称:自定义变量名,比如
T24_SESSION_ID、T24_COMP_SCREEN - 正则表达式:根据登录响应里的字段格式编写,例如:
- 会话ID:如果响应里是
sessionId: "abc123xyz",正则写为sessionId: "([^"]+)" - compScreen:如果响应里是
compScreen='DEF456',正则写为compScreen='([^']+)'
- 会话ID:如果响应里是
- 模板:填
$1$(表示取正则中第一个括号捕获的内容) - 匹配数字:填
1(取第一个匹配到的有效值) - 缺省值:设为
NOT_FOUND(方便后续排查未捕获到的情况)
- 引用名称:自定义变量名,比如
方法2:JSON提取器(响应为JSON时更高效)
如果登录响应是JSON结构,优先用这个:
- 在登录请求下添加 → 后置处理器 → JSON提取器
- 配置:
- 引用名称:
T24_SESSION_ID - JSON路径表达式:比如
$.sessionId(根据实际JSON层级调整) - 匹配数字:
1 - 缺省值:
NOT_FOUND
- 引用名称:
- 重复上述步骤捕获
compScreen,引用名称设为T24_COMP_SCREEN,JSON路径对应调整即可。
二、在后续请求中传递动态变量
把后续请求(尤其是Sign off和新登录请求)里的静态参数替换为捕获到的变量:
- 打开需要修改的HTTP请求的参数配置页
- 将原来的固定值(比如硬编码的会话ID、compScreen值)替换为
${T24_SESSION_ID}、${T24_COMP_SCREEN} - 检查所有依赖这些动态值的请求,确保变量引用完全覆盖,比如Sign off请求的会话参数必须和当前登录的会话ID一致
三、验证配置有效性
- 添加查看结果树组件,运行测试后检查:
- 登录请求的响应是否被正确提取到变量
- 后续请求的参数是否已替换为动态变量值
- 添加调试取样器,放在登录请求之后,运行后查看变量值,确认捕获成功
针对SV-06错误的额外注意事项
- Sign off事务失败本质是会话未正确销毁,导致后续登录复用无效会话触发安全校验。要确保Sign off请求严格使用当前线程的会话变量,执行后可以通过用户定义的变量或BeanShell后置处理器清理当前线程的会话变量,避免线程间会话污染。
- 负载测试中每个线程要保持独立会话,不要使用全局变量,确保每个用户的登录、操作、退出流程完全隔离。
内容的提问来源于stack exchange,提问作者Youssef hammad
相关产品推荐
相关产品推荐

