Jmeter的自动化测试实施方案
前言:
Jmeter是目前最流行的一种测试工具,基于此工具我们搭建了一整套的自动化方案,包括了脚本添加配置、本地配置和运行、服务器配置等内容,完成了自动化测试闭环,通过这种快捷简便高效的方式,希望可以解决自动化测试上手难的痛点。下面闲言少叙,我们直接切入实战:
一、准备自动化测试物料
1、开发运行工具Jmeter,(下载地址: Apache JMeter - Download Apache JMeter)

2、开发环境为已发布ready;
3、测试脚本已准备ready;
4、脚本运行环境已准备(fat或者uat);
二、自动化测试通过标准
1、成功Status 返回200 ;
2、失败返回404、500等;
3、每个脚本专用断言;
三、自动化脚本存储
脚本全部存储在Gitlab仓库中,(脚本的存储规范请参考:GitLab Jmeter测试包通用设计1.0版)
项目根目录新建文件夹,前面文件夹名和项目名保持一致,后缀加“-test”,如下图文件夹:

四、自动化测试Script Rules
1、脚本命名为接口名
2、存储类型为后缀jmx的文件
3、线程数设置为1(冒烟测试无需多线程并发)
4、必须包含断言判断,状态检测设定为200
五、自动化测试Script Steps
1、添加线程组,脚本命名为接口名,点击存储 为后缀jmx的文件
2、将线程数设置为1,其他设置为默认(如下图)
3、循环次数为不循环,调度器不设置,其他参数不设置(如下图)

4、配置http协议选项:
a、添加http请求,线程组右键“添加”,选择“Sampler”,再选择“HTTP请求”:

b、请求为post or get(如下图,此处根据实际情况设置为POST)
c、内容编码:UTF-8(如下图,此处根据实际情况设置为UTF-8)
d、Request报文:填入Body Data(如下图,此处根据实际情况设置Request报文内容)

5、配置断言选项,线程组右键“添加”,选择“断言”,此处选择“响应断言”。注意可以根据实际情况选择其他断言类型:
a、添加响应断言,如下图所示;

b、选择响应字段为响应代码,如下图所示;
c、匹配规则选择为包括,如下图;
d、测试模式填入200,如下图(此处为开发自定义返回码,请根据实际情况设置);

6、添加“HTTP信息头管理器” ,在测试计划点击右键“添加”菜单,选择“配置元件”,再选择“HTTP信息头管理器” (即为HTTP Header Manager),如下图:

可根据实际情况添加Content-Type等内容,例如此处value设置为:application/json,如下图范例:

7、添加“查看结果树”,在测试计划点击右键“添加”菜单,选择“监听器”,再选择“查看结果树”:

运行成功或失败,分别可以查看结果树详情,如下图所示,查看响应数据,可以看到response报文:

下图是一个运行失败结果的断言,断言失败的信息也会有详细说明:

8、添加"用表格查看结果",在测试计划点击右键“添加”菜单,选择“监听器”,选择“用表格查看结果”:

添加后每次测试计划运行结束,可以查看全部线程组的运行结果,如下图所示:

9、添加“聚合报告”,在测试计划点击右键“添加”菜单,选择“监听器”,选择“聚合报告”:

聚合报告主要用来收集本次测试计划运行的一些重要的性能指标数值,例如Average、90%Line等等,添加后每次测试计划运行结束可以查看到指标的有效数据,如下图范例:

六、本地执行
1、在当前测试计划中,根据上述范例逐一添加本次需要运行的自动化脚本,添加完成后的效果如下所示:

2、运行当前测试计划的全部用例,然后用查看全部运行结果如下:

3、同样在结果树,可以查看全部失败用例的详细报文:

七、服务器配置和运行(Jenkins/TFS)
由于job最底层调度由Jenkins实现,本小节重点介绍如何配置job参数等内容。TFS方面只需要通过接口或者命令行的方式,直接调度Jenkins即可。
1、Job命名规范,定义在Jenkins中job的命名规范,如下图所示,以“JMETER”开头后面是服务名:

2、添加构建配置,如图所示,其中devops是基于Python编写的打包脚本,/sso-support-test是Jmx脚本文件地址,report_server是邮件服务,mail是报告接收人的邮箱地址:

3、构建触发器配置:如图所示,这里配置每两分钟去轮循检查服务器是否有更新:

4、源码管理:添加并选择Git仓库,然后配置Repo地址,最后选择分支dev(非强制)

八、服务器生产自动化报告
自动化报告目前支持两种形式,邮件和Html报告查看。
1、邮件方式报告查看。服务器端配置响应接收人员的邮件地址后,每次自动化运行结束,会自动发送邮件报告到指定关注人,如下图所示:

邮件Report中主要包含以下内容:
Summary栏目:包含所有请求的总结,总数,失败数,成功率,平均时间,最小时间,最大时间等。
![]()
Pages栏目:主要包含了单个请求的详情内容:

Failure Detail:主要是错误详情相关内容:

2、Html报告查看。Html内容展示目前和邮件基本保持一致不再展开详述,如下图所示:

2023最新Jmeter接口测试从入门到精通(全套项目实战教程)
相关文章:
Jmeter的自动化测试实施方案
前言: Jmeter是目前最流行的一种测试工具,基于此工具我们搭建了一整套的自动化方案,包括了脚本添加配置、本地配置和运行、服务器配置等内容,完成了自动化测试闭环,通过这种快捷简便高效的方式,希望可以解…...
nginx优化相关
https://blog.csdn.net/liuxiao723846/article/details/46862381 Nginx反向代理,当后端为Https时的一些细节和原理_nginx反向代理https_赶路人儿的博客-CSDN博客 nginx - 寒星12345678999 - 博客园 (cnblogs.com)...
美客多(mercadolibre)测评下单技术(养号环境搭建详解)
MercadoLibre(美客多)是拉丁美洲的一个网购平台。该公司为其客户提供电子商务交易的购买,出售,支付和收集机制。目前全球第十大电商市场——巴西是MercadoLibre的主要市场,占据近60%的平台营收,接着是阿根廷…...
UE5- c++ websocket客户端写法
# 实现目标 ue5 c 实现socket客户端,读取服务端数据,并进行解析 #实现步骤 {projectName}.Build.cs里增加 "WebSockets","JsonUtilities", "Json"配置信息,最终输出如下: using UnrealBuildTool;…...
C语言——函数的使用
无参无返回值 语法格式如下: // 函数定义 void 函数名() {函数体 }// 函数调用 函数名();函数名是标识符的一种,需要遵循规则函数只需要定义一次,反复调用只定义函数, 不调用函数, 函数永远不会被执行案例需求: 编写一个函数&am…...
DVWA XSS
反射型 low 查看源代码,没有任何过滤 构造 medium 这里是过滤了 high 这里把双写和大小写和JavaScript都过滤了,用事件来绕过<img src0 οnerrοralert(“xss”)> impossible 这里使用htmlspecialchars进行实体转换并且输出的结果还不能使用事件来…...
石油化工智慧安监方案:TSINGSEE青犀视频AI智能识别安全生产风险预警平台建设
一、行业背景 石油化工生产存储企业属于高温、高压、易燃、易爆、有毒的危险行业,其生产装置大型化、密集化、生产工艺复杂、生产过程紧密耦合。随着互联网技术的发展,运用先进的AI、物联网、大数据、云计算等技术手段不断提高石油化工行业的安全监管水…...
R语言图形绘制
(1)条形图 > barplot(c(1,2,4,2,6,4,3,5)) > barplot(c(1,2,4,2,6,4,3,5),horiz TRUE) #besideTRUE 表示将多个组别的图形并排显示,使它们在水平方向上对齐 #而当 besideFALSE(默认值)时,多个组别的…...
2023第七届蓝帽杯 初赛 web LovePHP
LovePHP 直接给了源码。 network查看到,PHP版本是7.4.33 题目要求我们GET一个my_secret.flag参数,根据PHP字符串解析特性,PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事: 删…...
Pytorch 的基本概念和使用场景介绍
文章目录 一、基本概念1. 张量(Tensor)2. 自动微分(Autograd)3. 计算图(Computation Graph)4. 动态计算图(Dynamic Computation Graph)5. 变量(Variable) 二、…...
git 基础入门
Git基础入门 Git是一个分布式 版本管理系统,用于跟踪文件的变化和协同开发。 版本管理:理解成档案馆,记录开发阶段各个版本 分布式&集中式 分布式每个人都有一个档案馆,集中式只有一个档案馆。分布式每人可以管理自己的档案…...
openssl 生成自签名证书
1、openssl生成CA根证书 1.1、生成CA私钥 openssl genrsa -out root_ca.key 2048 注意:私钥必须妥善保管,既不能丢失,也不能泄露。如果发生丢失和泄露,必须马上重新 生成,以使旧的证书失效。 1.2、通过ca私钥生成pem格…...
微服务dubbo和nexus
微服务是一种软件开发架构风格,它将一个应用程序拆分成一组小型、独立的服务,每个服务都可以独立部署、管理和扩展。每个服务都可以通过轻量级的通信机制(通常是 HTTP/REST 或消息队列)相互通信。微服务架构追求高内聚、低耦合&am…...
uView1.0的Upload组件上传图片
<template><u-uploadref"uUpload":file-list"fileList"accept"image/jpeg,image/png" //允许选择图片文件:sizeType"sizeType":max-size"2 * 1024 * 1024" //限制上传的图片文件最大为 2Moversize"over…...
【LeetCode题目详解】第九章 动态规划part03 343. 整数拆分 96.不同的二叉搜索树 (day41补)
本文章代码以c为例! 一、力扣第343题:整数拆分 题目: 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输…...
半导体制造常用软件工具总结
半导体制造常用软件工具总结 CIM:Computer Integrated Manufacturing 设备自动化,总称MES:Manufacturing Execution System 制造执行系统EAP:Equipment Automation Programming 设备自动化,是MES与设备的桥梁APC&…...
基于Python的IOS自动化测试环境搭建
文章目录 一、测试架构介绍1.1 WebDriverAgent原理分析1.2 tidevice原理分析二、环境安装2.1 iOS 设备安装 WebDriverAgent2.2 安装iTunes2.3 安装tidevice2.4 安装facebook-wda自动化三、操作流程四、Weditor的安装和使用一、测试架构介绍 以下为测试架构原理图 手机端的WDA…...
技术领导力实战笔记25
25|用心做好“鼓励式”管理 激发正能量 授权 分工作: 老人干新事,新人干老事,强者干难事,弱者干细事 新人干老事 所谓新人,是对业务产品不了解,对工作流程不清晰的岗位新人。对于新人来说&…...
设计模式-职责链+反射
文章目录 前言简单版本的职责链加反射职责链反射思路过程总结 前言 最近学习设计模式对于职责链的学习有了一些深入的了解故此有了这篇博客 简单版本的职责链加反射 职责链模式(Chain of Responsibility Pattern)和反射(Reflection&#x…...
Middleware ❀ Kafka功能与使用详解
文章目录 1. 概述1.1. 消息队列1.2. 应用场景1.3. 工作模式1.4. 基础结构1.4.1. 结构组件1.4.2. 数据同步1.4.3. ACK机制1.4.4. 分区机制1.4.4.1. 使用Partition Key写入1.4.4.2. 轮询写入 - 默认规则1.4.4.3. 指定Partition写入 1.4.5. Offset偏移量1.4.5.1. 消息顺序性1.4.5.…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...
网页端 js 读取发票里的二维码信息(图片和PDF格式)
起因 为了实现在报销流程中,发票不能重用的限制,发票上传后,希望能读出发票号,并记录发票号已用,下次不再可用于报销。 基于上面的需求,研究了OCR 的方式和读PDF的方式,实际是可行的ÿ…...
基于 HTTP 的单向流式通信协议SSE详解
SSE(Server-Sent Events)详解 🧠 什么是 SSE? SSE(Server-Sent Events) 是 HTML5 标准中定义的一种通信机制,它允许服务器主动将事件推送给客户端(浏览器)。与传统的 H…...
C#最佳实践:为何优先使用as或is而非强制转换
C#最佳实践:为何优先使用as或is而非强制转换 在 C# 的编程世界里,类型转换是我们经常会遇到的操作。就像在现实生活中,我们可能需要把不同形状的物品重新整理归类一样,在代码里,我们也常常需要将一个数据类型转换为另…...
Python异步编程:深入理解协程的原理与实践指南
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 持续学习,不断…...
华为OD机考- 简单的自动曝光/平均像素
import java.util.Arrays; import java.util.Scanner;public class DemoTest4 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint[] arr Array…...
