You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter桌面应用脚本创建:流量录制不全及步骤计时实现求助

JMeter桌面应用模拟:事务拆分与自定义计时实现

一、录制失效的原因与替代方案

JMeter的HTTP(S) Test Script Recorder仅能捕获HTTP/HTTPS流量,桌面应用若使用TCP、自定义协议或本地进程通信,就会出现录制不全。改用OS Process Sampler启动exe,结合JSR223 Sampler实现计时与动作触发,必要时集成AutoIt/SikuliX处理桌面UI交互。

二、事务控制器拆分

创建4个独立的Transaction Controller,分别命名:

  • 启动应用事务
  • 登录操作事务
  • 切换标签页事务
  • 登出操作事务

每个控制器单独统计对应步骤的整体耗时,同时用Groovy脚本实现精准的阶段计时。

三、Groovy计时脚本实现

1. 启动应用计时(「启动应用事务」内)

添加JSR223 Sampler,使用以下Groovy代码:

// 记录启动前时间戳
long T1 = System.currentTimeMillis()
vars.put("T1", String.valueOf(T1))

// 启动目标exe(替换为你的实际路径,可添加启动参数)
Process appProcess = new ProcessBuilder("C:\\YourApp\\target.exe").start()
appProcess.waitFor() // 等待应用启动完成

// 计算启动耗时
long T2 = System.currentTimeMillis()
long launchDuration = T2 - T1
vars.put("launchDuration", String.valueOf(launchDuration))
log.info("应用启动耗时:" + launchDuration + "ms")

2. 登录操作计时(「登录操作事务」内)

添加JSR223 Sampler,代码如下:

// 获取启动完成时间T2
long T2 = Long.parseLong(vars.get("T1")) + Long.parseLong(vars.get("launchDuration"))
long T3 = System.currentTimeMillis()

// 执行登录操作:
// - 若为HTTP请求,添加HTTP Request Sampler在此步骤前后
// - 若为桌面UI操作,调用AutoIt脚本(示例:Runtime.getRuntime().exec("C:\\AutoItScripts\\login.au3"))

// 计算登录耗时
long loginDuration = T3 - T2
vars.put("loginDuration", String.valueOf(loginDuration))
log.info("登录操作耗时:" + loginDuration + "ms")

3. 切换标签页与登出的计时逻辑

  • 切换标签页:在对应事务控制器内,先记录起始时间,执行UI交互(AutoIt/SikuliX脚本)或网络请求,再记录结束时间计算耗时
  • 登出操作:同理,完成登出动作后,用Groovy计算该步骤的耗时并存入变量

四、UI交互补充

若需模拟桌面点击、输入等操作,可:

  1. 用AutoIt编写对应操作的脚本(如登录输入账号密码、点击按钮)
  2. 在JMeter中用OS Process Sampler调用AutoIt脚本,放在JSR223计时的步骤之间

内容的提问来源于stack exchange,提问作者Ajith R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:52:39