目录
[1 Jmeter工具的不同控件的功能概述](#1 Jmeter工具的不同控件的功能概述)
[1.1 线程组](#1.1 线程组)
[1.2 取样器](#1.2 取样器)
[1.3 配置元件](#1.3 配置元件)
[1.4 监听器](#1.4 监听器)
[1.5 定时器](#1.5 定时器)
[1.6 逻辑控制器](#1.6 逻辑控制器)
[1.7 前置处理器](#1.7 前置处理器)
[1.8 后置处理器](#1.8 后置处理器)
[1.9 断言](#1.9 断言)
[2 Jmeter写单接口测试脚本](#2 Jmeter写单接口测试脚本)
[2.1 添加线程组 - 普通线程组](#2.1 添加线程组 - 普通线程组)
[2.2 添加取样器](#2.2 添加取样器)
[2.3 添加消息头管理器](#2.3 添加消息头管理器)
[2.3 添加查看结果树](#2.3 添加查看结果树)
[2.4 拓展介绍 编辑](#2.4 拓展介绍 编辑)
注:还不会安装的同学,参考Mac环境下安装JDK与JMeter详细教程-CSDN博客
1 Jmeter工具的不同控件的功能概述
1.1 线程组
用来性能场景设计的,默认有三种:setup、teardown、普通线程组。
还有一些通过插件增加的其他线程组,后续将性能场景设计的时候会讲到。
1.2 取样器
根据不同的协议,选择不同的取样器
http取样器用的最多;jdbc请求连接数据的;调试取样器用来调试脚本
1.3 配置元件
整个脚本的公共信息,它的优先级最高,运行时最先执行
如:信息头管理器、用户定义变量等
1.4 监听器
从不同维度展示测试的结果
如:查看结果数、聚合报告等。还有一些插件带来的监听器,也是后续讲到
1.5 定时器
控制运行节奏,比如控制某个请求延迟发送请求,不过这个性能测试用的比较少
1.6 逻辑控制器
控制脚本运行逻辑,比如循环和判断
1.7 前置处理器
取样器执行之前,先执行的一类元件。如:用户参数等
1.8 后置处理器
取样器执行之后,对数据处理的一类元件。如:json提取器、正则提取器等
1.9 断言
用户给接口请求做结果断言判断是否符合预期。
接口测试会用到比较多,性能测试一般不会使用
2 Jmeter写单接口测试脚本
注:这里尽量找项目的接口文档,编写接口脚本
接口测试五大要素:
请求地址 : 取样器 / 配置元件 - http请求默认值
请求方法 : 取样器
请求参数 : 取样器
请求头部 : 配置元件 - http信息头管理器
响应消息体 : 监听器 - 察看结果树
2.1 添加线程组 - 普通线程组
右键测试计划,添加线程组


2.2 添加取样器
线程组右键,添加取样器 --> http请求


注:
1、协议:当http请求时,可以不写。但是https时一定要写
2、服务器ip: 项目的ip或者域名,前后不能有空格
3、端口:不写默认8080,如果项目有自己的端口一定要带上。https协议这里是443
4、请求方法:根据接口协议定,不要写错
5、路径:接口地址,前后不能有空格
6、编码:utf8 -- 支持中文格式字符
6.1 当消息体是json格式,并其中有中文或特殊字符时,【两个二选一】
1、配置编码为 utf8;
2、在请求头里配置:ContentType:application/json;charset=utf8
6.1 当参数为表单的数据,以上两个配置无效,需要勾选参数列表种的'编码'
(这是对参数进行 urlencode 编码,否则会乱码;一般建议默认都勾上)
7、请求体:
7.1 参数和消息体数据是互斥,不能同时使用。
7.2 当接口请求体为json或xml ,就把请求体写在消息体数据中;
json格式: {"name":"tricy"} --键值对的
XML格式: <name>polly</name> 【soap协议 webservice接口】
7.3 当接口为 GET方法的时候, 请求体一般都是表单格式请求体就写在【参数】中
请求体的参数值的类型为数字/ 字符串类型时,值是没有双引号。
表单数据的值是没有类型之分的。(因为这个值都是跟在URL地址后面的,会进行urlencode编码,都是文本,所以没有类型之分)
8、自动重定向:直接跳跃到最终的地址上,查看结果树中看不到中间过程,所以无法提取到中间过程的数据。【一般不勾选】
9、跟随重定向:默认勾选,查看结果树中看到重定向的过程,而且我们可以提取过程中的数据。
10、使用keepalive: 默认勾选,使用http的长连接;不勾选,就是短连接。(http协议默认是长连接协议,连上之后保持一段时间再释放。节省TCP三次握手和四次挥手的资源消耗,默认是长连接
11、对post使用multipart/form-data:文件上传的接口需要勾选这个二进制流的数据格式
2.3 添加消息头管理器
线程组右键 --> 配置元件 --> http信息头管理器
注:
如果是json消息体数据,必须添加消息头,写上 Content-Type:application/json;
application/json :json数据,请求体为json就一定要配置添加消息头
application/x-www-form-urlencoded : 表单数据,可以不加content-type请求头
form-data:post方法提交表单数据,可以不加content-type请求头
还有其他的请求头是否要加看开发接口封装: 接口文档 + 抓包+沟通开发确认
2.3 添加查看结果树
线程组右键 --> 监听器 --> 查看结果树
发送请求成功会出现如下信息

注:查看结果树的结果检查
1、绿色,仅仅代表网络成功,服务器收到并处理了请求;http的响应状态码为 1xx 2xx 3xx,不代表结果符合预期,要进行响应结果的确认 判断接口是否执行通过。
2、红色,仅仅代码网络请求失败,响应状态码为 4xx\5xx。
3、HTTP取样器结果分析【单位是ms】
3.1 load time加载时间=响应时间:
从发送请求到收到最后的响应时间,所花费的时间,即响应时间(RT)
3.2 Latency延迟时间 <= 响应时间:
从发送请求到收到第一个响应【报文太大,需要分组分包发送】,所花费的时间。
3.3 connect time(连接时间):建立连接所花费的时间,例如TCP的三次握手。
http协议不太熟悉的同学,可以参考(7)http请求、https请求详解-CSDN博客
4、如果响应结果是中文乱码:需要修改jmeter配置文件
4.1 进入Jmeter的bin目录下,找到jmeter.properties文件,
4.2 将#sampleresult.default.encoding=ISO-8859-1的注释去掉,
4.3 改成:sampleresult.default.encoding=UTF-8,
4.4 重启Jmeter,会再次重新加载配置文件
2.4 拓展介绍 
右上角的运行结果:
前面是运行时间
三角形: Jmeter工具的日志,运行报错红色的数字
后面的数字:目前正在运行的线程数 / 将要启动的线程数 【负载测试】

http请求默认值:
1、多个接口的公共部分可以放在默认值里,简化配置。就不用给每一个接口添加一个(2.3 添加消息头管理器)
2、如果接口本身也配置了消息头管理器,根据就近原则以接口自己的配置为准发送