当前位置: 首页 > news >正文

Jmeter自动化实战

一、前言

由于系统业务流程很复杂,在不同的阶段需要不同的数据,且数据无法重复使用,每次造新的数据特别繁琐,故想着能不能使用jmeter一键造数据

二、创建录制模板

可参考:jmeter录制接口
首先创建一个录制模板
因为会有各种请求头,cookies,签名,认证信息等原因,导致手动复制粘贴的的全面导致接口调用失败,当然如果你对系统特别熟悉,可以忽略这个步骤

录制后可以复制请求到线程组中,这样就可以直接复制
在这里插入图片描述

三、 新增线程组

在这里插入图片描述
修改线程组名称
在这里插入图片描述

2.1给线程组添加用户定义变量

在这里插入图片描述
定义多个用户定义变量,给不同的模块使用
在这里插入图片描述

2.2新增查看结果树

在这里插入图片描述

2.3新增测试片段

在这里插入图片描述
在这里插入图片描述
上图测试片段,按照不同的模块创建不同的片段,因为执行的时候,我们只需要把数据流转到某个阶段就行了, 创建测试片段,可以对不同模块的接口统一管理,不需要禁用这个测试片段就行了
在这里插入图片描述

四、新增http请求

在测试片段下新增http请求

在这里插入图片描述

五、对http请求的处理

对http请求会遇到以下这些问题

  • 登入
  • 添加请求头,认证信息,签名,随机数等
  • 请求参数加密
  • 响应结果解析并应用到下一次请求
  • 请求的执行顺序
  • 响应断言

5.1登入

登入http请求
在这里插入图片描述

添加前置处理器JSR223 PreProcessor
用于获取时间戳,随机数,生成签名
在这里插入图片描述
在这里插入图片描述
下面含有md5加密,可参考Jmeter使用js对入参使用MD5加密

load("md5.js")
// 时间戳
var timestamp = new Date().getTime();
// 随机数
var nonce = Math.round(Math.random() * 100000);
// 生成签名
var signature =  hex_md5(timestamp + "=" + nonce + "function");
vars.put("timestamp", timestamp);
vars.put("nonce", nonce);
vars.put("signature", signature);

添加http请求头
在这里插入图片描述
在这里插入图片描述
添加JSON提取器获取登入后的token信息

解析返回参数,可参考Jmeter对请求结果进行解析

通过下面的json提取器可以获取到登入后返回的token,这个token是一个变量,可以用于下一次请求
在这里插入图片描述
在查询接口的请求头中使用token
在这里插入图片描述

5.2请求参数加密

可参考Jmeter使用js对入参使用MD5加密

5.3响应结果解析并应用到下一次请求

可参考:Jmeter对请求结果进行解析

5.4请求的执行顺序

如何保证请求的执行顺序呢?

http请求是可以拖动移动顺序的,展示的顺序,就是执行的先后顺序,建议命名的时候加上需要,这样在多个接口同事执行的时候能够快速的定位到时哪一个接口
在这里插入图片描述

5.5响应断言

在这里插入图片描述

六、整理流程展示

在这里插入图片描述

七、特殊场景处理

场景1:附件上传

参考:jmeter附件上传

场景2:当前接口需要需要上一个接口的返回值

第一个接口,当创建一个项目后,返回一个项目id
第二个接口,需要获取项目id作为入参去提交项目

创建接口
创建入参
在这里插入图片描述
JSR233 获取请求头信息
在这里插入图片描述
设置请求头
在这里插入图片描述
JSON提取器,获取创建成功的项目id
在这里插入图片描述

延迟3s,保证接口调用的先后顺序
在这里插入图片描述
提交接口

在这里插入图片描述

场景3:从form表单提取参数,作为下一个接口的入参

前一个接口的JSR223 后置处理器

// 获取响应数据
var response = prev.getResponseDataAsString();
// 解析 JSON 数据
var data = JSON.parse(response);
// 获取变量(这是个对象,不是一个字符串)
var designPeoples = data.data.designPeoples;
// 项目名称
var itemName = data.data.item.name;
var itemId = data.data.item.id;
// 使用 for 循环遍历数组并修改每个元素
for (var i = 0; i < designPeoples.length; i++) {designPeoples[i].linkusername = "诸葛亮";designPeoples[i].linkway = "13888888888";
}
vars.put("itemId", itemId);
vars.put("itemName", itemName);
// 应为是一个对象,使用JSON.stringify把对象转化为字符串,在使用的时候应该为 ${designPeoples} 而不是 '${designPeoples}' 不需要引号
vars.put("designPeoples", JSON.stringify(designPeoples));

后一个接口的入参

{"item": {"id": "${itemId}","mainid": "${mainId}","name": "${itemName}","type": "项目"},"designPeoples": ${designPeoples}
}

相关文章:

Jmeter自动化实战

一、前言 由于系统业务流程很复杂,在不同的阶段需要不同的数据,且数据无法重复使用,每次造新的数据特别繁琐,故想着能不能使用jmeter一键造数据 二、创建录制模板 可参考:jmeter录制接口 首先创建一个录制模板 因为会有各种请求头,cookies,签名,认证信息等原因,导致手动复制…...

构建高效的Java SOCKS5代理:从零开始的网络转发实现

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

spring-boot(绑定配置文件及应用)

配置文件 SpringBoot使用一个全局的配置文件&#xff0c;配置文件名是固定的&#xff1b; application.properties application.yml 配置文件的作用&#xff1a;修改SpringBoot自动配置的默认值&#xff1b;SpringBoot在底层都给我们自动配置好&#xff1b; YAML&#x…...

Mac OS 搭建MySQL开发环境

Mac OS 搭建MySQL开发环境 文章目录 Mac OS 搭建MySQL开发环境一、安装Mysql&#xff1a;二、配置环境变量三、安装Navicat 本地环境&#xff1a; Mac OS Sequoia15.0.1&#xff08;M3 Max) 目标状态&#xff1a; 下载安装Mysql&#xff0c;配置相关环境。 一、安装Mysql&…...

windows下安装python库wordCloud报错

换电脑安装wordcloud半天安装失败&#xff0c;记录一下遇到的坑&#xff0c;也给大家节省点时间。 方法1&#xff1a; 错误呢就是下面这个&#xff0c;说没c编译器&#xff0c;要不就去他给的地址上安装一下&#xff0c;我安装了一下好像没什么用&#xff0c;也没太敢勾选&am…...

Spring IOC 自动装配(注入)

注解⽅式注⼊ Bean 对于 bean 的注⼊&#xff0c;除了使⽤ xml 配置以外&#xff0c;可以使⽤注解配置。注解的配置&#xff0c;可以简化配置⽂件&#xff0c; 提⾼开发的速度&#xff0c;使程序看上去更简洁。对于注解的解释&#xff0c;Spring对于注解有专⻔的解释器&#…...

Go使用SIMD指令——以string转为整数为例

本文Go使用SIMD指令采用如下方式&#xff1a; C编写对应的程序clang编译成汇编c2goasm将上述生成的汇编转为go的汇编 准备工具 clang。直接使用apt-get install clang安装即可c2goasm。 go get -u github.com/minio/c2goasm来进行安装asm2plan9s。 go get -u github.com/min…...

分享资源合集

为了方便临时使用到的一些软件&#xff0c;提供百度网盘下载。 通过百度网盘分享的文件&#xff1a;WinHex 21.2 SR-2_x86_x64.exe 链接&#xff1a;https://pan.baidu.com/s/19RAnHl_VcKUcIKADU9z9Gw?pwd6666 提取码&#xff1a;6666 通过百度网盘分享的文件&#xff1a;Zi…...

C#/WinForm 鼠标穿透自定义区域截图(后续实现录屏)

效果 窗体截图录屏 git地址&#xff1a;https://gitee.com/feng-cai/screenshot-recording...

基于SpringBoot的“社区维修平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“社区维修平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 管理员登录页面 住户管理页面 社区公关管理页面 维…...

图书管理系统汇报

【1A536】图书管理系统汇报 项目介绍1.用户登录注册功能1. 1用户角色管理2.图书管理功能2.1 添加图书2.2 编辑图书2.3 删除图书 3.图书搜索和筛选3.1 图书搜索3.2 图书筛选 4.图书借阅、图书归还4.1 图书借阅4.2 图书归还 5.用户信息管理5.1上传头像5.2修改头像5.3 修改密码 项…...

【发版通知】FormMaking 表单设计器新版发布,赋能企业实现低代码开发!

FormMaking 介绍 FormMaking 是基于 Vue 的可视化表单设计器&#xff0c;赋能企业实现低代码开发模式&#xff1b;帮助开发者从传统枯燥的表单代码中解放出来&#xff0c;更多关注业务&#xff0c;快速提高效率&#xff0c;节省研发成本。目前已经在OA系统、考试系统、报表系统…...

计算机科学与技术-毕业设计选题推荐

基于特定技术的系统设计与实现 基于深度学习的图像识别系统设计与实现基于区块链的数据安全保护技术研究与实现基于云计算的大数据处理平台设计与开发基于物联网的智能家居系统设计与实现基于机器学习的推荐算法研究与实现 面向实际应用的需求分析与开发 智慧医疗信息系统设…...

《C++音频频谱分析:开启声音世界的神秘之门》

在数字音频的广阔领域中&#xff0c;频谱分析是一项强大而引人入胜的技术。它能够将无形的声音转化为可视化的数据&#xff0c;让我们深入了解音频的特征和结构。那么&#xff0c;在 C这个强大的编程语言中&#xff0c;我们又该如何实现对音频的频谱分析呢&#xff1f; 音频频…...

GitHub 上传项目保姆级教程

构建项目仓库 登录 GitHub 并进入主页。点击右上角的 New 按钮&#xff0c;进入创建新仓库页面。输入仓库名称和描述&#xff08;可选&#xff09;&#xff0c;选择是否公开&#xff08;Public&#xff09;或私有&#xff08;Private&#xff09;。可以选择是否初始化仓库&…...

联想笔记本电脑睡眠后打开黑屏解决方法

下载联想机器睡眠无法唤醒修复工具 下载地址&#xff1a;https://tools.lenovo.com.cn/exeTools/detail/id/233/rid/6182522.html 使用完后重启电脑&#xff0c;问题解决。...

计算机网络:网络层 —— 路由选择与静态路由配置

文章目录 路由选择路由选择的基本概念路由选择算法路由选择策略 路由器的工作原理路由表静态路由配置默认路由特定主机路由 路由选择 路由选择&#xff08;Routing&#xff09;是网络层的一个关键功能&#xff0c;负责在源和目的地之间选择最佳路径&#xff0c;以确保数据包高…...

[LeetCode-55]基于贪心算法的跳跃游戏的求解(C语言版)

/* 题目出处&#xff1a;LeetCode 题目序号&#xff1a;55. 跳跃游戏 题目叙述&#xff1a;给你一个非负整数数组 nums &#xff0c;你最初位于数组的第一个下标位置 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标&#xff0c;如果可…...

C# 将批量图片转为PDF文件

目录 功能实现 范例运行环境 关键代码 组件库引入 ​将批量图片转换为PDF 总结 功能实现 功能实现主要使用 iTextSharp 库实现&#xff0c;将指定目录下的有序的一组图片&#xff0c;组合生成指定文件名的PDF文件。 范例运行环境 操作系统&#xff1a; Windows Server…...

大模型面试题63题(1-11)

扫一扫&#xff0c;实时跟踪面试题&#xff08;关注“算法狗”&#xff09;就可以啦 1. 什么是大型语言模型&#xff08;LLMs&#xff09;以及它们的工作原理是什么&#xff1f; 大型语言模型&#xff08;LLMs&#xff09;是设计用来理解、处理和生成类似人类文本的高级人工智…...

从SIM卡到基站信令:IMSI号码的5种获取方式全解析(含读卡器/Wireshark对比)

从SIM卡到基站信令&#xff1a;IMSI号码的5种获取方式全解析&#xff08;含读卡器/Wireshark对比&#xff09; 在物联网设备管理和移动通信维护领域&#xff0c;IMSI&#xff08;International Mobile Subscriber Identity&#xff09;作为SIM卡的核心标识符&#xff0c;其获取…...

别再硬编码了!用CRMEB标准版的可视化定时任务,5分钟搞定自动发券

告别硬编码时代&#xff1a;CRMEB可视化定时任务实战指南 在电商系统开发中&#xff0c;定时任务就像一位不知疲倦的助手&#xff0c;默默处理着自动发券、订单状态更新、数据清理等重复性工作。但传统开发方式往往需要开发者手动编写Crontab配置或硬编码任务逻辑&#xff0c;不…...

星穹铁道自动化解决方案:用March7thAssistant释放游戏时间价值

星穹铁道自动化解决方案&#xff1a;用March7thAssistant释放游戏时间价值 【免费下载链接】March7thAssistant &#x1f389; 崩坏&#xff1a;星穹铁道全自动 Honkai Star Rail &#x1f389; 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 副标题&…...

SNAP小白必看:哨兵1 SLC数据预处理全流程详解(附避坑指南)

SNAP小白必看&#xff1a;哨兵1 SLC数据预处理全流程详解&#xff08;附避坑指南&#xff09; 在遥感数据处理领域&#xff0c;哨兵1号卫星提供的SLC&#xff08;Single Look Complex&#xff09;数据因其高分辨率和极化信息&#xff0c;成为地表监测、灾害评估等领域的重要数据…...

RevokeMsgPatcher:突破微信消息限制的高效管理工具

RevokeMsgPatcher&#xff1a;突破微信消息限制的高效管理工具 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitcode.com/G…...

2分钟搞定:Windows包管理器Winget一键安装全攻略

2分钟搞定&#xff1a;Windows包管理器Winget一键安装全攻略 【免费下载链接】winget-install Install winget tool using PowerShell! Prerequisites automatically installed. Works on Windows 10/11 and Server 2022. 项目地址: https://gitcode.com/gh_mirrors/wi/winge…...

低功耗电源开关电路设计与MCU控制实现

1. 经典电源开关电路设计与分析1.1 系统架构概述该电源开关电路采用三级晶体管控制架构&#xff0c;实现以下核心功能&#xff1a;低功耗待机模式&#xff08;静态电流<10μA&#xff09;按键触发启动机制MCU控制的自锁功能软件可控的电源关断系统工作电压为9V输入&#xff…...

三三复制系统模式介绍

三三复制系统模式介绍&#xff1a;从底层逻辑到合规落地在社交电商与团队裂变领域&#xff0c;三三复制系统凭借其低门槛、高稳定性的特点&#xff0c;成为企业实现用户快速增长与业绩倍增的重要工具。不同于传统多级分销的复杂层级&#xff0c;三三复制系统以“三”为核心基数…...

用51单片机+无源蜂鸣器播放《两只老虎》完整教程(附代码与乐理速成)

用51单片机驱动无源蜂鸣器演奏《两只老虎》全流程解析 第一次听到单片机播放音乐时&#xff0c;那种"机器唱歌"的奇妙感至今难忘。作为电子爱好者入门必备的趣味项目&#xff0c;用蜂鸣器演奏音乐不仅能巩固定时器、中断等核心知识&#xff0c;更能将枯燥的理论转化为…...

Fast-GitHub:突破网络瓶颈的开发效率工具解决方案

Fast-GitHub&#xff1a;突破网络瓶颈的开发效率工具解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢&#xff0c;用上了这个插件后&#xff0c;下载速度嗖嗖嗖的~&#xff01; 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 1 痛点直击&#xff…...