性能测试工具 — JMeter

一、JMeter准备工作

1、JMeter介绍

Apache JMeter 应用程序是开源软件,是一个 100% 纯 Java 应用程序。用于测试Web应用程序、API和其他网络协议的性能。它具有以下特点:

1. 开源免费:JMeter是Apache软件基金会下的一个开源项目,它被称为Apache JMeter。

2. 基于Java开发:JMeter是基于Java开发的工具,因此在使用JMeter之前,需要确保已经安装了JDK 1.8或更高版本。

3. 跨平台:JMeter是一个跨平台的工具,可以在Windows和Linux等操作系统上运行。

4. 支持多种协议:JMeter支持测试多种网络协议,包括HTTP、HTTPS、FTP、SOAP、REST、JDBC等,使其适用于各种类型的应用程序和服务。

5. 插件生态系统:JMeter具有丰富的插件生态系统,可以根据需要安装和使用额外的监听器、采样器、断言和其他实用工具,扩展其功能和测试能力。

6. 分布式测试:JMeter支持分布式测试,可以将负载分散到多台机器上,以模拟更大规模的并发用户,提供更准确和可扩展的性能测试结果。

2、下载安装JMeter

下载地址:Apache JMeter - Download Apache JMeter

在下载JMeter文件时,"Binaries"和"Source"是两个不同的选项,它们之间有一些区别:

  1. Binaries(二进制文件):这是已经编译和构建好的JMeter可执行文件。如果你只是想使用JMeter进行性能测试,那么推荐下载二进制文件。
  2. Source(源代码):这是以Java编写的JMeter源代码文件。如果你要对JMeter进行二次开发,那么下载源代码是一个好的选择

Apache JMeter是一个开源的负载测试工具,您可以根据您的操作系统选择相应的文件:

  1. 如果您正在使用Windows操作系统,您可以下载并使用"apache-jmeter-5.6.2.zip"文件。
  2. 如果您正在使用类Unix或Linux操作系统,您可以下载并使用"apache-jmeter-5.6.2.tgz"文件。

由于我要在window系统使用jmeter,这里我下载的是"apache-jmeter-5.6.2.tgz"文件:apache-jmeter-5.6.2.zip

3、JMeter运行模式

JMeter提供两种运行模式:GUI模式和CLI模式。

  • GUI模式(图形用户界面模式)是JMeter的默认模式。在GUI模式下,您可以使用JMeter的图形界面创建、配置和运行性能测试计划。通过可视化的界面,您可以添加测试元素、设置参数、运行测试并查看实时结果。这种模式适合于交互式地创建和编辑测试计划,以及进行实时监控和分析测试结果。
  • CLI模式(命令行界面模式)是在命令行下运行JMeter的模式。通过CLI模式,您可以使用命令行选项来配置和运行JMeter,而无需使用图形界面。CLI模式适合于在服务器环境下运行测试,或者用于自动化测试脚本。您可以使用命令行选项来指定测试计划文件、结果输出文件、线程数等参数,以及设置其他运行选项。

4、GUI模式启动JMeter

要启动 jmeter需要先部署jdk环境,详见:JDK和JRE的区别和环境变量配置

之后按照以下步骤进行操作:

  1. 对 "apache-jmeter-5.6.2.zip" 压缩文件进行解压缩。
  2. 进入解压缩后的 bin目录。
  3. 执行命令"jmeter.bat"来启动 JMeter。

也可以直接执行bin目录下的ApacheJMeter.jar文件来启动jmeter。

5、JMeter中文汉法

启动jmeter很容易发现显示的是英文环境,也可以通过设置来显示为中文。

方法1:Options --> Choose Language --> Chinese

注意:这种方法设置的只能在当前界面生效,下次启动jmeter仍是默认为英文。

方法2:\apache-jmeter-5.4.1\bin\ 目录下修改 jmeter.properties文件,设置默认语言为language=zh_CN

再次启动jmeter发现显示的是中文了。

二、测试计划元素组件

JMeter测试计划通常包含以下几个主要的元素组件:

  • 线程组(Thread Group):线程组定义了测试中要模拟的用户数量、循环次数和启动延迟等参数。它是测试计划中最基本的元素,其他组件都是在线程组的上下文中执行。
  • 取样器(Sampler):取样器用于发送请求并模拟用户与被测试应用程序之间的交互。它可以发送不同类型的请求,如HTTP请求、FTP请求、数据库请求等。
  • 逻辑控制器(Logic Controller):逻辑控制器用于定义测试脚本的逻辑流程和执行顺序。
  • 配置元件(Config Element):配置元件用于设置请求的参数或处理测试环境的特定设置。例如,HTTP Cookie管理器用于处理HTTP请求中的Cookie,HTTP Header管理器用于设置HTTP请求的头信息。
  • 监听器(Listener):监听器用于收集和显示测试结果。它可以以不同的形式展示结果,如表格、图表、树形结构等。
  • 定时器(Timer):定时器用于模拟用户之间的间隔时间。可以设置固定延迟、随机延迟或根据特定算法生成延迟时间。
  • 前置处理器(Pre-Processor):前置处理器在每个取样器之前执行,可以对请求进行修改或设置一些前置条件。
  • 后置处理器(Post-Processor):后置处理器在每个取样器之后执行,用于处理服务器的响应结果。可以提取关键信息、对响应进行断言或转换等操作。
  • 断言(Assertion):断言用于验证服务器响应是否符合预期。可以检查响应的内容、响应时间、响应代码等。

这些元素组件可以根据测试需求进行组合和配置,以构建完整的JMeter测试计划。

选中测试计划或者线程组,鼠标右键查看可以添加的组件信息。

1、线程组(Thread Group)

线程组(Thread Group)是任何测试计划的起点。所有控制器和采样器必须位于线程组下。其他元素(例如监听器)可以直接放置在测试计划下,在这种情况下,它们将应用于所有线程组。顾名思义,线程组元素控制 JMeter 将用于执行测试的线程数。每个线程将完整地执行测试计划,并且完全独立于其他测试线程。多个线程用于模拟与服务器应用程序的并发连接。

线程组配置页面如下:

JMeter线程组有以下三个属性: 

  • Number of Threads (users):表示并发用户数,即同时模拟的用户数量。可以设置为固定值或根据测试需求进行动态调整。
  • Ramp-Up Period:表示启动所有线程所需的时间。它指定了线程组中的线程逐渐启动的时间间隔。例如,如果设置为5秒,并发用户数为10,那么每秒将启动2个线程,直到达到总共的10个线程。
  • Loop Count:表示线程组要执行的循环次数。可以设置为固定次数或选择"Forever"表示无限循环。

这些属性可以根据测试需求进行配置,以模拟不同的并发用户行为和负载情况。

需要特别注意的是:

Ramp-Up时间要根据测试需求和目标来进行选择。可以从 Ramp-up = 线程数开始,然后根据需要向上或向下调整。如果你有大量的并发用户,可以选择较短的 Ramp-Up 时间,例如线程数的一半或四分之一,以快速达到高峰负载。如果你希望逐渐增加用户并观察系统在不同负载下的性能表现,可以选择较长的 Ramp-Up 时间,例如线程数的两倍或更多。

2、取样器(Sampler)

取样器(Sampler)是JMeter中用于发送请求并模拟用户操作的测试元素。它用于模拟不同类型的用户请求,例如发送HTTP请求、FTP请求、JDBC请求等,以便测试目标系统的性能和功能。

JMeter提供了多种取样器,常见的几种类型包括:

1. HTTP请求(HTTP Request):用于发送HTTP请求到目标服务器,可以设置请求方法(GET、POST等)、URL、请求头、请求参数等。

2. FTP请求(FTP Request):用于执行FTP相关操作,如上传文件、下载文件、删除文件等。

3. JDBC请求(JDBC Request):用于执行JDBC数据库操作,如执行SQL查询、插入、更新等。

4. TCP请求(TCP Sampler):用于发送TCP请求,可以自定义请求内容和目标服务器地址。

5. SMTP请求(SMTP Sampler):用于发送电子邮件,可以设置邮件主题、收件人、发件人等。

取样器通常与线程组结合使用,在每个并发用户线程中执行具体的请求操作。通过合理配置取样器,你可以模拟出不同类型的用户请求,测试目标系统在不同负载和压力下的性能和可靠性。

取样器配置页面如下:

3、逻辑控制器(Logic Controller)

4、配置元件(Config Element)

5、监听器(Listener)

6、定时器(Timer)

7、前置处理器(Pre-Processor)

8、后置处理器(Post-Processor)

9、断言(Assertion)

三、制定测试计划

添加元素组件
    配置元素组件
    保存测试计划
    运行测试计划
    终止测试计划Stop 、Shutdown 


reference:

Apache JMeter - User's Manual

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

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

相关文章

MySQL知识笔记——中级进阶之索引(实施工程师和DBA工作笔记)

在上一章中我们已经讲完了学习和实施工作中需要掌握的MySQL基础知识,但是在实际应用中这些基础只能让我们简单了解流程,以后的工作不只是简单的安装部署系统,我们还要将客户的数据导入数据库中才能完善系统的完整性和可使用性,接下…

LeetCode每日一题:2136. 全部开花的最早一天(2023.9.30 C++)

目录 2136. 全部开花的最早一天 题目描述: 实现代码与解析: 贪心 原理思路: 2136. 全部开花的最早一天 题目描述: 你有 n 枚花的种子。每枚种子必须先种下,才能开始生长、开花。播种需要时间,种子的生…

Selenium 浏览器坐标转桌面坐标

背景: 做图表自动化项目需要做拖拽操作,但是selenium提供的拖拽API无效,因此借用pyautogui实现拖拽,但是pyautogui的拖拽是基于Windows桌面坐标实现的,另外浏览器中的坐标与windows桌面坐标并不是一比一对应的关系&am…

基于微信小程序的同城家政服务预约系统(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

关于 自定义的RabbitMQ的RabbitMessageContainer注解-实现原理

概述 RabbitMessageContainer注解 的主要作用就是 替换掉Configuration配置类中的各种Bean配置; 采用注解的方式可以让我们 固化配置,降低代码编写复杂度、减少配置错误情况的发生,提升编码调试的效率、提高业务的可用性。 为什么说“降低…

MySQL 通过存储过程高效插入100w条数据

目录 一、前言二、创建表三、编写存储过程插入数据四、高效插入数据方案4.1、插入数据时删除表中全部索引4.2、存储过程中使用统一事务插入(性能显著提升)4.3、调整MySQL系统配置(性能显著提升,适合存储过程没有使用统一事务&…

CSS详细基础(三)复合选择器

前两章介绍了CSS中的基础属性,以及一些基础的选择器,本贴开始介绍复合选择器的内容~ ​ 在 CSS 中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基本选择器进行组合形…

我的创作纪念日 不忘初心,砥砺前行

机缘 本来我只是记录一些自己平时安装各种软件或者组件的教程,以及记录平时遇到的一些bug。 没想到一些教程收到了各位同学的喜爱。 收获 这篇VMware虚拟机安装Linux教程(超详细) 深受大家喜爱。写这篇文章的初衷一是为了记录,二是为了分享。自己一步…

uniapp:如何修改路由加载条的样式

路由加载条默认是绿色,通过元素选择工具我们可以知道元素的类名是#router-loadding .loadding,具体设置在h5-dom.js文件里。 我们直接在App.vue里对加载样式进行修改即可,如下图: !important一定记得要加,否则不生效&…

GEO生信数据挖掘(三)芯片探针ID与基因名映射处理

检索到目标数据集后,开始数据挖掘,本文以阿尔兹海默症数据集GSE1297为例 目录 处理一个探针对应多个基因 1.删除该行 2.保留分割符号前面的第一个基因 处理多个探针对应一个基因 详细代码案例一删除法 详细代码案例二 多个基因名时保留第一个基因名…

Linux服务器安装Anaconda 配置远程jupyter lab使用虚拟环境

参考的博客: Linux服务器安装Anaconda 并配置远程jupyter lab anaconda配置远程访问jupyter,并创建虚拟环境 理解和创建:Anaconda、Jupyterlab、虚拟环境、Kernel 下边是正文了。 https://www.anaconda.com/download是官网网址,可…

C++——函数指针与指针函数

函数指针与指针函数 1. 初识 一个区分的小技巧: “函数指针”中函数是用来修饰指针的,所以主体是指针,它主要是用来指向函数的。 “指针函数”中指针是用来修饰函数的,所以主体是函数,该函数的返回类型是指针。 举个…

华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 Docker

华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 Docker 介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什么华为云云耀云…

Oracle 11g_FusionOS_安装文档

同事让安装数据库,查询服务器信息发现操作系统是超聚变根据华为openEuler操作系统更改的自研操作系统,安装过程中踩坑不少,最后在超聚变厂商的技术支持下安装成功,步骤可参数该文。 一、 安装环境准备 1.1 软件下载 下载地址:…

基于微信小程序的网络安全科普题库答题系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

识别消费陷阱,反消费主义书单推荐

在消费主义无所不在的今天,商家是如何设置消费陷阱的?人们在做出消费决策时又是如何“犯错”的?如何才能做出更加理性的选择? 本书单适合对经济学、市场营销感兴趣的朋友阅读。 《小狗钱钱》 “你的自信程度决定了你是否相信自已…

线性代数(七) 矩阵分析

前言 从性线变换我们得出,矩阵和函数是密不可分的。如何用函数的思维来分析矩阵。 矩阵的序列 通过这个定义我们就定义了矩阵序列的收敛性。 研究矩阵序列收敛性的常用方法,是用《常见向量范数和矩阵范数》来研究矩阵序列的极限。 长度是范数的一个特…

Android widget 小部件使用指南强化版

Android widget 小部件使用指南强化版 一、简单UI的小部件二、含集合的小部件三、可配置的小部件四、可控制的小部件五、Android 12 Widget 更新 小部件是主屏幕定制的一个重要方面。您可以将它们视为应用程序最重要的数据和功能的“概览”视图,这些数据和功能可以直…

Linux 基本语句_5_创建静态库|动态库

静态库 创建主函数:main.c 应用函数:add.c、sub.c、mul.c 创建calc.h文件作为头文件 生成可执行文件*.o文件 gcc -c add.c -o add.o ....包装*.o文件为静态库 ar -rc libmymath.a add.o sub.o mul.o编译静态库并指明创建静态库的位置 sudo gcc mai…

零基础教程:Yolov5模型改进-添加13种注意力机制

1.准备工作 先给出13种注意力机制的下载地址: https://github.com/z1069614715/objectdetection_script 2.加入注意力机制 1.以添加SimAM注意力机制为例(不需要接收通道数的注意力机制) 1.在models文件下新建py文件,取名叫Sim…