性能测试之使用Jemeter对HTTP接口压测

2023-09-20 16:44:59

我们不应该仅仅局限于某一种工具,性能测试能使用的工具非常多,选择适合的就是最好的。笔者已经使用Loadrunner进行多年的项目性能测试实战经验,也算略有小成,任何性能测试(如压力测试、负载测试、疲劳强度测试等)都可以使用该工具。但我并不鼓励这样做,我们应该根据当前所处的情况,基于被测对象、时间及成本考虑,采用最合适的工具。闲话少谈,今天笔者要给大家分享的是用Jemeter来进行HTTP接口的压力测试。实际接口测试还可以使用Tsung、SoapUI等工具,但基于各方面考虑,最终采用了Jemeter。

Jemeter相对于Loadrunner来说,更轻,易于安装,如果对过程数据收集不多、测试场景不复杂的情况下,可以优先考虑。

jmeter性能测试视频教程:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到了_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1Vu411L77o/?spm_id_from=333.999.0.0

下面就说说使用Jemeter进行HTTP接口压力测试的具体使用步骤:

1、首先添加一线程组(即用户组:一个线程模拟一个用户行为,如果要模拟多个用户,则通过设置多线程来实现)

步骤一

2、因为是对HTTP接口进行压力测试,所以需要在线程组下添加一HTTP请求(通过鼠标右键->添加->Sampler->HTTP请求 完成)

步骤二

3、紧接着就是对HTTP请求进行设置了,主要设置服务器名称或IP,端口号,连接、响应时间,所采用的协议,请求类型,内容编码,路径,最后设置请求内容。

注意,路径为URL除去如http://XXX.XX.X后的内容,如URL为,则服务器名称或IP应该填写,端口默认80,路径应该填写“/share/index.php”

步骤三

4、因为这里的请求内容使用的是json字符串,所以需要在头部进行声明,否则请求就要报错。所以需要给HTTP请求添加一信息头(通过鼠标右键->添加->配置元件->HTTP信息头管理器 完成)

步骤四

5、配置HTTP头信息,添加对应名称和值,这里添加“Content-Type”,值为“application/json;charset=utf-8”;如果头还需要添加其它信息,如id、token等,也应如此进行配置

步骤五

6、到这一步看起来就可以了,但是我们执行时并不能看到执行结果。所以还应该为该请求添加一结果监听器“查看结果树”(通过鼠标右键->添加->监听器->查看结果树 完成)

步骤六

按照上面步骤,可以依次添加“聚合报告”(总体线程执行结果统计),图形结果(总体线程执行结果统计图),“用表格察看结果”(每个线程执行的表格统计情况)等。

PS(如果在进行非接口测试,如页面测试过程中发现错误,可能是少了COOKIE信息,所以可以为线程组添加一个Cookie头,可以通过鼠标右键->配置元件->HTTP Cookie管理器 完成)

 jmeter性能测试视频教程:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到了_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1Vu411L77o/?spm_id_from=333.999.0.0

7、如果HTTP请求没有问题,那么我们要进行性能测试,那就需要设置一个断言(即Loadrunner中的检查点),即只要检查到指定的返回值(如返回结果包含字符“success”)则说明执行成功。添加断言通过右键请求->添加->断言->响应断言 完成。

步骤七1

设置响应断言:

步骤七2

OK,到了这里,我们的脚本工作完成的八九不离十了,但是我们做性能测试,为了使测试结果更加准确,同时避免单点限制等原因,还应该对请求的值进行参数化。

8、参数化,这里主要将通过CSV文件进行的参数化。

1)首先我们新建一个CSV文件,然后录入我们要参数化的信息。

我们也可以新建一个记事本,然后输入参数化的内容信息,多个参数值间以英文逗号隔开,回车换行如:

Username1,password1

Username2,password2

点击保存,然后把记事本的文件名改为test.csv,注意这里的csv是文件扩展名。

2)在HTTP请求新建一个CSV Data Set Config元件(通过鼠标右键->添加->配置元件->CSV Data Set Config 完成)

3)配置CSV Data Set Config元件,这里主要需要指明参数化取值文件路径(即前面我们新建的CSV文件),参数名(如上面CSV文件中主要有两个参数值,我们可以分别用username和passwd作为参数名,参数名类似程序中定义的变量名)

步骤八1

4)对要参数化的值进行参数化。即用 ${参数名} 来替换要参数化的值。

步骤八2

9、通过上面步骤,就完成了参数化脚本的设置。现在要执行,那么首先来配置线程组,主要包括线程数,启用时间,循环次数。我们可以尝试设置不同的线程数,重复次数,来进行接口的压力测试了。

步骤九

10、最后我们就可以点击上面的绿色执行按钮来执行测试了。当然在执行过程中,为了后面更好的分析测试,可以借助其它工具(linux如nmon)对服务器的资源使用情况、网络情况,以及程序运行情况进行结果收集,最后对压力瓶颈进行准确的定位。

步骤十

 

  jmeter性能测试视频教程:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到了_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1Vu411L77o/?spm_id_from=333.999.0.0

更多推荐

跨模态检索论文阅读:(PTP)Position-guided Text Prompt for Vision-Language Pre-training

(PTP)Position-guidedTextPromptforVision-LanguagePre-training视觉语言预训练的位置引导文本提示摘要视觉语言预训练(VLP)已经显示出将图像和文本对统一起来的能力,促进了各种跨模态的学习任务。然而,我们注意到,VLP模型往往缺乏视觉基础/定位能力,这对许多下游任务

【深度学习】 Python 和 NumPy 系列教程(廿四):Matplotlib详解:2、3d绘图类型(10)3D箱线图(3D Box Plot)

目录一、前言二、实验环境三、Matplotlib详解1、2d绘图类型2、3d绘图类型0.设置中文字体1.3D线框图(3DLinePlot)2.3D散点图(3DScatterPlot)3.3D条形图(3DBarPlot)4.3D曲面图(3DSurfacePlot)5.3D等高线图(3DContourPlot)6.3D向量

ICCV 2023 | 沉浸式体验3D室内设计装修,基于三维布局可控生成最新技术

文章链接:https://arxiv.org/abs/2307.09621360°场景布局可控合成(360-degreeImageSynthesis)目前已成为三维计算机视觉领域一个非常有趣的研究方向,在虚拟三维空间中沉浸式的调整和摆放场景对象,可以为用户带来身临其境的感觉,非常适合应用在3D家居模拟装饰领域。本文提出

低代码提案管理应用:发挥员工“金点子”,小提案能有大作用

提案也称合理化建议,是制造企业实施精益管理的重要抓手。制造企业常常采用改善提案制度,引导和鼓励公司全体员工积极主动地提出任何能够改善企业经营质量、提高管理能力的建议。精益管理在日本丰田汽车公司发扬光大,提案管理也是如此。丰田的员工改善提案制度有超过50年的历史,据统计,1986年丰田公司合理化建议数为2,648,710

【SpringMVC】JSR303与拦截器的使用

文章目录一、JSR3031.1JSR303是什么1.2JSR303的好处包括1.3常用注解1.4实例1.4.1导入JSR303依赖1.4.2规则配置1.4.3编写校验方法1.4.4编写前端二、拦截器2.1拦截器是什么2.2拦截器与过滤器的区别2.3.应用场景2.4快速入门2.5.拦截器链2.6登录拦截权限案例2.6.1

Ajax基础笔记

Ajax(AsynchronousJavaScriptandXML)是一种用于在网页上实现异步通信的技术。它使得网页能够在不重新加载整个页面的情况下与服务器进行数据交换,实现了网页的动态更新,提升了用户体验。一、Ajax的工作原理使用JavaScript创建XMLHttpRequest对象,然后使用该对象向服务器发送H

软件测试/测试开发丨利用ChatGPT自动生成测试用例思维导图

点此获取更多相关资料简介思维导图是一种用图形方式表示思维和概念之间关系的工具:有些公司会使用思维导图编写测试用例,这样做的优点是:1.可视化和结构化。2.易于理解,提高效率。而ChatGPT是无法直接生成xmind格式的文件的,但是依然可以通过“曲线救国”的方式去编写思维导图格式的测试用例。实践演练那么如何让ChatG

线程安全问题的原因及解决方案

要想知道线程安全问题的原因及解决方案,首先得知道什么是线程安全,想给出一个线程安全的确切定义是复杂的,但我们可以这样认为:如果多线程环境下代码运行的结果是符合我们预期的,即在单线程环境应该的结果,则说这个程序是线程安全的。例如:使用两个线程分别对同一个变量进行修改,得出的结果与使用一个线程对这个变量进行修改的结果不同,

【推荐】SpringMVC与JSON数据返回及异常处理机制的使用

🎬艳艳耶✌️:个人主页🔥个人专栏:《【推荐】Spring与Mybatis集成整合》⛺️生活的理想,为了不断更新自己!1.JSON在SpringMVC中,JSON数据返回通常是通过使用`@ResponseBody`注解将Java对象转换为JSON格式,并直接发送给客户端。该注解可以用于Controller中的方法,用

【Unity基础】4.动画Animation

【Unity基础】4.动画Animation大家好,我是Lampard~~欢迎来到Unity基础系列博客,所学知识来自B站阿发老师~感谢(一)Unity动画编辑器(1)Animation组件这一张我们要学习如何在unity编辑器中,编辑一个动画。其中所使用到的组件是Animation,那什么是Animation组件呢?

耐蚀合金连续油管制造工艺 学习记录

声明本文是学习GB-T42858-2023耐蚀合金连续油管.而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们5制造工艺5.1通则本文件所包含的合金应采用吹氧转炉冶炼或电炉冶炼或高炉冶炼(仅对马氏体或马氏体/铁素体不锈钢)或真空感应熔化工艺,并配合氩氧脱碳、真空氧气脱碳、真空电弧重熔、电渣重熔及真空电

热文推荐