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交互补充
若需模拟桌面点击、输入等操作,可:
- 用AutoIt编写对应操作的脚本(如登录输入账号密码、点击按钮)
- 在JMeter中用OS Process Sampler调用AutoIt脚本,放在JSR223计时的步骤之间
内容的提问来源于stack exchange,提问作者Ajith R
相关产品推荐
相关产品推荐

