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

相关文章

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows