JMeter+Jenkins+AI自动化测试

一套“JMeter+Jenkins+AI”的自动化测试解决方案,核心是攻克JMeter脚本开发中的参数化、关联、断言三大核心技能,同时借助AI实现测试用例自动生成、脚本冗余优化、报错快速定位,以此打破重复劳作的困局,大幅提升测试效率和职场竞争力。

一、夯实JMeter核心技能(企业级常用方案)

这是自动化的基础,先掌握参数化、关联、断言的企业级实现方式,也是AI赋能的前提。

1. 多场景参数化:用户定义变量 + CSV Data Set Config

企业中常需测试不同用户/场景,用CSV管理测试数据,配合用户定义变量提升脚本灵活性,彻底摆脱硬编码。
实操步骤:
① 准备CSV测试数据文件(test_data.csv,放在JMeter脚本同级目录):

username,password,expected_code,scenario user01,123456,200,正常登录 user02,wrongpwd,401,密码错误 user03,,400,用户名为空 

② JMeter配置:

  • 右键「测试计划」→ 添加 → 配置元件 →「用户定义变量」:定义通用变量(如base_url=http://xxx.xxx.xxx:8080)。

右键「线程组」→ 添加 → 配置元件 →「CSV Data Set Config」:

配置项取值
文件名./test_data.csv(相对路径)
变量名称username,password,expected_code,scenario
忽略首行勾选
分隔符逗号
循环控制循环到文件结束

③ 引用参数:在HTTP请求中直接用${base_url}${username}${expected_code}替代硬编码值。

2. 接口关联:正则表达式提取器 + JSON Path Extractor

解决接口依赖问题(如登录token传给下单接口),企业中JSON Path适配JSON响应更精准,正则适配任意响应格式。
实操示例(提取登录token):
① 登录接口返回JSON:

{"code":200,"msg":"登录成功","data":{"token":"abc123def456","userId":1001}}

② 提取token(JSON Path Extractor):

右键「登录接口」→ 添加 → 后置处理器 →「JSON Path Extractor」:

配置项取值
引用名称token(自定义变量名)
JSON Path表达式$.data.token(精准提取token)
匹配数字1(取第一个匹配值)

③ 下单接口引用:在请求头添加Authorization: Bearer ${token}即可自动携带token。

3. 精准断言:响应断言 + JSR223断言

从“表面校验”到“业务逻辑校验”,避免人工核对结果的重复工作。
实操步骤:
① 基础校验(响应断言):

  • 右键「接口」→ 添加 → 断言 →「响应断言」:
    • 应用到:主样本;要测试的字段:响应代码、响应文本;
    • 测试模式:填写200(校验响应码)、登录成功(校验响应文本)。
      ② 复杂逻辑校验(JSR223断言,Groovy脚本):
      比如校验userId是大于1000的整数:
// 导入JSON解析工具import groovy.json.JsonSlurper def response = prev.getResponseDataAsString()def jsonData =newJsonSlurper().parseText(response)// 业务逻辑校验def userId = jsonData.data.userId if(!(userId instanceofInteger)|| userId <=1000){ AssertionResult.setFailure(true) AssertionResult.setFailureMessage("userId校验失败:值为${userId},要求>1000的整数")}

二、Jenkins集成JMeter,实现自动化运行

把JMeter脚本接入Jenkins,实现定时执行、报告自动生成,彻底摆脱“手动点运行”的重复劳作。

1. 环境准备
  • Jenkins安装「Performance Plugin」(生成测试报告)、「Git Plugin」(拉取脚本,可选);
  • 服务器配置JMETER_HOME环境变量,确保jmeter -v能正常执行。
2. Jenkins任务配置

① 新建自由风格项目,命名JMeter_Auto_Test
② 构建步骤(执行shell):

# 非GUI运行脚本,生成jtl结果和HTML报告 jmeter -n -t ${WORKSPACE}/test_script.jmx -l ${WORKSPACE}/test_result.jtl -e -o ${WORKSPACE}/test_report 

③ 构建后操作:添加「Publish Performance test result report」,报告文件填**/*.jtl,勾选“Show Graphs”;
④ 定时构建(可选):添加cron表达式(如0 2 * * *,每天凌晨2点执行)。

三、AI赋能:效率翻倍的核心环节

利用AI(GPT-4、豆包、文心一言等)替代人工完成“写脚本、改脚本、排错”,把1小时的工作量压缩到5分钟。

1. AI自动生成JMeter测试用例(基于接口文档)

核心:精准提示词 = AI高效输出
给AI的提示词模板(直接复制使用):

请基于以下接口文档生成完整的JMeter脚本(.jmx格式),要求: 1. 接口信息: - 登录接口:POST http://xxx.xxx.xxx:8080/api/login - 请求参数:{"username":"string","password":"string"} - 响应:{"code":int,"msg":"string","data":{"token":"string","userId":int}} - 下单接口:POST http://xxx.xxx.xxx:8080/api/order/create - 请求头:Authorization: Bearer {token} - 请求参数:{"userId":int,"goodsId":int,"num":int} 2. 脚本要求: - 用CSV Data Set Config实现多场景参数化(包含正常/异常场景); - 实现登录token与下单接口的关联; - 添加响应断言(校验code)+ JSR223断言(校验orderId非空); - 用用户定义变量管理base_url。 3. 输出:完整的.jmx脚本代码,标注关键配置说明。 

效果:AI直接生成可运行的脚本,你只需微调CSV路径、base_url即可使用。

2. AI优化冗余的JMeter脚本

提示词模板

请优化以下JMeter脚本(粘贴脚本内容),要求: 1. 删除冗余元件(重复的CSV配置、未使用的变量、多余的取样器); 2. 合并重复逻辑(如多个相同HTTP请求改为循环控制器+参数化); 3. 简化复杂但不必要的JSR223脚本; 4. 标注优化点和原因,输出完整优化后的脚本。 

AI优化方向:比如把3个重复的登录请求合并为1个,用CSV参数化不同场景;删除未使用的temp_var变量等。

3. AI快速定位JMeter脚本报错

提示词模板(以token无效为例)

我的JMeter脚本报错:下单接口返回401(token无效),日志显示“JSON Path Extractor提取token失败”。 关键配置: 1. 登录接口JSON Path Extractor:引用名称token,表达式$.token; 2. 登录接口响应:{"code":200,"data":{"token":"abc123"}}; 3. 下单接口请求头:Authorization: Bearer ${token}。 请分析报错原因,给出具体修改方案(标注修改位置和内容)。 

AI输出结果

  • 原因:JSON Path表达式错误,正确应为$.data.token,导致token提取为空;
  • 解决方案:修改登录接口的JSON Path Extractor表达式为$.data.token

总结

  1. 基础核心:掌握“CSV+用户定义变量”参数化、“JSON Path/正则”关联、“响应断言+JSR223断言”校验,是自动化的基石,也是AI赋能的前提。
  2. 自动化落地:Jenkins集成JMeter实现脚本定时运行、报告自动生成,摆脱手动操作的重复劳作。
  3. AI核心价值:通过精准提示词让AI生成脚本、优化冗余、定位报错,把“写/改/排错”的时间从小时级压缩到分钟级,实现测试效率10倍提升。

Read more

Ubuntu 系统安装 OpenClaw 并接入飞书记录

Ubuntu 系统安装 OpenClaw 并接入飞书记录

飞书新建机器人 打开 https://open.feishu.cn/app ,根据文末第一个参考文档创建飞书机器人,开通所需权限,配置事件订阅方式为长连接,发布,并记录 AppID 和 AppSecret。 安装 OpenClaw 执行以下命令安装: curl-fsSL https://openclaw.ai/install.sh |bash 安装过程中根据提示(或者自行执行 openclaw onboard 运行向导)接入自己的 api,输入中转 url 和 api key(sk-xxx);最新版支持接入飞书渠道,根据提提示输入刚才的 AppID 和 AppSecret。 把 openclaw 加到环境变量(在 .bashrc 添加): exportPATH=

By Ne0inhk
【Linux网络系列】从底层寻址到应用穿透:深度剖析 ARP、ICMP 协议与 FRP 内网穿透、内网打洞、代理机制

【Linux网络系列】从底层寻址到应用穿透:深度剖析 ARP、ICMP 协议与 FRP 内网穿透、内网打洞、代理机制

🔥 本文专栏:Linux网络 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录:我们无法预知每一个选择的对错,但我们可以赋予每一个选择正确的意义。 引入 那么在之前的内容中,我已经介绍了应用层协议、传输层协议以及网络层协议。而这篇博客将正式进入 TCP/IP 体系结构中的最后一层——数据链路层协议。 我们知道,当一个 IP 数据包从当前主机发送出去之后,接下来便会进入外部网络,也就是运营商所构成的路由器网络。随后,该数据包会在运营商的多个路由器之间被逐跳转发,最终到达目标主机。 对于网络中间的路由器节点来说,当其接收到一个数据帧时,首先会对数据帧的帧头和帧尾进行校验(例如通过 FCS 等机制验证帧的完整性)。如果校验没有问题,随后才会将其中的 IP 数据包递交给网络层协议栈进行处理。具体来说,就是从 IP 报文中提取目标 IP 地址,并根据该地址查询本地的路由表,从而确定下一跳设备的 IP 地址以及对应的出口接口。 在获取到下一跳设备的 IP 地址以及出口接口之后,路由器会将该 IP

By Ne0inhk
七、Linux Shell 与脚本基础

七、Linux Shell 与脚本基础

我们这次讲解Shell的核心概念,以及如何创建、配置和执行脚本,这是从手动命令到自动化运维的关键 作者:IvanCodes 日期:2025年8月7日 专栏:Linux教程 思维导图 一、Shell 简介 1. Shell 的定义与作用 Shell是命令行解释器,作为用户与Linux内核交互的接口 它的工作流程: 1.接收用户输入的命令 (如 ls) 2.解释命令 3.调用内核执行 4.返回执行结果给用户 2. 常见的 Shell 类型 bash (Bourne Again SHell):Linux默认Shell,功能强大,兼容sh sh (Bourne Shell):早期经典的Unix Shell,注重高兼容性 zsh (Z Shell)

By Ne0inhk
【Linux】进程聊天室:管道传纸条、共享内存开黑,内核如何当裁判?(进程间通信)

【Linux】进程聊天室:管道传纸条、共享内存开黑,内核如何当裁判?(进程间通信)

目录 一、进程间通信介绍 1. 什么是进程间通信 2. 进程间通信的发展和分类(简单介绍) 3. 进程间通信的目的 二、管道 1. 什么是管道? 2. 匿名管道 (1)核心特点 (2)创建匿名管道 (3)fork共享管道原理 (4)内核角度 - 管道本质 (5)管道代码样例 (6)管道文件的特点 (7)基于匿名管道 --- 进程池  ① Task.hpp ② ProcessPool.hpp ③ Main.cc ④ Makefile ⑤ BUG --- 文件描述符的继承和泄漏 3.命名管道 (1)创建命名管道 ① 命令行创建 ② 系统调用函数

By Ne0inhk