JMeter入门使用,手把手教(接口测试和压测)

2024-06-12 23:38

本文主要是介绍JMeter入门使用,手把手教(接口测试和压测),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一.JMeter介绍

二.使用场景

三.开始使用

3.1业务接口

3.2Post请求

3.3统一前置接口

3.4统一前置接口+单个业务接口

3.5批量接口(无需登录)


一.JMeter介绍

以下一段话摘抄JMeter中文网,毕竟我说的可能会存在不恰当的地方:

ApacheJMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如静态文件、Java小服务程序、CGI脚本、Java对象、数据库、FTP服务器,等等。JMeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

Apachejmeter可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。

二.使用场景

JMeter功能比较强大,使用场景很多,单独/批量接口测试、前后关联接口、接口压测等。公司的测试人员一般能比较熟练使用JMeter,开发人员也可以使用JMeter帮助我们开发。

三.开始使用

3.1业务接口

首先你要有jre环境,安装过程自行百度,安装后可以不配置环境变量。首先打开JMeter(我的是5.3版本):

然后是这个界面:

一个空界面,当你创建了测试计划后可以保存为.jmx的文件打开:

切换中文:

工具栏,其实也比较通俗易懂:

先来试一个接口,文件-新建,生成一个测试计划:

右键测试计划-添加-线程(用户):

这时候你会看到有3个选项,线程组是通用的,一般用这个,setUp线程组是前置线程组,也就是线程组之前执行,tearDown线程组是后置线程组,也就是线程组执行完了执行它。我们新建一个线程组,下面的界面也比较通俗易懂:

amp-up时间解释:

【1】决定多长时间启动所有线程。如果使用10个线程,ramp-upperiod是100秒,那么JMeter用100秒使所有10个线程启动并运行。每个线程会在上一个线程启动后10秒(100/10)启动。Ramp-up需要要充足长以避免在启动测试时有一个太大的工作负载,并且要充足小以至于最后一个线程在第一个完成前启动。一般设置ramp-up=线程数启动,并上下调整到所需的。

【2】用于告知JMeter要在多长时间内建立全部的线程。默认值是0。如果未指定ramp-upperiod,也就是说ramp-upperiod为零,JMeter将立即建立所有线程。假设ramp-upperiod设置成T秒,全部线程数设置成N个,JMeter将每隔T/N秒建立一个线程。

【3】Ramp-UpPeriod(in-seconds)代表隔多长时间执行,0代表同时并发。

接下来添加Http请求,一个线程组可以有多个取样器(以下简称任务):

这时候你就可以感受到JMeter的强大。选择HTTP请求后:

填一下服务器地址和参数信息,协议可以不用填,这时候我们用的JMeter功能和Postman、Swagger请求接口一样,不过JMeter可以设置更多东西,随便用一个Get接口试下,不需要额外的配置:

添加一下察看结果树,用于查看结果:

请求一下,弹出保存框就保存下,可以选中多个节点点击启动:

选中当前的HTTP请求节点启动,是启动当前的HTTP请求,如果是setUp线程组下的任务,会执行线程组下的任务。选中线程组节点启动,是启动这个线程组下的所有任务,包括HTTP请求,选中测试计划节点启动,是启动这个测试计划下的所有任务,也可以就选择察看结果树节点:

保存一下测试计划:

请求完成后,点击查看结果树:

绿色表示成功,再点下响应数据看下也能看到返回说明请求成功:

3.2Post请求

上面演示的是Get请求,现在演示一下Post请求,一般我们Post请求的content-type都是application/json;charset=UTF-8,这时候需要添加一下HTTP信息头管理器:

添加content-type:

设置好入参,json格式:

一样地添加查看结果树后请求一下:

请求成功,不过后台报错,这是自己要处理的。

3.3统一前置接口

一般我们的业务,在新增和编辑的时候基本都要校验用户是否登录,如果没有登录就拿不到用户的信息,所以我们可以设置setUp线程组作为用户登录或者是你需要的前置接口,我这里以登录为例,登录成功会返回一个token。

新建setUp线程组,看起来和一般线程组也没什么不一样:

设置前置接口参数信息:

测试一下:

如果你的测试计划比较复杂,不像某个线程组干扰另外的线程组的时候,可以把它禁用下,被禁用是灰色的:

3.4统一前置接口+单个业务接口

设置好统一前置登录后,可以再添加业务接口了,这时候就是怎么拿到登录的token,因为要设置到业务请求的Request Header中,此时要用到前置和后置处理器。选中登录请求,添加后置处理器-JSON提取器:

设置变量名token,设置请求结果中提取的方式,$.表示从返回数据的根节点取,.表示向下取值,通过属性名获取,因为我们登录接口返回形如:

{

    "access_token": "String",

    "token_type": "String",

    "refresh_token": "String",

    "expires_in": 43199,

    "scope": "ddd"

}

所以用$..access_token。Match No忘记了,可以自己查下,这里填1。

再添加前置处理器-BeanShellProcessor:

参数那里写${token},类似FreeMarker的语法,脚本那里:

String token=bsh.args[0];获取token

${__setProperty(accessToken,${token},)};设置全局属性为accessToken

对登录请求设置完后,再设置下业务接口的HTTP信息头管理器,Authorization的值为${__P(accessToken,)},P表示全局属性P()表示从全局属性中获取一个属性,有点类似函数吧,${}表示获取全局属性中的token的值:

可以在登录请求那里添加一个调试后置处理程序用于测试是否取到了token:

默认设置:

添加了调试后置处理程序将会在的响应数据中看到打印的token,请求后可以看下察看结果树的子节点:

业务接口:

还可以对请求设置各种断言,断言在Java中也有,作用就是预判结果走向,如果不符合预期说明错误。比如响应结果断言,Assert JSON Path exists表示返回的JSON中有什么属性,Expected Value表返回值,可以勾选正则表达式选项,表示正则匹配:

请求错误,断言失败,显示红色:

并发运行,设置线程组的线程属性:

3.5批量接口(无需登录)

正如上面所说,一个线程组可以有多个任务,也就是可以同时跑多个线程:

这篇关于JMeter入门使用,手把手教(接口测试和压测)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055669

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]