前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jmeter压测工具入门篇

Jmeter压测工具入门篇

原创
作者头像
魏景维
修改2022-11-11 10:44:33
2.6K1
修改2022-11-11 10:44:33
举报

背景:本文档主要内容是jmeter脚本入门配置以及调试方法,借助已有的jmeter脚本模板,快速理解并写出一个成功的jmeter脚本用例。

1. jmeter脚本编写

1.1 jmeter脚本模版

拿到脚本模板文件后,直接在模板上做相应更改就行,模板中包含了必备配置和选择配置,可以快速完成一个成功的脚本,减少试错节省时间。

模板可以看到很多组件。高亮的部分是必备配置,置灰的选择配置,可以根据自己的使用场景设置哪些需要高亮,哪些需要置灰。

2. jmeter必备配置

2.1 线程组

使用jmeter进行性能测试时,所有的任务都是基于线程组的,一个线程组可以模拟若干个用户:

2.1.1 添加线程组

右键测试计划,选择线程组,可以看到线程组面板如下:

1)线程组默认选择在取样器错误后,继续执行后面的请求

2)线程数、ramp-up时间、循环次数默认为1

2.1.2 调度器

调度器默认置灰的,勾选后可使用。调度器可配置持续时间和启动延迟时间,用来模拟稳定性能压测。

(延迟时间常用于多个线程组串行执行的时候,若是只有测试计划中只有一个线程组,可配置为0)

2.2 HTTP请求

2.2.1 添加http请求,面板中请求url配置如下:

2.2.2 除了url配置外,面板中传参模块有3种方式:

1)键值对传参

2)消息体数据传参(常用):

3)文件上传类型:

步骤一:部分接口传参可能需要导入一个文件,可以通过文件上传实现

步骤二:抓包查看接口头部中Content-Type的类型是什么?由下图可见,该接口传参类型为:image/jepg

步骤三:最重要的一步,勾选对post使用multipart/from-data,高级设置中选择java实现

2.3 断言

常用BeanSell断言,jmeter在它的bean shell中内置了变量,用户可以通过这些变量与jmeter进行交互。脚本常用内容如下:

代码语言:javascript
复制
//断言响应码为200的请求
if(!ResponseCode.equals("200")){
	Failure = true;
	FailureMessage=ctx.getPreviousResult() + " 请求失败,返回码:" + ResponseCode + "\n";
	String response = new String(ResponseData);
	log.info(FailureMessage);
	log.info("=============================分割1==========================");
	log.info(response);
	return;
}

//断言响应体中的内容
String response = new String(ResponseData);
Failure = !(response.contains("<!--STATUS OK-->")); //需要修改contains中的内容,根据响应体中的实际内容进行断言

if (Failure) {
	Failure = true;
	FailureMessage=ctx.getPreviousResult() + "未发现断言结果" + response + "\n";
	log.info("=============================分割2==========================");
	log.info(response);
	return;
	
}

断言只需要根据接口响应体中的内容更改 Failure = !(response.contains("<!--STATUS OK-->")) 这一句,其余无需更改!

2.4 HTTP信息头管理器

http信息头管理器在发送请求时起重要作用,通常在用jmeter向服务器发送请求的时候,往往后端需要一些验证信息。例如web服务器需要将cookie带过去给服务器验证,一般就是放在header头中。因此可以将请求头中的数据以键值对的形式放在http信息头管理器中。

以下是常用的头部字段:

2.4.1 content-type

content-type作用是告诉服务器我们发送的请求是哪种格式的。常用content-type有以下3种:

1)content-type: application/x-www-form-urlencoded

http请求默认值,若不指定content-type,默认使用这种格式。这种格式的参数可以在“参数”或者“消息体数据”里输入,格式不同,如下图所示:

2)content-type:application/json

支持格式为json

3)content-type:multipart/form-data

该类型是在post请求时,支持文件上传参数的方式。具体步骤见1.2.2 http请求中的传参方式。

步骤一:部分接口传参可能需要导入一个文件,可以通过文件上传实现

步骤二:抓包查看接口头部中Content-Type的类型是什么?由下图可见,该接口传参类型为:image/jepg

步骤三:最重要的一步,勾选对post使用multipart/from-data,高级设置中选择java实现

2.4.2 accept-encoding

accept-encoding是客户端表明自己接的编码方法,通常指定压缩方法,例如gzip,deflate等。实际从浏览器访问网页是默认带上该配置的,因此jmeter设计脚本时,可以在请求头中配置。

accept-encoding:gzip, deflate, br。意思是支持这3种压缩方法,服务器可能返回content-encoding:gzip,意思是服务器以gzip的方式进行压缩。

2.5 用户定义的变量

编写脚本过程中,常常有大量重复的变量需要设置,如果修改的话,要修改很多次。为了节省这部分耗时,我们可以配置用户定义的变量组件来定义全局变量,变量有改动只需要改动一次,并且更好管理。

  1. 使用步骤如下:

2、经常设置为变量的属性有哪些:

1)线程组相关属性:线程数、ramp-up时间、持续时间等,如上图一样

2)http请求中的域名或者ip:通常一个项目中使用的域名就几个,而接口有几十甚至上百,因此可以将域名或者ip设置为全局变量

2.6 HTTP请求默认值

该组件可以为我们设置http请求默认值,当一个测试计划中有多个请求都发送到同一个server,就可以直接设置默认的域名或者ip,然后http请求中不填写域名,最终请求时会默认使用http请求默认值中的值。

注意:若出现以下2种配置情况:

1) 若是一个测试计划中设置了两个http请求默认值,最终以前一个为准

2)若是测试计划中,设置了全局http默认请求值,某个线程组下也设置了一个http默认请求值,最终以线程组下的设置为准

2.7 查看结果树

查看结果树组件主要是调试脚本,配置后不用做任何设置,就可以看到请求的发送和返回信息。以下说明查看结果树如何快速调试脚本:

2.7.1 面板左侧展示请求成功/失败的状态,后侧取样器中可以看到状态码。以下是常见状态码:

200:服务器已经成功处理了请求

400:错误请求,服务器不理解请求的语法

401:未授权,通常是未登录或者登陆态失效

503:服务不可用,无法处理请求

2.7.2 请求中分两部分,一部分是请求体,一部分是请求头

2.7.3 响应数据中分两部分,一部分是响应体,一部分是响应头

2.8 聚合报告

2.9 后端监听器

后端监听器是一个异步监听器,可以将压测数据推到数据库中,提供了influxDB、graphite选项可选择。我们压测时选择influxdb做持续存储,结合grafana面板监控jmeter压测数据。

2.9.1 后端监听器的面板如下:

2.9.2 如何配置监控面板

1)拿到默认的脚本模版后,更改influxdbUrl,从默认的host_to_change改成自己使用的地址

我们一般使用为:http://jmeter-influxdb:8086/write?db=jmeter

2)更改application为自己的项目名称,可快速辨认即可。

3. jmeter脚本调试

将脚本模板的信息修改为自己要用的接口后,需要调试脚本,看单接口能否调试通过。

3.1 脚本启动方法

调试脚本只需要跑一条数据即可,以下有两种调试方法,推荐第二种

1)修改线程组配置,将threads和loop count改成1,点击start运行

2)右键线程组,点击validate,该线程组下的请求只运行一次

3.2 调试结果查看-查看结果树

脚本调试的结果首选查看结果树组件,配置后不用做任何设置,就可以看到请求的发送和返回信息。以下说明查看结果树如何快速调试脚本:

3.2.1 面板左侧展示请求成功/失败的状态,后侧取样器中可以看到状态码。以下是常见状态码:

200:服务器已经成功处理了请求

400:错误请求,服务器不理解请求的语法

401:未授权,通常是未登录或者登陆态失效

503:服务不可用,无法处理请求

3.2.2 请求中分两部分,一部分是请求体,一部分是请求头

3.2.3 响应数据中分两部分,一部分是响应体,一部分是响应头

3.3 调试结果查看-jmeter日志查看器

当脚本运行后,查看结果树中无响应的时候,可以查看日志进行错误分析。

选择jmeter选项->勾选日志查看,面板右下角会展示日志模块:

日志模块中错误信息一般会以info或者error的前缀打印出来

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. jmeter脚本编写
    • 1.1 jmeter脚本模版
    • 2. jmeter必备配置
      • 2.1 线程组
        • 2.1.1 添加线程组
        • 2.1.2 调度器
      • 2.2 HTTP请求
        • 2.2.1 添加http请求,面板中请求url配置如下:
        • 2.2.2 除了url配置外,面板中传参模块有3种方式:
      • 2.3 断言
        • 2.4 HTTP信息头管理器
          • 2.4.1 content-type
          • 2.4.2 accept-encoding
        • 2.5 用户定义的变量
          • 2.6 HTTP请求默认值
            • 2.7 查看结果树
              • 2.7.1 面板左侧展示请求成功/失败的状态,后侧取样器中可以看到状态码。以下是常见状态码:
              • 2.7.2 请求中分两部分,一部分是请求体,一部分是请求头
              • 2.7.3 响应数据中分两部分,一部分是响应体,一部分是响应头
            • 2.8 聚合报告
              • 2.9 后端监听器
                • 2.9.1 后端监听器的面板如下:
                • 2.9.2 如何配置监控面板
            • 3. jmeter脚本调试
              • 3.1 脚本启动方法
                • 3.2 调试结果查看-查看结果树
                  • 3.2.1 面板左侧展示请求成功/失败的状态,后侧取样器中可以看到状态码。以下是常见状态码:
                  • 3.2.2 请求中分两部分,一部分是请求体,一部分是请求头
                  • 3.2.3 响应数据中分两部分,一部分是响应体,一部分是响应头
                • 3.3 调试结果查看-jmeter日志查看器
                相关产品与服务
                Grafana 服务
                Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档