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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关推荐
美团测试工程师9 小时前
九大高效的前端测试工具与框架
软件测试·测试工具·jmeter
njnu@liyong9 小时前
图解HTTP-HTTP报文
网络协议·计算机网络·http
ZachOn1y10 小时前
计算机网络:应用层 —— 应用层概述
计算机网络·http·https·应用层·dns
love静思冥想12 小时前
JMeter 使用详解
java·jmeter
GPT012316 小时前
大模型日报 2024-12-20
程序人生
测试者家园16 小时前
ChatGPT生成接口文档的方法与实践
软件测试·chatgpt·测试用例·接口测试·接口文档·ai赋能·用chatgpt做软件测试
Heaven64518 小时前
6.8 Newman自动化运行Postman测试集
软件测试·自动化·接口测试·postman·newman
十二测试录19 小时前
Python基础——字符串
开发语言·经验分享·python·程序人生·职场发展
Graceful_scenery20 小时前
https双向认证
服务器·网络·网络协议·http·https
测试老哥1 天前
Python自动化测试图片比对算法
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例