JMeter - http请求压力测试

参考:

  • 官方地址:https://jmeter.apache.org/
  • https://www.jianshu.com/p/65d8edebbe9a
  • https://blog.csdn.net/u012111923/article/details/80705141
  • https://blog.csdn.net/weixin_43652535/article/details/94591803

一、简介

参考官方文档的介绍或者百度百科:https://baike.baidu.com/item/Jmeter/3104456?fr=aladdin;简单来说就是个压力测试工具。

二、示例

需求:

  • 现需要对一个http接口进行压力测试并生成测试报告,POST,请求方式是json,接口正常返回响应码是0

步骤:

  • 1.jmeter新建一个线程组
  • 2.新建http请求,设置请求方式、接口地址、请求头、请求参数等
  • 3.添加断言
  • 4.添加查看结果树
  • 5.生成HTML测试报告
2.1 新建线程组

测试计划下新建一个线程组:
JMeter - http请求压力测试_第1张图片
新建好的线程组如下图所示,主要关注线程属性配置(Thread Properties):

  • Number of Threads (users):线程数(虚拟用户数),即设置请求的线程数
  • Ramp-Up Period (in seconds):准备时长,即设置的线程全部启动完需要的时间。例如线程数100,准备时长是10s,那么10s启动100个线程;如果设置为0,则同时启动100个线程
  • Loop Count:循环次数,即每个线程发送请求的次数。例如线程数100,循环次数为2,那么总请求次数为200;如果勾选了Forever(永远),那么这100个线程就会一直执行,直到手动停止
  • Delay Thread creation until needed:直到需要时延迟线程的创建
  • Scheduler:调度器,设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
    • Duration(seconds):持续时间(秒),测试持续时间,会覆盖结束时间
    • Startup delay(seconds):启动延迟(秒),测试延迟启动时间,会覆盖启动时间

注:这里设置100个线程同时请求,每个线程请求2次
JMeter - http请求压力测试_第2张图片

2.2 新建http请求
(1)设置http请求参数

主要设置协议、主机、端口、请求方式、请求uri以及请求参数等,例如现在要测试的接口为:POST http://localhost:8080/test/user,请求参数是json,那么需要设置为:

  • Protocol:协议,http
  • Server:主机,localhost
  • port:端口,8080
  • Method:请求方式,POST
  • Path:请求uri,/test/user
  • RequestBody:请求体,请求的json参数。当然也支持设置表单类型的参数或者文件
    JMeter - http请求压力测试_第3张图片
(2)设置请求头

由于是使用的json请求,所以需要在请求头添加:Content-Type:application/json,如下图所示:
JMeter - http请求压力测试_第4张图片
由于接口有签名认证,所以还添加了accessKey、sign、ts这3个自定义的请求头参数:
JMeter - http请求压力测试_第5张图片

2.3 添加结果树(View Result Tree)

用于查看请求响应
JMeter - http请求压力测试_第6张图片

2.4 添加响应断言

对服务器的响应接口进行断言校验,来判断接口测试得到的接口返回值是否正确。

断言配置:

  • 1.Apply to:
    • 通常发出一个请求只触发一个请求,所以勾选Main sampie only就可以
    • 若发一个请求可以触发多个服务器请求,就有main samplesub-sample之分
  • 2.Field to Test(要测试的响应字段)
    • Text Response:响应文本,一般的http响应,都勾选这个
    • Response Code:http响应代码,如101、200、302、404、501等。当我们要验证404、501等http响应代码时,需要勾选ignore status。因为当http 响应代码为400、500时,jmeter默认这个请求时失败的;
    • Response Message:响应信息,响应代码对应得响应信息,例如“OK"
    • Response Headers:响应头
    • Request Headers:请求头
    • URL Sampled:url样本是对sample的url进行断言,如果请求没有重定向,就请求url,如果有重定向,就请求url和重定向url
    • Document(text):
    • Request Data:请求数据
  • 3.模式匹配:
    • Contains:包括:返回结果包括你指定的内容,支持正则匹配
    • Matches:正则匹配 。用正则表达式匹配返回结果,但必须全部匹配
    • Equals:相等,当返回值固定时,可以返回值做断言
    • SubString:与Contains差不多,都是指返回结果包括你指定的内容,但是subString不支持正则字符串
    • Not:相当于取反。 如果断言结果为true,勾选Not后,最终断言结果为false。如果断言结果为false,勾选Not后,则最终断言结果为 true
  • 4.要测试的模式:输入结果期望值(空格要去掉)
    JMeter - http请求压力测试_第7张图片
    JMeter - http请求压力测试_第8张图片
2.5 执行

断言结果,根据上面设置的响应断言配置,响应结果包含"errorCode":"0"就表示通过,如下图所示:
JMeter - http请求压力测试_第9张图片
若不包含"errorCode":"0",则不通过,断言结果如下图所示:
JMeter - http请求压力测试_第10张图片
在结果树视图下则会显示请求的响应信息,包括断言结果,绿色表示通过,红色表示不通过:
JMeter - http请求压力测试_第11张图片

2.6 生成HTML报告

mac环境下的:

$ cd xxx/apache-jmeter-5.1.1/bin
$ ./jmeter -n -t /Users/jmeter/xxx接口测试.jmx -l /Users/jmeter/测试结果.html -e -o /Users/jmeter/测试结果

说明:

  • /Users/jmeter/xxx接口测试.jmx:这是测试计划文件
  • /Users/jmeter/测试结果.html:路径对就行了,后缀名随意,主要是记录一些测试结果的,图形界面的测试报告数据记录会用到
  • /Users/jmeter/测试结果:存放html结果的文件夹,文件夹名字随意

生成的报告可以在测试结果文件夹中,打开index.html看到,测试结果如下图所示:
JMeter - http请求压力测试_第12张图片
JMeter - http请求压力测试_第13张图片

你可能感兴趣的:(jmeter,jmeter,html报告,压力测试)