如何使用Jmeter对HTTP接口进行压力测试?

embedded/2024/9/24 11:20:49/

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

Jmeter相对于Loadrunner来说,更轻,易于安装,如果对过程数据收集不多、测试场景不复杂的情况下,可以优先考虑。笔者的使用的工具版本为Apache JMeter3.0,如果你们使用的是其它版本,可以与该版本界面有一定出入。

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

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

https://i-blog.csdnimg.cn/blog_migrate/dcad27a29ab37a0ab154d8d6f348b52d.png" width="631" />

2、因为是对HTTP接口进行压力测试,所以需要在线程组下添加一HTTP请求(通过鼠标右键->添加->Sampler->HTTP请求 完成) https://i-blog.csdnimg.cn/blog_migrate/b26c2646c751e14fc14b51f16299b5e6.png" width="610" /> 

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

注意,路径为URL除去如http://XXX.XX.X后的内容,如URL为http://www.51testing.com/?action-login,则服务器名称或IP应该填写http://www.51testing.com,端口默认80,路径应该填写“/?action-login”

https://i-blog.csdnimg.cn/blog_migrate/4fa44fa98e83fc56154f1e49a3b36646.png" width="609" />

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

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

https://i-blog.csdnimg.cn/blog_migrate/8bb84303e6076107d242ce026d11c9e1.png" width="596" />

6、到这一步看起来就可以了,但是我们执行时并不能看到执行结果。所以还应该为该请求添加一结果监听器“查看结果树”(通过鼠标右键->添加->监听器->查看结果树完成)https://i-blog.csdnimg.cn/blog_migrate/07a86bf5f3db309befb14ed4477ba6ac.png" width="634" /> 

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

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

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

https://i-blog.csdnimg.cn/blog_migrate/a678d186c0c4b61e14facd25dc8041a5.png" width="531" />

https://i-blog.csdnimg.cn/blog_migrate/a3a0f3cc58907a7d4771ba7e8875d41e.png" width="474" />

 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作为参数名,参数名类似程序中定义的变量名)

 https://i-blog.csdnimg.cn/blog_migrate/0da1fbf91097a7da2cd115d22815ac68.png" width="598" />

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

https://img-blog.csdnimg.cn/direct/fc91b07c277d4aedb48a4c2242009da1.png" width="882" />​

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

https://img-blog.csdnimg.cn/direct/15f11b9000784d40a96da05717b0d9b0.jpeg" width="634" />


http://www.ppmy.cn/embedded/94106.html

相关文章

AJAX基础知识

AJAX(Asynchronous JavaScript and XML)是一种技术,用于在网页加载时从服务器异步获取数据,而无需重新加载整个页面。它允许在后台与服务器进行通信,提升网页的交互性和用户体验。AJAX 通常结合 JavaScript 和 XML&…

MBTI 性格测试小程序实战

MBTI 性格测试应用介绍 参考项目:16Personalities(https://www.16personalities.com/ch) MBTI 实现方案介绍 核心组成: 题目用户答案评分规则 题目结构 暂时使用JSON,便于理解,result代表题目对应的…

http跨域网络请求中的CORS(跨源资源共享) 那些事 -- HTTP跨域请求, chrome插件跨域请求使用详解, origin格式,origin通配符等

在我们进行网络应用开发的时候,如果用到了跨域网络请求,则不可避免的就会遇到http跨域网络请求 CORS的问题,今天就和大家来聊聊跨域网络请求中的CORS的那些事。 跨源资源共享(CORS) CORS 是一种基于 HTTP 头的机制&a…

【Linux】解锁进程地址空间奥秘,高效环境变量的实战技巧

环境变量和进程地址空间 1. 环境变量1.1. 概念1.2. 常见环境变量1.3. 和环境变量相关的命令 2. 命令行参数2.1. int argc、char* argv[]2.2. char* env[] 3. 环境变量的特性4. 环境变量的获取4.1. 代码方式4.2. 系统调用方式 5. 环境变量的配置文件6. 程序地址空间7. 进程地址空…

【AI在金融领域的应用】AI在金融风险管理、量化交易等领域的应用

AI在金融领域的应用 AI在金融风险管理、量化交易等领域的应用 引言 随着人工智能(AI)技术的快速发展,金融行业已经成为AI应用的重要领域之一。AI在金融中的应用不仅极大地提高了运营效率,还在风险管理、量化交易、客户服务等方面…

HTTP、HTTPS、SOCKS5三种协议特点

在互联网通信中,HTTP、HTTPS和SOCKS5是三种至关重要的协议,它们各自具有独特的特点和应用场景。本文将详细探讨这三种协议的特点,帮助读者更好地理解它们在网络通信中的作用。 一、HTTP协议特点 HTTP(Hypertext Transfer Protoc…

理解 Objective-C 中 +load 方法的执行顺序

在 Objective-C 中,load 方法是在类或分类(category)被加载到内存时调用的。它的执行顺序非常严格,并且在应用启动过程中可能会导致一些令人困惑的行为。理解 load 方法的执行顺序对调试和控制应用的初始化过程非常重要。 load 方…

数据中台:业务模型 VS 算法模型,到底该怎么用?

提到数据,就必须提到各种模型。小伙伴们经常有疑惑:从4P、SWOT、RFM到线性回归、决策数、Kmean聚类,都有人管它们叫模型,那这些模型到底有啥区别?今天一文讲清,大家看完再也不迷路哦。 一个例子&#xff0…