Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析


目录

什么是Jmeter接口测试?
什么是Jmeter压力测试?


一、什么是Jmeter接口测试

1、什么是接口测试

接口测试的原理是,通过测试程序或工具(Jmeter),模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理, 然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。

2、Apache Jmeter简介

Jmeter,是Apache组织开发的基于Java的压力测试工具,是一个开源软件,它可以用于对服务器,网络 或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。可以使用它做性能的图形分析或在大并发负载测试服务器/脚本/对象。

3、用Jmeter做接口测试过程

一般分四个步骤:
(1)添加线程组
(2)添加http请求 、响应断言等等
(3)在http请求中写入IP端口、路径、请求方式和参数
(4)添加查看结果树,调用接口、查看返回值

(1)添加线程组
打开Jmeter 安装包,进入\bin 中,找到"jmeter.bat", 点击打开即可。
在下图打开的Jmeter 页面中,右键“测试计划” -> “添加” -> “Threads(Users)” -> “线程组”, 建立线程组。
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析

2)添加http请求 、响应断言等等
右键“线程组” -> “添加” -> “Sample” -> “HTTP请求”
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析
(3)在http请求中写入IP端口、路径、请求方式和参数
输入“服务器名称或IP”,对应的端口号, 选择请求方式,输入对应的路径,添加参数及值。
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析
(4)添加查看结果树,调用接口、查看返回值
右键“线程组” -> “添加” -> “监听器” -> “察看结果数”, 添加“察看结果数”, 以察看运行后的结果,如果所示。
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析4、接口测试关注点:Get与Post的主要区别
(1)Get请求是将请求参数内容放在请求路径后面或是parameters里面
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析

(2)Post请求一般是将请求参数内容放在请求体Body Date里面
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析
4、Jmeter参数化

(1)利用函数助手获取参数值
(2)利用配置元件(CSV Data Set Config)
(3)正则表达式
(4)用户自定义变量

(1)利用函数助手获取参数值
_Random函数是从某数据段随机读取数据替换参数,当需要添加多条数据记录且某些字段需要唯一性时使用
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析(2)利用配置元件(CSV Data Set Config)
选中线程组,点击右键,添加-配置元件-CSV Data Set Config
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析(3)正则表达式
“选择需要添加的脚本” ->“右键”-> “后置处理器” -> “正则表达式提取器”
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析引用名称:变量名称,名称只能是一个,引用方法:$ {token}
正则表达式:数据提取器,一般简单的通用语法就是:左边界(.+?)右边界,左右边界就是为了能准确定位到想匹配的内容,如上面图的“access_token”:“(.+?)”, (.+?) 是替换了想要提取的内容
模板:对应正则表达式提取器类型,样式为:$ n $,若模板为:$1 $,则对应正则表达式中的第一个(.+?)所匹配的内容
匹配数字:0代表随机取值,-1代表所有值,其余正整数代表第几个匹配的内容提取出来
缺省值:如果匹配不到字符串,那默认给一个值让它取。

正则表达式实例
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析(4)用户自定义变量
“选择需要添加的脚本” ->“右键”-> “配置文件” -> “用户定义的变量"
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析添加HTTP请求,引用用户自定义的变量
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析


二、什么是Jmeter压力测试

1、什么是压力测试

压力测试是指模拟巨大的工作负荷来测试应用程序在峰值情况下如何执行操作。例如模拟实际软硬件环境,在超出用户常规负荷下,长时间运行测试工具来测试被测系统的可靠性,和测试被测系统的响应时间,目的是在极限负载下识别程序的弱点。

2、压力测试前的准备

(1) 压力测试分两种场景:一种是单场景,压一个接口的;第二种是混合场景,多个有关联的接口
(2) 压测时间,一般场景运行1分钟。如果是疲劳测试,可以压几个小时或是一天,根据实际情况来定。

3、压测任务需求的确认

压测前要明确压测功能和压测指标,一般需要确定的几个问题:
(1) 固定接口参数进行压测还是进行接口参数随机化压测?
(2) 要求支持多少并发数?
(3) Throughput(吞吐量)目标多少?响应时间要达到多少?
(4) 压服务器名称还是压服务器IP,一般都是压测指定的服务器

4、压测设置

(1) 线程数:并发数量,能跑多少量。具体说是一次存在多少用户同时访问
(2) Rame-Up Period(in seconds):表示JMeter每隔多少秒发动并发。理解成准备时长:设置虚拟用户数需要多长时间全部启动。如果线程数是20,准备时长为10,那么需要10秒钟启动20个数量,也就是每秒钟启动2个线程。
(3) 循环次数:这个设置不会改变并发数,可以延长并发时间。总请求数=线程数*循环次数
(4) 调度器:设置压测的启动时间、结束时间、持续时间和启动延迟时间。
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析5、压测结果查看
“选中线程组右键” ->“添加”-> “监听器” -> “聚合报告"
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析运行完后,聚合报告会显示压测的结果。主要观察Samples、Average、error、Throughput。
Jmeter接口测试教程、Jmeter参数化:正则表达式、用户自定义变量···;Jmeter压力测试教程、性能压力测试结果分析(1) Samples:表示一共发出的请求数
(2) Average:平均响应时间,默认情况下是单个Request的平均响应时间(ms)
(3) Error%:测试出现的错误请求数量百分比。若出现错误就要看服务端的日志,配合开发查找定位原因
(4) Throughput:简称tps,吞吐量,默认情况下表示每秒处理的请求数,也就是指服务器处理能力,tps越高说明服务器处理能力越好。

6、压测结果分析

(1) 有错误率同开发确认,确定是否允许错误的发生或者错误率允许在多大的范围内;
(2) Throughput吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加;若在压测的机器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的往下减,找到最佳的并发数;
(3) 压测结束,登陆相应的web服务器查看CPU等性能指标,进行数据的分析;
(4) 最大的tps:不断的增加并发数,加到tps达到一定值开始出现下降,那么那个值就是最大的tps。
(5) 压测过程出现性能瓶颈,若压力机任务管理器查看到的cpu、网络和cpu都正常,未达到90%以上,则可以说明服务器有问题。
(6) 影响性能考虑点包括:数据库、应用程序、中间件(tomact、Nginx)、网络和操作系统等方面。


谢谢观看、点赞、留言

如有问题可以加咨询QQ:914203281