当前位置: 首页 > news >正文

性能测试1初步使用Jmeter

当你看到这边文章的时候,详细你已经知道啥是性能测试,以及也听说过Jmeter了,所以不过多介绍,这里,只是帮助你快速的使用Jmeter来测试接口。

1获取安装包

官网下载地址:https://jmeter.apache.org/download_jmeter.cgi
我连同JDK也放到CSDN了,不需要积分:https://download.csdn.net/download/m0_37892044/89795946
在这里插入图片描述
OracleJDK安装的时候会自动配置环境变量,因此可以不用配置java环境变量,缺点就是没法用一些Oracle提供的支持(当然百分之99的人都用不到)。下图为例,下面是使用OracleJDK安装包安装的时候,自动配置的环境变量,如果你要自己配置环境变量,要么把你配置的环境变量放到这个默认配置的前面(谁在前,谁优先),要么删掉默认的配置
在这里插入图片描述
下面是默认OracleJDK环境变量的可执行文件,可以看到只有核心的三个可执行文件
在这里插入图片描述
下面是我们配置的JDK环境变量的可执行文件,对比默认的多了很多,比如我们常用的JVM调优时用到的jcmd
在这里插入图片描述

2启动Jmeter

启用Jmeter,很简单,window点击jmeter.bat,linux就是执行jmeter.sh
在这里插入图片描述
启动以后,命令窗口会自动启动,命令窗口不用管,缩小就行。命令窗口关闭,Jmeter就关闭了。
在这里插入图片描述

3常见接口测试

3.1http接口测试要素

本不想介绍这个,不过考虑到,有人可能不是开发,因此还是介绍一下。如果你是相关开发人员,我觉得可以直接划过。
作为一名程序员,我们在测试或者开发http接口的时候,其核心主要关心如下几个点

  1. 请求方法
  2. 请求方法
  3. 请求头信息
  4. 请求参数
  5. 响应参数

如果你是开发人员,那么其实开发就是在组装上面的这些参数,如果你是测试人员,就是在组装这些参数来看返回结果是不是你期望的。

这里我将介绍集中非常常见的接口测试来举例子。

3.2 浏览器请求

以谷歌浏览器为例,我们按F12进入开发者模式,然后随便输入什么访问,都会产生http请求,接着在http请求里面可以找到上诉我们说的那些元素,例如请求地址,请求方法,请求头等等。
在这里插入图片描述
下面是我用谷歌浏览器的F12找的一个请求的接口
请求地址是:http://127.0.0.1:24104/dataSource/info/page
在这里插入图片描述

3.3 PostMan请求

下面是我用PostMan请求的:http://127.0.0.1:24104/dataSource/info/page
在这里插入图片描述

3.4 Swagger请求

下面是我用Swagger请求的:http://127.0.0.1:24104/dataSource/info/page
在这里插入图片描述
综上所属,所有的这种http接口测试工具,我们就是在找上面我们所说的元素,然后进行组装,用Jmeter其实也是这样,因此,如果你有了解上面的相类似的工具,或者开发工作,用Jmeter是一样,只不过是Jmeter提供了一些特性,其本质的接口还是一样的。

4使用Jmeter测试接口

在常见接口测试我们说了,测试的几个要素,如下所示,接下来我们学习使用Jmeter测试性能,其实就是在Jmeter里面去填充下面的信息。

  1. 请求方法
  2. 请求方法
  3. 请求头信息
  4. 请求参数
  5. 响应参数

4.1启动Jmeter

英语不好的,可以设置为汉语,不过这个操作是一次性的,重启以后还是因为,永久的话,就去修改配置文件(这里不在复述)
在这里插入图片描述

4.2创建一个测试计划

没啥特殊意义,就是一个测试计划而已,填写计划名称以后,CTRL + S保存即可
在这里插入图片描述

4.3添加线程

有开发基础的人很容易理解这里,为什么要添加线程。这里主要针对没有基础的人来解释这个添加线程的人。假设你使用PostMan去测试接口,只有你一个人去测试,因此你是单线程因为只有你一个人去做。如果这个时候要求,5个人同时操作,这时候你一个人是操作不过来的。因为你不会分身术,这里创建的5个线程,就是分身术,把一个人变成5个人,然后5个人在去同时操作。
在这里插入图片描述
1.线程数(Number of Threads):表示模拟的并发用户数,即同时发送请求的线程数。可以根据需要设置不同的并发用户数,以模拟不同的负载情况。

2.Ramp-Up Period(in seconds):表示线程组启动所有线程所需的时间。例如,如果线程数为100,Ramp-Up Period为10秒,则每秒启动10个线程,直到达到100个线程为止。这样可以模拟逐渐增加的用户并发数。

3.循环次数(Loop Count):表示每个线程执行的循环次数。可以设置为具体的数字,也可以设置为Forever,表示一直循环执行,直到测试计划停止。

下面的5-2-2表示:则最终会产生10个请求。编辑完以后,记得CTRL + S保存
在这里插入图片描述

4.4添加Http请求

接下来就会来到我们熟悉的http元素了。打开http请求以后
在这里插入图片描述
仔细看下面我圈出来的部分,是不是和上面我们介绍的浏览器,PostMan,Swagger一样?
Request URL: http://127.0.0.1:24104/dataSource/info/page
Request Method: POST
content-type(请求头): application/json
Request Body :
{
“asc”: true,
“conditions”: [
{
“column”: “”,
“type”: “”,
“value”: { }
}
],
“orderBy”: “”,
“pageNum”: 0,
“pageSize”: 0
}
因此,根据上述给出的信息,我们将下述的协议、IP、端口、方法、地址、请求参数分别填入
在这里插入图片描述

4.5设置http请求头

再上面,我们可以发现,并没有相关的头信息设置,比如请求头设置为请求的参数为Json。
如下所示,我们添加Http请求头信息。
在这里插入图片描述
设置请求参数为Json
在这里插入图片描述

4.6收集测试结果

在这里插入图片描述
在这里插入图片描述

4.7执行测试,查看响应参数

点击启动即可。
在这里插入图片描述
如下表示正在执行。
在这里插入图片描述
执行完毕以后,点击查看结果树
在这里插入图片描述
随便点一个请求,即可以看到请求的响应参数。
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 海平面气压与气柱平均温度的计算及其在气象学中的应用
  • 干货分享 | TSMaster软件QA指南(第3期)
  • 3D生成技术再创新高:VAST发布Tripo 2.0,提升AI 3D生成新高度
  • 鸿蒙OpenHarmony【小型系统基础内核(物理内存管理)】子系统开发
  • 23中设计模式,以及三种常见的设计模式demo
  • 【C++】C++库:如何链接外部库、静态链接和动态链接,以及如何自建库并使用
  • 这些主流的销售管理系统,能够有效提升客户管理效率!
  • Python范例总结
  • Nginx 限流实战教程和技巧
  • Apache Airflow如何使用
  • 如何在算家云搭建text-generation-webui(文本生成)
  • uniapp中<map>地图怎么实现点位聚合?
  • 【Qwen2-VL】通义多模态新作速读
  • 创建游戏暂停菜单
  • 力扣(leetcode)每日一题 LCR 187 破冰游戏(还是考的约瑟夫环)
  • python3.6+scrapy+mysql 爬虫实战
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • $translatePartialLoader加载失败及解决方式
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Android单元测试 - 几个重要问题
  • ECMAScript6(0):ES6简明参考手册
  • Javascript设计模式学习之Observer(观察者)模式
  • Java读取Properties文件的六种方法
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • React-flux杂记
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 回顾 Swift 多平台移植进度 #2
  • 前端工程化(Gulp、Webpack)-webpack
  • 学习ES6 变量的解构赋值
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 以太坊客户端Geth命令参数详解
  • 优化 Vue 项目编译文件大小
  • 再次简单明了总结flex布局,一看就懂...
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #传输# #传输数据判断#
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (JS基础)String 类型
  • (Python) SOAP Web Service (HTTP POST)
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十二)Flink Table API
  • (一)SvelteKit教程:hello world
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (转)德国人的记事本
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .Net OpenCVSharp生成灰度图和二值图
  • .net 流——流的类型体系简单介绍
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖