四、Jmeter工具接口脚本编写

ops/2025/3/15 4:35:33/

目录

1 Jmeter工具的不同控件的功能概述

1.1 线程组

1.2 取样器

1.3 配置元件

1.4 监听器

1.5 定时器

1.6 逻辑控制器

1.7 前置处理器

1.8 后置处理器

1.9 断言

2 Jmeter写单接口测试脚本

2.1 添加线程组 - 普通线程组    

2.2 添加取样器

 2.3 添加消息头管理器

 2.3 添加查看结果树

2.4 拓展介绍    ​编辑


注:还不会安装的同学,参考Mac环境下安装JDK与JMeter详细教程-CSDN博客

1 Jmeter工具的不同控件的功能概述

1.1 线程组

        用来性能场景设计的,默认有三种:setup、teardown、普通线程组。

        还有一些通过插件增加的其他线程组,后续将性能场景设计的时候会讲到。

1.2 取样器

        根据不同的协议,选择不同的取样器

        http取样器用的最多;jdbc请求连接数据的;调试取样器用来调试脚本

1.3 配置元件

        整个脚本的公共信息,它的优先级最高,运行时最先执行

        如:信息头管理器、用户定义变量等

1.4 监听器

        从不同维度展示测试的结果

        如:查看结果数、聚合报告等。还有一些插件带来的监听器,也是后续讲到

1.5 定时器

        控制运行节奏,比如控制某个请求延迟发送请求,不过这个性能测试用的比较少

1.6 逻辑控制器

        控制脚本运行逻辑,比如循环和判断

1.7 前置处理器

        取样器执行之前,先执行的一类元件。如:用户参数等

1.8 后置处理器

        取样器执行之后,对数据处理的一类元件。如:json提取器、正则提取器等

1.9 断言

        用户给接口请求做结果断言判断是否符合预期。

        接口测试会用到比较多,性能测试一般不会使用

2 Jmeter写单接口测试脚本

注:这里尽量找项目的接口文档,编写接口脚本

接口测试五大要素:
        请求地址  :  取样器 / 配置元件 - http请求默认值
        请求方法  :    取样器
        请求参数  :    取样器
        请求头部  :    配置元件 - http信息头管理器
        响应消息体 : 监听器 - 察看结果树

2.1 添加线程组 - 普通线程组    

        右键测试计划,添加线程组

2.2 添加取样器

        线程组右键,添加取样器 --> http请求

注:

        1、协议:当http请求时,可以不写。但是https时一定要写

        2、服务器ip: 项目的ip或者域名,前后不能有空格

        3、端口:不写默认8080,如果项目有自己的端口一定要带上。https协议这里是443

        4、请求方法:根据接口协议定,不要写错

        5、路径:接口地址,前后不能有空格

        6、编码:utf8 -- 支持中文格式字符

                   6.1 当消息体是json格式,并其中有中文或特殊字符时,【两个二选一】

                        1、配置编码为 utf8;

                        2、在请求头里配置:ContentType:application/json;charset=utf8

                   6.1 当参数为表单的数据,以上两个配置无效,需要勾选参数列表种的‘编码'

                        (这是对参数进行 urlencode 编码,否则会乱码;一般建议默认都勾上)

        7、请求体:

                 7.1 参数和消息体数据是互斥,不能同时使用。
                 7.2  当接口请求体为json或xml ,就把请求体写在消息体数据中;
                                json格式: {"name":"tricy"} --键值对的
                                XML格式: <name>polly</name> 【soap协议 webservice接口】
                7.3  当接口为 GET方法的时候, 请求体一般都是表单格式

                                请求体就写在【参数】中 
                                请求体的参数值的类型为数字/ 字符串类型时,值是没有双引号。
                                表单数据的值是没有类型之分的。(因为这个值都是跟在URL地址后

                                面的,会进行urlencode编码,都是文本,所以没有类型之分)

        8、自动重定向:直接跳跃到最终的地址上,查看结果树中看不到中间过程,所以无法提取到中间过程的数据。【一般不勾选】
        9、跟随重定向:默认勾选,查看结果树中看到重定向的过程,而且我们可以提取过程中的数据。
        10、使用keepalive: 默认勾选,使用http的长连接;不勾选,就是短连接。(http协议默认是长连接协议,连上之后保持一段时间再释放。节省TCP三次握手和四次挥手的资源消耗,默认是长连接
        11、对post使用multipart/form-data:文件上传的接口需要勾选这个二进制流的数据格式

 2.3 添加消息头管理器

        线程组右键 --> 配置元件  --> http信息头管理器

 注:

        如果是json消息体数据,必须添加消息头,写上 Content-Type:application/json;
        application/json :json数据,请求体为json就一定要配置添加消息头
        application/x-www-form-urlencoded : 表单数据,可以不加content-type请求头
        form-data:post方法提交表单数据,可以不加content-type请求头
        还有其他的请求头是否要加看开发接口封装: 接口文档 + 抓包+沟通开发确认 

 2.3 添加查看结果树

        线程组右键 --> 监听器  --> 查看结果树    

发送请求成功会出现如下信息

注:查看结果树的结果检查
        1、绿色,仅仅代表网络成功,服务器收到并处理了请求;http的响应状态码为 1xx 2xx 3xx,不代表结果符合预期,要进行响应结果的确认 判断接口是否执行通过。
        2、红色,仅仅代码网络请求失败,响应状态码为 4xx\5xx。
        3、HTTP取样器结果分析【单位是ms】
                3.1 load time加载时间=响应时间:

                从发送请求到收到最后的响应时间,所花费的时间,即响应时间(RT)
                3.2 Latency延迟时间 <= 响应时间:

                从发送请求到收到第一个响应【报文太大,需要分组分包发送】,所花费的时间。
                3.3 connect time(连接时间):建立连接所花费的时间,例如TCP的三次握手。

http协议不太熟悉的同学,可以参考(7)http请求、https请求详解-CSDN博客

        4、如果响应结果是中文乱码:需要修改jmeter配置文件
                4.1 进入Jmeter的bin目录下,找到jmeter.properties文件,
                4.2 将#sampleresult.default.encoding=ISO-8859-1的注释去掉,
                4.3 改成:sampleresult.default.encoding=UTF-8,
                4.4 重启Jmeter,会再次重新加载配置文件

        

2.4 拓展介绍    

右上角的运行结果:
        前面是运行时间
        三角形: Jmeter工具的日志,运行报错红色的数字
        后面的数字:目前正在运行的线程数 / 将要启动的线程数 【负载测试】

http请求默认值:
1、多个接口的公共部分可以放在默认值里,简化配置。就不用给每一个接口添加一个(2.3 添加消息头管理器)
2、如果接口本身也配置了消息头管理器,根据就近原则以接口自己的配置为准发送

http://www.ppmy.cn/ops/165848.html

相关文章

【零基础入门unity游戏开发——进阶篇】unity中配合VideoClip和VideoPlayer组件实现视频播放

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…

[Linux] Not enough free space to extract *.zip or file

原因分析&#xff1a; 导致该错误的主要原因是&#xff0c;虽然你的主分区确实有足够的可用空间&#xff0c;但很多图形解压工具在解压时会默认先把文件写到一个较小的临时文件系统&#xff08;tmpfs&#xff09;&#xff0c;比如这里只显示 1.6 GB。ZIP 文件在解压过程中会产…

git 撤销某次提交的上交到远程服务器的commit提交,此提交后面的commit需要保留【deeepseek生成】

核心思路 使用 git rebase -i 重写提交历史&#xff0c;删除目标提交后强制推送到远程&#xff08;需谨慎操作&#xff09;。 操作步骤 1. 确认要删除的提交位置 # 查看提交历史&#xff08;找到要删除的提交哈希&#xff0c;例如 a1b2c3d&#xff09; git log --oneline查看提…

大白话react第十九章React 与 WebGL 项目的深度拓展和优化

大白话react第十九章React 与 WebGL 项目的深度拓展和优化 1. 实现 VR/AR 交互体验 在 3D 网页应用里加入虚拟现实&#xff08;VR&#xff09;或者增强现实&#xff08;AR&#xff09;功能&#xff0c;能让用户有更沉浸的体验。就好比用户戴上 VR 眼镜&#xff0c;就能感觉自…

【我的 PWN 学习手札】House of Pig

House Of Pig House of Pig是利用tcache stash unlink与largebin attack攻击IO_FILE共同实现的一种手法&#xff0c;一般来说利用得到的任意地址写能力往hook上写数据&#xff0c;从而完成对程序流的劫持。 一、关键源码分析&#xff1a;_IO_str_overflow const struct _IO_…

前端学习笔记(三)——ant-design vue表单传递数据到父页面

前言 善用AI&#xff0c;快速解决定位 原理 a-form所在的SFC&#xff08;单文件&#xff09;vue中需要将表单数据传递给父页面SFC文件中&#xff0c;使用emit方法 代码 子组件&#xff08;Form.vue&#xff09; <template><a-form submit"handleSubmit&qu…

Redis 设置密码(配置文件、docker容器、命令行3种场景)

现在没有配置密码的 Redis&#xff0c;一般来说&#xff0c;已经被很多安全检测系统视为漏洞和问题了&#xff0c;官方的 Redis 默认是关闭密码的&#xff0c;如果需要设置密码&#xff0c;目前应用场景来说可以分为三种&#xff0c;如下&#xff1a; 1、基于配置文件的 通过…

用 Vue 3.5 TypeScript 做了一个日期选择器(改进版)

上一篇 已经实现了一个日期选择器&#xff0c;只不过是模态窗的形式&#xff0c;这个版本改为文本框弹出&#xff0c;点击空白处可关闭日历 代码也增加了不少 <template><div><!-- 添加文本框 --><div class"date-picker-input-wrapper">&l…