JMeter接口测试性能测试

news2024/11/15 16:00:01

目前最新版本发展到5.0版本,需要Java7以上版本环境,下载解压目录后,进入\apache-jmeter-5.0\bin\,双击ApacheJMeter.jar文件启动JMemter。

1、创建测试任务

添加线程组,右击测试计划,在快捷菜单单击添加-》线程(用户)-》线程组。设置线程组主要包含三个参数:线程数、Ramp-Up、循环次数。

线程数:设置虚拟用户数。一个虚拟用户占用一个进程或线程。线程数就相当于虚拟用户数。

Ramp-Up:设置的线程数启动时长,单位为秒。如果线程数为100,准备时长为20秒,那么需要20秒启动100个线程,平均每秒启动5个线程。

循环次数:每个线程发送请求的个数。如果线程数为100,循环次数为2,那么每个线程发送2次请求,总请求数为100*2=200次。如果勾选了“永远”复选框,那么所有线程会循环发送请求,直到手动单工具栏停止按钮,或者设置的线程运行时间结束才会停止运行。

这次针对接口测试,默认都为1就行。

2、添加get的HTTP请求

右击线路组,在快捷菜单单击添加-》取样器-》HTTP请求。

协议:向目标服务器发送HTTP请求时的协议,可以是HTTP或HTTPS,默认不填为HTTP。

服务器IP和端口:输入目标服务器地址和端口号。

内容编码:默认值为iso8859

方法:针对请求方法选择

路径:输入请求目标地址

参数:录入查询的参数数值

3、添加post的HTTP请求

方法同上,只是请求方法不同,这次改用POST传递参数向服务器及POST请求的URL地址。

根据开发提供的接口文档,参考传入参数选项,录入进去。

4、添加断言

分别右击发布会查询信息和添加发布会信息,添加-》断言-》响应断言

这次选择响应文,然后录入需要匹配的数据。

5、添加察看结果树

右击发布系统项目,单击添加-》监听器-》察看结果树,运行后:

成功显示绿色标志,失败显示红色标示,可以查看到每个用例返回的数据。

6、添加用表格察看结果

可以更详细查看到耗时及字节大小,结果状态,用例信息。

JMeter性能测试

由于JMeter支持录制不够好,现在常用的方法是使用Badboy录制,生成JMeter脚本,然后用JMeter打开,添加监听器来查看结果。

双击软件图标开启badboy即可看到以下界面:

1、开始录制

在地址栏(图中用红色框住部分)中输入你需要录制的Web应用的URL,并点击红圆点按钮开始录制。开始录制后,你可以直接在Badboy内嵌的浏览器(主界面的右侧)中对被测Web应用进行操作,所有的操作都会被记录在主界面左侧的编辑窗口中:如下图所示

将脚本导出为jmeter

线程数代表发送请求的用户数目,Ramp-up period(inseconds)代表每个请求发生的总时间间隔,单位是秒。假如我的请求数目是5,而Ramp-up period(inseconds)参数是10,那么每个请求之间的间隔就是 10/5,也就是2秒。如果Ramp-up period(inseconds)设置为0就代表并发请求。

最后,清除循环次数的复选项“永远”,然后输入1。这个值是告诉JMeter你的测试重复多少次。如果你输入1,那么JMeter只会运行一次测试。要不停的运行你的测试计划,选中“永远”复选框。

如下图摸拟1000个并发用户数量运行一次登录测试。

2、添加监控

这个主要是用来查看测试结果用的,可以以不同形式展现,这里举例说明添加监听器:用表格查看结果、聚合报告和图形报告thread Group->添加->监听器->聚合报告(图形报告、用表格查看结果)如下图所示:

程序运行完成以后,就可以查看相应的测试结果这里以1000个线程组瞬时并发为例得到如下报告:

上图表参数含义如下:

    1、样本数目是总共发送到服务器的请求数。
  2、最新样本是代表时间的数字,是服务器响应最后一个请求的时间。
    3、吞吐量是服务器每分钟处理的请求数。
    4、平均值是总运行时间除以发送到服务器的请求数。
    5、中间值是代表时间的数字,有一半的服务器响应时间低于该值,而另一半高于该值。
    6、偏离表示服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。

可以看出当1000人瞬时并发时平均响应时间为1630ms,吞吐量为3,940.887/分钟,平均响应中值为230ms。

图表含义说明如下:

Label:说明是请求类型,如Http,FTP等请求。

#Samples:也就是图形报表中的样本数目,总共发送到服务器的样本数目。

Average:也就是图形报表中的平均响应时间,是总运行时间除以发送到服务器的请求数。

Median:也就是图形报表中的中间值50%用户响应时间,有一半的服务器响应时间低于该值而另一半高于该值。

90%line:是指90%请求的响应时间比所得数值还要小,也就是90%用户的响应时间。

Min:是代表时间的数字,是服务器响应的最小时间。

Max: 是代表时间的数字,是服务器响应的最大时间。

Error%:请求的错误百分比。本次测试中出现错误的请求的数量/请求的总数。

Throughput:也就是图形报表中的吞吐量,这里是服务器每单位时间处理的请求数,注意查看是秒或是分钟。默认情况下表示每秒完成的请求数。

KB/sec:每秒从服务器端接收到的数据量。

要所得的数据为正确,聚合报告error%必须为0.00%,否则说明用户没有全部通过测试,这里得到平均响应时间1630ms,平均响应中中值为230ms

上图Error出现错误,所得的数据不是准确,从日志和表格来看中间过程发生连接请求超时,在响应时间内,接收请求数响应时间为0。如下图所示:

在测试过程中,平均响应时间、吞吐量、并发连接数是我们性能测试的一个重要衡量指标,但是在测试中,特别是在聚合报告中,得出的90%Line等同于该用户提出的90%响应时间,这个数值对我们性能测试分析也很有参考价值。90%响应时间是说在发送的请求中,90%的用户响应时间都比得到的数值上要短,同时说明,一个系统在应用时,90%的用户响应时间都能达到这个数值,那么就为系统性能分析提供了很好的参考价值。

如果把线程数改为500并发连接请求,结果Error不会出现错误,所得到性能测试数据准确。

总之,需要不断的调优对比数据,接近最佳状态,确定负载达到多少并发数量。

2023最新Jmeter接口测试从入门到精通(全套项目实战教程)

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

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

相关文章

【腾讯云 HAI域探秘】基于ChatGLM和StableDiffusion的小学一年级语文教学方案创作实践与经验分享

前言 目前腾讯云HAI正在内测中,腾讯云HAI为开发者量身打造的澎湃算力平台。无需复杂配置,便可享受即开即用的GPU云服务体验。在 HAI 中,根据应用智能匹配并推选出最适合的GPU算力资源,以确保您在数据科学、LLM、AI作画等高性能应用…

Java 算法篇-深入了解二分查找法

🔥博客主页: 小扳_-CSDN博客 ❤感谢大家点赞👍收藏⭐评论✍ 目录 1.0 二分查找法的说明 2.0 二分查找实现的多种版本 2.1 二分查找的基础版本 2.2 二分查找的改动版本 2.3 二分查找的平衡版本 2.4 二分查找的官方版本 3.0 二分查找的应用 1…

OpenCV的绘图工具(rectangle、circle、line、polylines、putText)常用方法简介【C++的OpenCV 第十五课】

🎉🎉🎉 欢迎各位来到小白 p i a o 的学习空间! \color{red}{欢迎各位来到小白piao的学习空间!} 欢迎各位来到小白piao的学习空间!🎉🎉🎉 💖 C\Python所有的入…

项目管理之如何分配项目工作任务

项目资源配置技术是项目管理中至关重要的环节,它直接影响到项目的效率、质量以及最终的成果。本文将介绍项目资源配置技术,包括小组团队主管配置、保持团队规模小型化、保持团队人员能力均衡、为保证团队速度及质量,团队资源复用数量限制以及…

智能工厂架构

引:https://www.bilibili.com/video/BV1Vs4y167Kx/?spm_id_from=333.788&vd_source=297c866c71fa77b161812ad631ea2c25 智能工厂框架 智能工厂五层系统框架 MES 数据共享 <

Leetcode—2103.环和杆【简单】

2023每日刷题&#xff08;十六&#xff09; Leetcode—2103.环和杆 实现代码 struct ring{int r;int g;int b; }sticks[10]{0};int countPoints(char * rings){char *p rings;int i;for(i 0; i < 10; i) {sticks[i].r 0;sticks[i].g 0;sticks[i].b 0;}while(*p ! \0)…

大厂面试题-为什么Netty线程池默认大小为CPU核数的2倍

目录 1、分析原因 2、如何衡量性能指标 3、总结与使用建议 1、分析原因 我们都知道使用多线程的本质是为了提升程序的性能&#xff0c;总体来说有两个最核心的指标&#xff0c;一个延迟&#xff0c;一个吞吐量。延迟指的是发出请求到收到响应的时间&#xff0c;吞吐量指的是…

【golang】Reflect反射整理、值修改、反射结构体、应用

Reflect 整理 反射是用程序检查其所拥有的结构&#xff0c;尤其是类型的一种能力&#xff1b;这是元编程的一种形式。反射可以在运行时检查类型和变量&#xff0c;例如&#xff1a;它的大小、它的方法以及它能“动态地”调用这些方法。这对于没有源代码的包尤其有用。这是一个强…

C++引用概述

变量名实质上是一段连续存储空间的别名&#xff0c;是一个标号(门牌号)&#xff0c;程序中通过变量来申请并命 名内存空间&#xff0c;通过变量的名字可以使用存储空间。引用是 C中新增加的概念&#xff0c;引用可以看作 一个已定义变量的别名。 引用的语法&#xff1a; Type&…

第二章 探究活动Activity

一、Activity的用法 1. Activity 任何活动都应该重写Activity的onCreate()方法 项目中在res添加任何资源都会在R文件生成一个相应的资源id 所有的活动都要在AndroidManifest.xml中进行注册才能生效 <activityandroid:name".FirstActivity"android:label"T…

性能测试 —— Jmeter日志查看与分析

一、Jmeter日志概览 Jmeter日志文件保存在bin目录中&#xff0c;名称为jmeter.log。我们可以在面板中直接察看日志&#xff0c;点击右上角黄色标志物可以打开日志面板&#xff0c;再次点击收起 另外&#xff0c;Jmeter可以很方便地设置日志输出级别&#xff1a; 通过这种方式修…

MySQL-----事务

事务的概念 事务是一种机制&#xff0c;一个操作序列。包含了一组数据库的操作命令&#xff0c;所有的命令都是一个整体&#xff0c;向系统提交或者撤销的操作&#xff0c;要么都执行&#xff0c;要么都不执行。 是一个不可分割的单位 事务的ACID特点 ACID&#xff0c;是指在可…

【Spring】配置文件-properties和xml

文章目录 1. 前言2. properties配置文件3. xml配置文件4. 总结 1. 前言 在Spring中,配置文件有两种,properties配置文件和xml配置文件 properties配置文件&#xff0c;在Java编程中是一种常见的配置文件形式&#xff0c;文件后缀为“.properties”&#xff0c;属于文本文件。它…

LeetCode算法题解|​ 669. 修剪二叉搜索树​、108. 将有序数组转换为二叉搜索树、​538. 把二叉搜索树转换为累加树​

一、LeetCode 669. 修剪二叉搜索树​ 题目链接&#xff1a;669. 修剪二叉搜索树 题目描述&#xff1a; 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变…

数据库系统原理第一章:数据库系统概述详解

数据库系统概述 概述基本概念数据数据库数据库管理系统数据库系统 管理发展『人工管理阶段』『文件系统阶段』『数据库系统阶段』 系统结构结构分类三级模式两层映像与数据独立性 主页传送门&#xff1a;&#x1f4c0; 传送 概述 数据库系统原理课程是一门理论与实践相结合的课…

Spring 与 Spring Boot

什么是 Spring 可以理解 Spring 是一个框架。这个框架最早来源于在差不多的 20 年前的 2002 年。 在那个时候 Java 世界的开发还是以 EJB 为主&#xff0c;因为在这之前的大部分应用都会使用服务器客户端的应用模式。 其实这个模式在现在还是在使用的&#xff0c;例如 IBM 系统…

第一章 Python基础知识

文章目录 python介绍优点应用领域web框架学习小技巧 python安装linux运行第一个程序Windows 基础数据类型算术运算符变量与赋值操作符变量赋值操作符转义符 获取用户输入与注释获取用户注释 案例&#xff1a;简单计算器实现在这里插入图片描述 总结 python介绍 python是一种面…

博文总结:交叉熵损失函数与标签平滑

文章目录 基本概念交叉熵损失函数Pytorch代码实现参考文献 李宏毅机器学习2023作业04Self-attention、李宏毅机器学习2023作业03CNN和李宏毅机器学习2023作业02Classification都是分类问题&#xff0c;都涉及到了交叉熵损失函数以及起正则作用的标签平滑技巧&#xff0c;本次博…

项目实战:给首页上库存名称添加超链接然后带fid跳转到edit页面

1、提取公共方法common.js function $(key){if(key){if(key.startsWith("#")){key key.substring(1)return document.getElementById(key)}else{let nodeList document.getElementsByName(key)return Array.from(nodeList)}} } 2、 给库存名称添加超链接 2.1、inde…

Qt Creator创建新项目警告问题

这里可以看见如果你是一些高版本会出现各种警告&#xff0c;但是可以编译通过&#xff0c;这是ClangCodeModel模块导致 解决办法 help -> About Plugins..->C ->ClangCodeModel 帮助 -> 关于插件 -> c ->ClangCodeModel取消勾选 然后重启Qt即可