Jmeter性能测试工具使用

什么是压力测试

顾名思义:压力测试,就是 被测试的系统,在一定的访问压力下,
看程序运行是否稳定/服务器运行是否稳定(资源占用情况)
比如: 2000个用户同时到一个购物网站购物,这些用户打开页面的速度是否会变慢,或者网站是否会奔溃

1.下载地址

http://jmeter.apache.org/download_jmeter.cgi

历史版本选择,下图,进入后选择binaries目录,本文使用5.1.1版本
Jmeter性能测试工具使用_第1张图片
但不知为何,打不开;

2.运行

下载后,解压,执行bin目录下的jmeter.bat ,切换语言

Jmeter性能测试工具使用_第2张图片

3.使用

(1)添加线程组
测试计划上右键->添加->线程(用户)->线程组
Jmeter性能测试工具使用_第3张图片
主要参数(线程属性):

线程数: 启用线程数(模拟用户数,如200)

Ramp-Up时间(秒): 设置线程需要多长时间全部启动。如果线程数为200 ,准备时长为10 ,
那么需要1秒钟启动20个线程。也就是每秒钟启动20个线程。

循环次数: 每个线程发送请求的次数(如10,总请求数=200*10),如果勾选了“永远”,
那么所有线程会一直发送请求,直到选择停止运行脚本

(2)添加HTTP请求
线程组右键->添加->取样器->http请求
Jmeter性能测试工具使用_第4张图片
参数配置参考下图: 参数写法 ${xx}

POST方式  (主要配置-> 协议:http , 服务名称或ip ,端口号 , 方法:post , 路径: 请求地址 , 内容编码: utf8 )

post方式,参数需要放到消息体数据页,字符串两边要加引号,不然报错当做参数解析了,json格式用{} ,列表用[],可以把${xx}替换死数据先测试一波
Jmeter性能测试工具使用_第5张图片GET方式 (配置同post)

方法切换为GET就行, 但是参数设置要在参数页, 而且此工具,如果消息体数据 有内容,参数是无法切换的,需要先删除,或者从头新建一个线程组,低版本会提示清除参数,此版本不提示,按钮不能点击; 如果是文本参数,需要勾选编码,避免出现参数乱码
Jmeter性能测试工具使用_第6张图片(3)添加CSV数据文件
http请求->添加->配置元件->CSV数据文件设置

用于从文件读取批量参数(也可以配置从数据库读取),文本参数也可以json格式字符串,服务器名称或ip,端口,路径等都可以从文本配置读取,此处详细列一种,其他自行百度学习配置
https://blog.csdn.net/liangyoufei/article/details/83690753

Jmeter性能测试工具使用_第7张图片
文本参数内容(可以使用excel生成,导出为csv或txt):
Jmeter性能测试工具使用_第8张图片
文件名 : 数据文件,CSV,文本等均可
变量名称: 对应文本参数行数据的字段,逗号隔开
忽略首行: 如果数据文本内容是头行数据(第一行是参数名称),设置为true ,
参数可以设置成json字符串, 变量名称可以留空,消息体数据可以写 ${参数名称}
Jmeter性能测试工具使用_第9张图片

(4)添加http信息头管理器
http请求->添加->配置元件->http信息头管理器

用于给请求,天加请求头参数,如 content-type : application/json , CSRF-TOKEN : xxxx (csrf攻击验证字符串)

(5)添加http Cookie管理器
同(4) ,如 SESSIONID : xxx
Jmeter性能测试工具使用_第10张图片
配置的cookie内容可以在浏览器F12查看 :
Jmeter性能测试工具使用_第11张图片

(6)添加查看结果树
http请求->添加->监听器->察看结果树

可以看到请求发送,以及取样器结果,请求,相应数据, 如果参数乱码,可能是参数csv或txt文件使用的文本编码不对,用notepad++或其他工具转换格式为utf-8即可
Jmeter性能测试工具使用_第12张图片Jmeter性能测试工具使用_第13张图片Jmeter性能测试工具使用_第14张图片

(7)添加聚合报告
http请求->添加->监听器->聚合报告

可以看到,样本即50个线程每个发送10个请求合计500个请求,平均响应时间596毫秒, 请求无异常, 吞吐量每秒60.2个请求
Jmeter性能测试工具使用_第15张图片其他高级玩法,待学习后补充…

补充数据库配置: post请求参数数据量过大,采用文本内容不方便生产, 因此使用数据库数据,如下
Jmeter性能测试工具使用_第16张图片
线程组->添加配置元件->JDBC Connection Configuration :
Jmeter性能测试工具使用_第17张图片线程组->取样器->JDBC Request :

Jmeter性能测试工具使用_第18张图片JDBC Request->监听器->察看结果树 :

Jmeter性能测试工具使用_第19张图片返回数据库列表结果;

将数据库返回结果列表用于请求参数 :
线程组->逻辑控制器->循环控制器

循环控制器->配置元件->计数器 :
Jmeter性能测试工具使用_第20张图片为所有输入参数建立计数器;

创建函数助手对话框(一个输入参数一个框)
Jmeter性能测试工具使用_第21张图片
例如 : gbHeaderId_${N} , N为计数器记录的数据库数据行号,
行数据被转化成gbHeader_1 , gbHeader_2 … ( gbHeader_# 表示最大记录 )
Jmeter性能测试工具使用_第22张图片
将生成的函数字符串粘贴到HTTP请求参数 消息体数据:
(http请求建立在循环控制器下,其下有查看结果树,聚合报告,其他不用线程组可以占时关闭)
Jmeter性能测试工具使用_第23张图片
运行测试即可;

PS :
一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。
单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。
系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间

    QPS(TPS):每秒钟request/事务 数量
    并发数: 系统同时处理的request/事务数
    响应时间:  一般取平均响应时间

(很多人经常会把并发数和TPS理解混淆)
理解了上面三个要素的意义之后,就能推算出它们之间的关系:
QPS(TPS)= 并发数/平均响应时间

你可能感兴趣的:(软件安装,性能测试)