JMeter性能测试,完整入门篇

2023-11-15

1. Jmeter简介

Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。

本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试结果。

运行环境为Windows 10系统,JDK版本为1.8,JMeter版本为3.3。

2. Jmeter安装

2.1 JDK安装

由于Jmeter是基于java开发,首先需要下载安装JDK (目前JMeter只支持到Java 8,尚不支持 Java 9)
1. 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
2. 选择Java SE 8u151/ 8u152,点击JDK下载
这里写图片描述
3. 安装下载的JDK
4. 配置系统环境变量

2.2 JMeter安装

  1. 官网下载地址:http://jmeter.apache.org/download_jmeter.cgi
  2. 下载最新JMeter 3.3版本:apache-jmeter-3.3.zip
    这里写图片描述
  3. 下载完成后解压zip包
  4. 启动JMeter
    双击JMeter解压路径(apache-jmeter-3.3\bin)bin下面的jmeter.bat即可
    这里写图片描述

3. 测试实例

我们选取最常见的百度搜索接口:

3.1 接口地址

http://www.baidu.com/s?ie=utf-8&wd=jmeter性能测试

3.2 请求参数

ie:编码方式,默认为utf-8
wd: 搜索词

3.3 返回结果

搜索结果,我们可以通过校验结果中是否含有搜索词wd来判断本次请求成功或失败。

4. JMeter脚本编写

4.1 添加线程组

右键点击“测试计划” -> “添加” -> “Threads(Users)” -> “线程组”
这里写图片描述
这里可以配置线程组名称,线程数,准备时长(Ramp-Up Period(in seconds))循环次数,调度器等参数:
这里写图片描述
线程组参数详解:
1. 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
2. Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
3. 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
4. Delay Thread creation until needed:直到需要时延迟线程的创建。
5. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
持续时间(秒):测试持续时间,会覆盖结束时间
启动延迟(秒):测试延迟启动时间,会覆盖启动时间
启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
结束时间:测试结束时间,持续时间会覆盖它。

因为接口调试需要,我们暂时均使用默认设置,待后面真正执行性能测试时再回来配置。

4.2 添加HTTP请求

右键点击“线程组” -> “添加” -> “Sampler” -> “HTTP请求”
这里写图片描述
对于我们的接口http://www.baidu.com/s?ie=utf-8&wd=jmeter性能测试,可以参考下图填写:
这里写图片描述
Http请求主要参数详解:

  1. Web服务器
    协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP
    服务器名称或IP :HTTP请求发送的目标服务器名称或IP
    端口号:目标服务器的端口号,默认值为80
    2.Http请求
    方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
    路径:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分)
    Content encoding :编码方式,默认为ISO-8859-1编码,这里配置为utf-8
  2. 同请求一起发送参数
    在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码”

4.3 添加察看结果树

右键点击“线程组” -> “添加” -> “监听器” -> “察看结果树”
这里写图片描述
这时,我们运行Http请求,修改响应数据格式为“HTML Source Formatted”,可以看到本次搜索返回结果页面标题为”jmeter性能测试_百度搜索“。
这里写图片描述

4.4 添加用户自定义变量

我们可以添加用户自定义变量用以Http请求参数化,右键点击“线程组” -> “添加” -> “配置元件” -> “用户定义的变量”:
这里写图片描述
新增一个参数wd,存放搜索词:
这里写图片描述
并在Http请求中使用该参数,格式为:${wd}
这里写图片描述

4.5 添加断言

右键点击“HTTP请求” -> “添加”-> “断言” -> “响应断言”
这里写图片描述
我们校验返回的文本中是否包含搜索词,添加参数${wd}到要测试的模式中:
这里写图片描述

4.6 添加断言结果

右键点击“HTTP请求” -> “添加”-> “监听器” -> “断言结果”
这里写图片描述

这时,我们再运行一次就可以看到断言结果成功或失败了
这里写图片描述

4.7 添加聚合报告

右键点击“线程组” -> “添加” -> “监听器” -> “聚合报告”,用以存放性能测试报告
这里写图片描述
这样,我们就完成了一个完整Http接口的JMeter性能测试脚本编写。

5. 执行性能测试

5.1 配置线程组

点击线程组,配置本次性能测试相关参数:线程数,循环次数,持续时间等,这里我们配置并发用户数为10,持续时间为60s
这里写图片描述

5.2 执行测试

点击绿色小箭头按钮即可启动测试,测试之前需要点击小扫把按钮清除之前的调试结果。
这里写图片描述

6. 分析测试报告

待性能测试执行完成后,打开聚合报告可以看到:
这里写图片描述

聚合报告参数详解:
1. Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
2. #Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
3. Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
4. Median:中位数,也就是 50% 用户的响应时间
5. 90% Line:90% 用户的响应时间
6. Min:最小响应时间
7. Max:最大响应时间
8. Error%:错误率——错误请求数/请求总数
9. Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
10. KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。

7. 源码下载

至此,我们使用JMeter完成了一个完整的Http接口性能测试流程,从脚本编写,执行到最终结果分析。

完整的脚本源码下载链接: https://pan.baidu.com/s/1eS90cVo 密码: st15

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JMeter性能测试,完整入门篇 的相关文章

随机推荐

  • 2022年美赛C题翻译+思路分享

    MCM C 交易策略 思路在后面 背景 市场交易者频繁买卖波动性资产 目标是最大化其总回报 每次买卖通常都会有佣金 两种这样的资产是黄金和比特币 图 1 黄金每日价格 每金衡盎司美元 资料来源 伦敦金银市场协会 2021 年 9 月 11
  • 灰狼优化算法(GWO)(解决TSP问题,代码完整免费)

    算法背景 灰狼优化算法 GWO 由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法 灵感来自于灰狼群体捕食行为 优点 较强的收敛性能 结构简单 需要调节的参数少 容易实现 存在能够自适应调整的收敛因子
  • MYSQL的四种连接查询学习笔记

    内连接 inner join 或者 join 外连接 1 左连接 left join 或者 left outer join 2 右连接 right join 或者 right outer join 3 完成外连接 full join 或者
  • QT TCP简单的通信示例

    TCP服务端 第一步 创建监听套接字的QTcpSever QTcpServer m tsTcpServer 第二部步 listen 监听是否有新的连接进来 int iMyport 如果有新的客户端连接的话 会触发信号newConnectio
  • Appium 环境搭建安装 java sdk 和 Android SDK

    java sdk 下载 java sdk 在官网上下载https www oracle com java technologies downloads java8 windows 无脑下一步安装 但要看清楚安装目录 配置全局变量要用 我的是
  • 关于队列的几个小算法

    1 用静态数组实现队列的基本操作 思路 创建3个变量 start end size size用来查看数组中数据的数量 从而实现添加和删除的长度控制 当添加数据时 如果end size 1 说明end已经指向最后一位 所以 end end s
  • css基础--位移和定位2(鼠标位置,滚动条位置)

    获取鼠标指针的页面位置 e pageX e clientX 获取鼠标指针在元素内的位置 e offsetX e layerX 获取滚动条的位置 self pageXOffset document documentElement docume
  • GCC编译器(2)

    接GCC编译器 1 4 警告选项 在编译过程中 编译器的报错和警告信息对于程序员来说是非常重要的信息 GCC包含完整的出错检查和警告提示功能 它可以帮助Linux程序员尽快找出错误的或潜在的错误代码 从而写过更优美的代码 GCC的编译器警告
  • 纯干货!!!Python开发必备!!!70+本图书合集(PDF+源码)

    纯干货 Python开发必备 70 本图书合集 PDF 源码 合集包含了从入门到精通 Web 安全 算法 人工智能 游戏 爬虫等一系列技术的专业书籍 其中有多本图书被程序员奉为圭臬 例如 Python编程从入门到实践 笨办法学Python
  • 9、区块链简介

    区块链 Blockchain 在2008年由署名为中本聪的作者在 比特币 一种点对点的电子现金系统 一文提出 指的是一种在对等网络环境下 通过透明和可信规则 构建防伪造 防篡改和可追溯的块链式数据结构 实现和管理事务处理的模式 区块链本质上
  • 【译】IPSEC.CONF(5) - IPsec配置

    NAME ipsec conf IPsec配置 DESCRIPTION ipsec conf指定了Openswan IPsec子系统的大多数配置和控制信息 include ipsec conf 包含指定的配置文件 CONN SECTIONS
  • 【使用 flink-cdc 将数据从 mysql 同时同步到 redis, elastisearch, clickhouse】

    要从 MySQL 同时同步到 Redis Elasticsearch 和 Clickhouse 可以使用 Flink CDC 和 Flink Table API 来实现 首先 需要在 Flink 中配置 CDC 数据源 使其能够连接到 My
  • WIndows10系统 安装Anaconda、Pycharm以及在其中导入Pytorch环境(NVIDIA GPU版本)

    WIndows10系统 安装Anaconda Pycharm以及在其中导入Pytorch环境 NVIDIA GPU版本 1 判断电脑是否具有GPU 2 安装Anaconda 3 创建虚拟环境 3 1 利用conda命令创建虚拟环境 4 GP
  • MySQL——卸载重装MySQL失败?

    该问题通常是因为MySQL卸载时 没有完全清除相关信息导致的 解决办法是 把以前的安装目录删除 如果之前安装并未单独指定过服务安装目录 则默认安装目录是 C Program Files MySQL 彻底删除该目录 同时删除MySQL的Dat
  • [QT_024]Qt学习之QByteArray详解

    本文转自 Qt编程指南 作者 奇先生 Qt编程指南 Qt新手教程 Qt Programming Guide 本节学习 QByteArray 的两种用法 第一种作为字符串处理类 类似 QString 但 QByteArray 内部字符编码不确
  • 时间序列预测方法最全总结!

    时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息 包括连续型预测 数值预测 范围估计 与离散型预测 事件预测 等 具有非常高的商业价值 需要明确一点的是 与回归分析预测模型不同 时间序列模型依赖于数值在时间上的先后顺序 同样
  • 一文讲透CRC校验码-附赠C语言实例

    一口君最近工作用到CRC校验 顺便整理本篇文章和大家一起研究 一 CRC概念 1 什么是CRC CRC Cyclic Redundancy Checksum 是一种纠错技术 代表循环冗余校验和 数据通信领域中最常用的一种差错校验码 其信息字
  • spark Scala中dataframe的常用关键字:withColumn

    withColumn关键字 用于操作dataframe原表某一列的数据 将操作完的每一行数据形成一列 用来替换一个表原有的列或者在原表后面追加新的列 语法如下 def withColumn colName String col Column
  • 家具商城小程序:连接优质家居产品的桥梁

    随着人们对家居生活品质的追求 家具商城小程序成为提供便捷购物和个性化服务的不可或缺的工具 通过家具商城小程序 用户可以浏览并购买各类家具产品 如沙发 床 桌子等 同时 家具商城小程序还提供个性化的推荐 客户评价和在线客服等功能 家具商城小程
  • JMeter性能测试,完整入门篇

    1 Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件 相比Loadrunner而言 JMeter小巧轻便且免费 逐渐成为了主流的性能测试工具 是每个测试人员都必须要掌握的工具之一 本文为JM