JMeter 使用详解

JMeter 使用详解

Apache JMeter 是一款开源的性能测试工具,可用于对静态和动态资源(如 Web 应用、数据库、REST API 等)进行负载测试和性能测试。以下是 JMeter 的详细使用指南:


1. JMeter 安装

  1. 下载 JMeter

    • 从 Apache JMeter 官方网站 下载最新版本的 JMeter。
    • 下载后解压文件到本地。
  2. 配置环境

    • 确保已安装 Java JDK,并将 JAVA_HOME 添加到环境变量。
    • 在终端或命令行运行 java -version 确保 Java 安装正确。
  3. 启动 JMeter

    • 进入 JMeter 文件夹,运行 bin/jmeter.bat(Windows)或 bin/jmeter(Linux/Mac)。

2. JMeter 界面简介

JMeter 的主界面包括以下关键组件:

  • Test Plan(测试计划):测试的顶层容器,用于组织所有测试元素。
  • Thread Group(线程组):定义用户的数量、执行次数及持续时间。
  • Samplers(采样器):模拟不同类型的请求(如 HTTP、FTP、JDBC 等)。
  • Listeners(监听器):收集测试结果,生成报告(如图表、表格)。
  • Timers(定时器):控制请求之间的等待时间。
  • Assertions(断言):验证响应是否符合预期。

3. 创建测试计划

步骤 1:新建测试计划

  1. 打开 JMeter,默认会生成一个空的测试计划。
  2. 右键测试计划,选择 Add > Threads (Users) > Thread Group 添加线程组。

步骤 2:配置线程组

  1. 设置线程属性:
    • Number of Threads (users):模拟的虚拟用户数量。
    • Ramp-Up Period (seconds):在多少秒内启动所有线程。
    • Loop Count:每个线程执行的循环次数。

步骤 3:添加采样器

  1. 在线程组上右键,选择 Add > Sampler > HTTP Request
  2. 配置 HTTP 请求:
    • Server Name or IP:目标服务器地址。
    • Path:API 或资源的路径。
    • Method:请求方法(如 GET、POST)。
    • Parameters:添加请求参数。

步骤 4:添加监听器

  1. 在测试计划或线程组上右键,选择 Add > Listener > View Results Tree
  2. 监听器用于查看响应数据或统计信息。

4. 执行测试

  1. 点击工具栏的绿色箭头按钮(Start)开始测试。
  2. 测试运行后,可以通过监听器查看结果:
    • View Results Tree:查看每个请求的详细响应。
    • Summary Report:显示吞吐量、错误率、平均响应时间等统计数据。

5. 进阶功能

5.1 使用变量和参数化

  • 在测试中使用变量,可实现动态化。
  • 用户参数化
    1. 添加 Config Element > User Defined Variables,定义变量名称和值。
    2. 在请求中通过 ${变量名} 引用变量。
  • CSV 数据参数化
    1. 添加 Config Element > CSV Data Set Config
    2. 配置文件路径和变量名称,逐行读取 CSV 文件的内容作为参数。

5.2 定时器(Timers)

  • Constant Timer:固定延迟时间。
  • Gaussian Random Timer:随机延迟时间。

5.3 断言(Assertions)

  • 响应断言(Response Assertion):验证响应内容是否包含某些关键字。
  • JSON 断言(JSON Assertion):验证 JSON 响应的某些字段值是否符合预期。

5.4 控制器(Controllers)

  • If Controller:基于条件执行某些请求。
  • Loop Controller:循环执行某些请求。

5.5 后置处理器

  • 正则表达式提取器:从响应中提取特定字段用于后续请求。
  • JSON 提取器:从 JSON 响应中提取数据。

6. 分布式测试

JMeter 支持分布式测试,通过多台机器协同完成大规模测试。

  1. 主机(Controller):负责控制和收集测试结果。
  2. 代理(Agent):执行实际的测试任务。

配置步骤

  1. 在主机和代理机器上安装 JMeter。
  2. 修改代理机器的 bin/jmeter.properties 文件,启用远程测试(设置 server_port)。
  3. 在主机上运行 bin/jmeter,在 Run > Remote Start 启动代理。

7. 生成测试报告

  1. 在测试计划中添加 Aggregate ReportSummary Report 监听器,实时查看统计数据。
  2. 使用命令行模式生成 HTML 报告:
    jmeter -n -t test_plan.jmx -l results.jtl -e -o /path/to/output_folder
    
    参数说明:
    • -n:非 GUI 模式。
    • -t:指定测试计划文件。
    • -l:指定结果文件路径。
    • -e-o:生成 HTML 报告。

8. 常见问题与解决方案

问题 1:测试结果显示“Connection refused”

  • 确认目标服务器是否正常运行。
  • 检查 JMeter 配置的目标地址和端口是否正确。

问题 2:测试结果显示“Out of Memory”

  • 修改 JMeter 的内存设置:
    1. 打开 bin/jmeter.batbin/jmeter 文件。
    2. 增大 HEAP 值,例如:HEAP=-Xms1g -Xmx2g

问题 3:CSV 参数化文件未读取

  • 确保文件路径正确,并设置 Recycle on EOFTrue

9. 总结

JMeter 是一款功能强大、扩展性强的性能测试工具,适用于 Web 应用、API 和数据库的负载测试。通过灵活配置采样器、监听器、断言等组件,用户可以构建多样化的测试场景,同时结合参数化和分布式测试进一步提高测试覆盖率和效率。

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

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

相关文章

C++如何处理对象的状态变化?如何实现工厂模式?

1)如何处理对象的状态变化? 在 C中,可以通过以下几种方式处理对象的状态变化: 一、成员函数 成员函数可以修改对象的内部状态。例如: class MyClass { private:int value; public:MyClass(int initialValue) : value(i…

Oracle 数据库锁与阻塞分析与解决指南

目录 概述锁(Lock)的概念阻塞(Blocking)的概念锁和阻塞的区别查询锁和阻塞情况预防和解决问题的策略案例分析总结 1. 概述 在Oracle数据库中,锁和阻塞是并发控制的关键概念。正确理解和管理它们对于确保数据一致性和…

【Linux运维】配置ssh免密登录

1.场景描述 内网环境,需要同步17服务器的文件到10服务器进行备份。因为每次输入密码比较繁琐,如果实现免密登录后,即可简化脚本。 要求:需要2台服务器-免密登录 2.方案分析 (1)现状:登录需要输…

neo4j删除所有数据

neo4j删除所有数据 一次性删除 MATCH (n) DETACH DELETE n ;分批次删除 先删除关系 MATCH ()-[r]->()WITH r LIMIT 100000DELETE rRETURN count(r)在删除节点 MATCH (n)WITH n LIMIT 100000DELETE nRETURN count(n)验证 查询节点总数 MATCH (n) RETURN count(n) AS node…

Android实现RecyclerView边缘渐变效果

Android实现RecyclerView边缘渐变效果 1.前言: 是指在RecyclerView中实现淡入淡出效果的边缘效果。通过这种效果,可以使RecyclerView的边缘在滚动时逐渐淡出或淡入,以提升用户体验。 2.Recyclerview属性: 2.1、requiresFading…

C语言——实现找出最高分

问题描述&#xff1a;分别有6名学生的学号、姓名、性别、年龄和考试分数&#xff0c;找出这些学生当中考试成绩最高的学生姓名。 //找出最高分#include<stdio.h>struct student {char stu_num[10]; //学号 char stu_name[10]; //姓名 char sex; //性别 int age; …

Kafka Streams 在监控场景的应用与实践

作者&#xff1a;来自 vivo 互联网服务器团队- Pang Haiyun 介绍 Kafka Streams 的原理架构&#xff0c;常见配置以及在监控场景的应用。 一、背景 在当今大数据时代&#xff0c;实时数据处理变得越来越重要&#xff0c;而监控数据的实时性和可靠性是监控能力建设最重要的一环…

解析Java中的Stream API:函数式编程与性能优化

自Java 8以来&#xff0c;Java语言引入了Stream API&#xff0c;为开发者提供了一种全新的数据处理方式。Stream API支持函数式编程风格&#xff0c;使得对集合、数组、IO流等数据源的操作更加简洁、直观且具有高效的性能优势。通过Stream API&#xff0c;我们可以在不修改原有…

车辆重识别代码笔记12.19

1、resnet_ibn_a和resnet网络的区别 ResNet-IBN-A 是在 ResNet 基础上进行了一些改进的变种&#xff0c;具体来说&#xff0c;它引入了 Instance Batch Normalization (IBN) 的概念&#xff0c;这在某些任务中&#xff08;如图像识别、迁移学习等&#xff09;有显著的性能提升。…

作业Day4: 链表函数封装 ; 思维导图

目录 作业&#xff1a;实现链表剩下的操作&#xff1a; 任意位置删除 按位置修改 按值查找返回地址 反转 销毁 运行结果 思维导图 作业&#xff1a;实现链表剩下的操作&#xff1a; 1>任意位置删除 2>按位置修改 3>按值查找返回地址 4>反转 5>销毁 任意…

省略内容在句子中间

一、使用二分查找法 每次查找时&#xff0c;将查找范围分成两半&#xff0c;并判断目标值位于哪一半&#xff0c;从而逐步缩小查找范围。 循环查找 计算中间位置 mid Math.floor((low high) / 2)。比较目标值 target 和中间位置的元素 arr[mid]&#xff1a; 如果 target ar…

IDEA中解决Edit Configurations中没有tomcat Server选项的问题

今天使用IDEA2024专业版的时候,发现Edit Configurations里面没有tomcat Server,最终找到解决方案。 一、解决办法 1、打开Settings 2、搜索tomcat插件 搜索tomcat插件之后,找到tomcat 发现tomcat插件处于未勾选状态,然后我们将其勾选保存即可。 二、结果展示 最后,再次编…

UE5中实现Billboard公告板渲染

公告板&#xff08;Billboard&#xff09;通常指永远面向摄像机的面片&#xff0c;游戏中许多技术都基于公告板&#xff0c;例如提示拾取图标、敌人血槽信息等&#xff0c;本文将使用UE5和材质节点制作一个公告板。 Gif效果&#xff1a; 网格效果&#xff1a; 1.思路 通过…

基于 PyCharm 和 Navicat 的新闻管理系统

# 用于创建连接池 pip3 install mysql-connector-python # 改变终端打印颜色 pip3 install colorama 1.创建连接池 文件地址&#xff1a;db/mysql_db.py 首先建立一个与 MySQL 数据库的连接池&#xff0c;以便在应用程序中复用连接&#xff0c;提高性能。 如果连接池创建失败…

LabVIEW在电液比例控制与伺服控制中的应用

LabVIEW作为一种图形化编程环境&#xff0c;广泛应用于各类控制系统中&#xff0c;包括电液比例控制和伺服控制领域。在这些高精度、高动态要求的控制系统中&#xff0c;LabVIEW的优势尤为突出。以下从多个角度探讨其应用与优势&#xff1a; ​ 1. 灵活的控制架构 LabVIEW为电…

《深入浅出Apache Spark》系列⑤:Spark SQL的表达式优化

导读&#xff1a;随着数据量的快速增长&#xff0c;传统的数据处理方法难以满足对计算速度、资源利用率以及查询响应时间的要求。为了应对这些挑战&#xff0c;Spark SQL 引入了多种优化技术&#xff0c;以提高查询效率&#xff0c;降低计算开销。本文从表达式层面探讨了 Spark…

C/C++语言——解题

1、输入n个整数&#xff0c;将其中最小的数与第1个数对换&#xff0c;把最大的数与最后一个数对换&#xff0c; 【问题描述】输入n个整数&#xff0c;将其中最小的数与第1个数对换&#xff0c;把最大的数与最后一个数对换&#xff0c;写3个函数(1)输入10个整数。(2)进行…

unity webgl部署到iis报错

Unable to parse Build/WebGLOut.framework.js.unityweb! The file is corrupt, or compression was misconfigured? (check Content-Encoding HTTP Response Header on web server) iis报错的 .unityweb application/octet-stream iis中添加 MIME类型 .data applicatio…

CXF WebService SpringBoot 添加拦截器,处理响应报文格式

描述 XFIRE升级CXF框架&#xff0c;但是对接的系统不做调整&#xff0c;这时候就要保证参数报文和响应报文和以前是一致的。但是不同的框架有不同的规则&#xff0c;想要将报文调整的一致&#xff0c;就需要用到拦截器拦截报文&#xff0c;自定义解析处理。 CXF框架本身就是支…

基于Spring Boot的雅苑小区管理系统

一、系统背景与意义 随着信息化技术的快速发展&#xff0c;传统的小区物业管理方式已经难以满足现代居民对于高效、便捷服务的需求。因此&#xff0c;开发一款基于Spring Boot的小区管理系统显得尤为重要。该系统旨在通过信息化手段&#xff0c;实现小区物业管理的智能化、自动…