【jmeter】接口测试流程

1、Jmeter简介

Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试。

Jmeter具备高移植性,可以实现跨平台运行。

Jmeter可以实现分布式负载。

Jmeter采用多线程,允许通过多个线程并发取样或通过独立的线程对不同的功能同时取样。

Jmeter具有较高扩展性。

2、Jmeter安装

1、安装JDK,必须JDK1.7以上的版本,推荐1.8的版本

2、进入官网:http://jmeter.apache.org/download_jmeter.cgi 下载最新的Jmeter版本,下载后解压到非中文目录,如:D:\

3、配置Jmeter的环境变量。

(1) 新增变量:

复制代码

JMETER_HOME:D:\\apache-jmeter-5.2.1

(2) 在CLASSPATH变量的最前面加入如下变量:

复制代码

 %JMETER\_HOME%\\lib\\ext\\ApacheJMeter\_core.jar;%JMETER_HOME%\\lib\\jorphan.jar;

(3)在PATH变量的最前面加入如下变量:

复制代码

%JMETER_HOME%\\bin;

4、进入D:\apache-jmeter-5.2.1\bin,双击jmeter.bat,或在dos窗口输入jmeter命令打开jmeter界面,安装成功。

3、设置 Jmeter 语言为中文环境

1、临时设置

Jmeter菜单栏选择OptionsàChoose LanguageàChinese (Simplified)

这种方法,重启软件后又变为英文环境了。

2、永久设置

进入apache-jmeter-5.2.1\bin目录,找到“jmeter.properties”文件,在文件的第37行后添加“language=zh_CN”,保存之后再打开jmeter就永久变为中文环境了。

4、Jmeter主要元件

1、测试计划:是使用 JMeter 进行测试的起点,它是其它 JMeter测试元件的容器

2、线程组:代表一定数量的用户,它可以用来模拟用户并发发送请求。实际的请求内容在Sampler中定义,它被线程组包含。

3、配置元件:维护Sampler需要的配置信息,并根据实际的需要修改请求的内容。

4、前置处理器:负责在请求之前工作,常用来修改请求的设置

5、定时器:负责定义请求之间的延迟间隔。

6、取样器(Sampler):是性能测试中向服务器发送请求,记录响应信息、响应时间的最小单元,如:HTTP Request Sampler、FTP Request Sample、TCP Request Sample、JDBC Request Sampler等,每一种不同类型的sampler 可以根据设置的参数向服务器发出不同类型的请求。

7、后置处理器:负责在请求之后工作,常用获取返回的值。

8、断言:用来判断请求响应的结果是否如用户所期望的。

9、监听器:负责收集测试结果,同时确定结果显示的方式。

10、逻辑控制器:可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

5、Jmeter元件的作用域和执行顺序

1.元件作用域

配置元件:影响其作用范围内的所有元件。

前置处理器:在其作用范围内的每一个sampler元件之前执行。

定时器:在其作用范围内的每一个sampler有效

后置处理器:在其作用范围内的每一个sampler元件之后执行。

断言:在其作用范围内的对每一个sampler元件执行后的结果进行校验。

监听器:在其作用范围内对每一个sampler元件的信息收集并呈现。

总结:从各个元件的层次结构判断每个元件的作用域。

2.元件执行顺序:

配置元件->前置处理器->定时器->取样器->后置处理程序->断言->监听器

注意事项:

1.前置处理器、后置处理器和断言等组件只能对取样器起作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。

2.如果在同一作用域内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行。

6、Jmeter进行接口测试流程

使用Jmeter进行接口测试的基本步骤如下:

1.测试计划

2.线程组

3.HTTP Cookie管理器

4.Http请求默认值

5.Sampler(HTTP请求)

6.断言

7.监听器(查看结果树、图形结果、聚合报告等)

7、Jmeter进行接口测试流程步骤详解

1、测试计划

打开Jmeter,在菜单左侧出现 “测试计划”。在这里测试计划我们可以把它理解成新建的空白项目,在这个空白项目下面可以添加一系列的接口。

2、线程组

添加方法:右键点击Test Plan->添加->线程(用户)->线程组。

元件描述:一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。

(1)线程数:即虚拟用户数。设置多少个线程数也就是设置多少虚拟用户数

(2)Ramp-Up时间(秒):设置虚拟用户数全部启动的时长。如果线程数为20,准备时长为10秒,那么需要10秒钟启动20个线程。也就是平均每秒启动2个线程。

(3)循环次数:每个线程发送请求的个数。如果线程数为20,循环次数为10,那么每个线程发送10次请求。总请求数为20*10=200。如果勾选了“永远”, 那么所有线程会一直发送请求,直到手动点击工具栏上的停止按钮,或者设置的线程时间结束。

3、HTTP Cookie管理器

添加方法:右键线程组->添加->配置元件->HTTP Cookie管理器。

元件描述:HTTP Cookie管理器可以像浏览器一样存储和发送cookie,如果你要发送一个带cookie的http请求,cookie manager会自动存储该请求的cookies,并且后面如果发送同源站点的http请求时,都可以用这个cookies。

4、HTTP请求默认值

添加方法:右键线程组->添加->配置元件->HTTP请求默认值。

元件描述:HTTP请求默认值是为了方便填写后续内容而设置。主要填写[服务器名称或IP]和[端口号],后续的HTTP请求中就不用每次都填写IP地址和端口号了。

5、HTTP请求

添加方法:右键线程组->添加->Sampler->HTTP请求。

元件描述:HTTP请求包括接口请求方法、请求路径和请求参数等。

HTTP请求详解

(1)名称:本属性用于标识一个取样器,建议使用一个有意义的名称。

(2)注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。

(3)服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。

(4)端口号:目标服务器的端口号,默认值为80 。

(5)协议:向目标服务器发送HTTP请求时的协议,可以是HTTP或者是HTTPS ,默认值为http

(6)方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、TRACE、OPTIONS、DELETE等。

(7)路径:目标URL路径(不包括服务器地址和端口)

(8)内容编码:内容的编码方式,默认值为iso8859

(9)自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。

(10)使用keep Alive :保持jmeter 和目标服务器之间的活跃状态,默认选中

(11)对Post使用multipart/from-data:当发送POST 请求时,使用multipart/from-data方法发送,默认不选中。

(12)同请求一起发送参数 : 在请求中发送URL参数,对于带参数的URL ,jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对(对应RUL中的 名称1=值1)。

6、响应断言

添加方法:右键HTTP请求->添加->取样器->HTTP请求。

元件描述:检查接口是否访问成功。如果检查失败的话会提示找不到断言的内容,没提示的话就代表成功了。

Apply to

指断言作用范围,通常发出一个请求只触发一个请求,所以勾选“main sample only”就可以;若发一个请求可以触发多个服务器请求,就有main sample 和sub-sample之分了。

(1)Main sample and sub-samples:作用于主请求和子请求

(2)Main sample only:仅仅只作用于主请求

(3)Sub-samples only:仅仅只作用于子请求

(4)Jmeter Variable:作用于jmeter变量(输入框内输入jmeter变量名称)

测试字段

响应文本(匹配返回的json数据)、响应代码(匹配返回码:如200, 404,500等)、响应信息(匹配响应信息如“OK”字样)、响应头(匹配响应头)、请求头(匹配请求头)、URL样本(匹配请求的url链接,如果有重定向则包含请求url 和 重定向url)、[文档(文本)](匹配响应数据的文本形式)、忽略状态(一个请求有多个响应断言,第一个响应断言选中此项,当第一个响应断言失败时可以忽略此响应结果,继续进行下一个断言。如果下一个断言成功则还是判定事务是成功的)、请求数据(匹配请求数据)

模式匹配规则

包括:响应内容包含需要匹配的内容即代表响应成功,支持正则表达式。

匹配:响应内容要完全匹配需要匹配的内容即代表响应成功,大小写不敏感,支持正则表达式。

字符串:响应内容包含需要匹配的内容才代表响应成功,大小写敏感,不支持正则表达式

相等:响应内容要完全等于需要匹配的内容才代表响应成功,大小写敏感,不支持正则表达式

否:相当于取反,如果结果为true,勾上否就是false

或者:如果不想用AND连接(所有的模式都必须匹配,断言才算成功),用OR选项可以用于将多个断言模式进行OR连接(只要一个模式匹配,断言就是成功的)

测试模式

其实就是断言的数据。点击“添加”按钮,输入要断言的数据。

7、增加监听器

添加方法:线程组 ->右键添加 ->监听器 ->察看结果树。一般还会一并添加图形结果、聚合报告。

元件描述:树状形式显示接口的访问结果,包括请求结果、请求内容、服务器的响应内容。

8、总结

JMter 还有很多非常强大的功能,以上列出来的内容都是最基本的使用。如有其它疑问,可以随时交流。

2023最新Jmeter接口测试从入门到精通(全套项目实战教程)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/109663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cron表达式每隔两小时执行一次

Cron表达式每隔两小时执行一次 0 0 */2 * * ?验证正确性

算法刷题总结(全)

刷题总结 by lds 2023-9-5 文章目录 1.数组/字符串1.1 合并两个有序数组【easy】1.2 移除元素【easy】1.3 删除有序数组中的重复项【easy】1.4 删除有序数组中的重复项II【mid】1.5 多数元素【easy】1.6 大数相加---【美团面试手撕题目】1.7 轮转数组【mid】1.8 买卖股票的最佳…

掌握C++魔法:深入解析类与对象(上篇)

W...Y的主页 😊 代码仓库分享 💕 🍔前言: 之前我们学习了从C语言转到C后我们需要知道的一些关键改动与变化。今天我们就要学习C独有的类与对象。在谈论类与对象之前我们先说一下什么是面向对象的C,什么是面向过程的C语…

NSDT孪生编辑器助力智慧城市

技术有能力改变城市的运作方式,提高效率,为游客和居民提供更好的体验,实现更可持续的运营和更好的决策。 当今城市面临的主要挑战是什么,成为智慧城市如何帮助克服这些挑战? 我们生活在一个日益城市化的世界&#xf…

【复盘】记录一次数据库连接资源占用完毕

背景 因为历史原因项目使用的是JDBC原始SQL,然后进行拉去三方数据进行解析分析。跑了一会之后发现影响到了线上业务,连接错误。 一查看其实就是刚才跑的定时导致的,分析了下没有及时释放数据库连接。导致资源耗尽。数据库异常。 所以这里其实…

Java身份证OCR识别 - 阿里云API【识别准确率超过99%】

1. 阿里云API市场 https://market.aliyun.com/products/57124001/cmapi00063618.html?spm5176.28261954.J_7341193060.41.60e52f3drduOTh&scm20140722.S_market%40%40API%E5%B8%82%E5%9C%BA%40%40cmapi00063618._.ID_market%40%40API%E5%B8%82%E5%9C%BA%40%40cmapi0006361…

美国科技消费品公司Society Brands完成2500万美元融资

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于美国俄亥俄州坎顿的科技消费品公司Society Brands今日宣布已完成2500万美元融资。 本轮融资由Gullane Capital领投,Callais Capital和North Coast Ventures跟投。 该公司打算利…

【一文清晰】单元测试到底是什么?应该怎么做?

我是java程序员出身,后来因为工作原因转到到了测试开发岗位。测试开发工作很多年后,现在是一名自由职业者 1、什么是单元测试 2、该怎么做单元测试 一、什么是单元测试? 单元测试(unit testing),是指对软件…

手机拍照转机器人末端坐标(九点标定法)

1.打印标定纸,随机九个点 2.让UR机器人末端分别走到P1-P9九个点 在图示位置读取九个点的X,Y坐标 3.手机拍照(固定点) 测试可以随机拍一张,实用的话需要固定手机的拍照位置,得到的图片如下: 4.…

【JUC】读写锁

读写锁 文章目录 读写锁1. ReentrantReadWriteLock概述2. 编码演示2.1 ReentrantLock实现2.2 ReentrantReadWriteLock实现 3. ReentrantReadWriteLock3.1 锁降级3.2 锁降级的必要性3.3 饥饿问题 4. StampedLock(邮戳锁也叫票据锁)4.1 特点4.2 三种访问模…

2023年全网最新 Windows10 搭建 Python 环境教程

目录 一、查看计算机操作系统的位数二、安装Python2.1 下载Python安装包2.2 在Windows 64位系统中安装Python2.3 测试Python是否安装成功 三、Windows环境下安装第2个Python(不同版本) ----不需要安装多个Python版本的读者此小节可以忽略 一、查看计算机操作系统的位数 目前&a…

【脉冲通信】用于空间应用的飞秒脉冲通信的符号误码率模型研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【C++笔记】多态的原理、单继承和多继承关系的虚函数表、 override 和 final、抽象类、重载、覆盖(重写)、隐藏(重定义)的对比

1.final关键字 引出:设计一个不能被继承的类。有如下方法: class A { private:A(int a0):_a(a){} public:static A CreateOBj(int a0){return A(a);} protected:int _a; } //简介限制,子类构成函数无法调用父类构造函数初始化 //子类的构造…

IDEA如何拉取gitee项目?

1.登录gitee 说明:打开idea,在设置上面搜索框输入gitee,然后登录gitee注册的账号。 2. 创建gitee仓库 说明:创建idea中的gitee仓库。 3.寻找项目文件 说明:为需要添加gitee仓库的项目进行添加。 4.项目右键 说明&a…

IPIDEA代理IP如何帮助企业采集市场信息

在当今数字化的时代,市场信息对于企业的发展至关重要。然而,如何高效地收集市场信息成为了每个企业都需要面对的问题。爬虫技术的出现为企业提供了一种高效、便捷的信息采集方式。然而,由于爬虫的请求频率较高,目标网站可能会将频…

vue使用pdf-dist实现pdf预览以及水印

vue使用pdf-dist实现pdf预览以及水印 一.使用pdf-dist插件将PDF文件转换为一张张canvas图片 npm install pdf-dist二.页面引入插件 const pdfJS require("pdfjs-dist"); pdfJS.GlobalWorkerOptions.workerSrc require("pdfjs-dist/build/pdf.worker.entry&…

浅谈云原生

目录 1. 云原生是什么? 2. 云原生四要素 2.1 微服务 2.2 容器化 2.3 DevOps 2.4 持续交付 3. 具体的云原生技术有哪些? 3.1 容器 (Containers) 3.2 微服务 (Microservices) 3.3 服务网格 (Service Meshes) 3.4 不可变基础设施 (Immutable Inf…

支持PC端、手机端、数据大屏端的Spring Cloud智慧工地云平台源码

技术架构:微服务JavaSpring Cloud VueUniApp MySql 智慧建筑工地云平台主要利用大数据、物联网等技术,整合工地信息、材料信息、工程进度等,实现对建筑项目的全程管理。它可以实现实时监测和控制,有效解决施工中的问题&#xff0c…

软件考试学习笔记(希赛)

软考学习笔记-软件设计师 1. 软考基本介绍1.1 软考分数制1.2软考考试分类介绍1.3软件考试报名网站1.4考试内容1.4.1上午考试内容-综合知识1.4.2下午考试内容-软件设计 2.数据的表示2.1进制转换2.1.1R进制------》十进制转换2.1.2十进制-----》R进制转换2.1.3二进制与八进制与16…

网络通信协议-HTTP、WebSocket、MQTT的比较与应用

在今天的数字化世界中,各种通信协议起着关键的作用,以确保信息的传递和交换。HTTP、WebSocket 和 MQTT 是三种常用的网络通信协议,它们各自适用于不同的应用场景。本文将比较这三种协议,并探讨它们的主要应用领域。 HTTP&#xff…