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

相关文章

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有