性能测试之Jmeter的入门使用

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 性能测试之Jmeter的入门使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

Jmeter概述

Jmeter官网:https://jmeter.apache.org/

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。

它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。

JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

安装Jmeter

安装Jmeter需要安装JDK。

Jmeter下载地址:https://jmeter.apache.org/download_jmeter.cgi

Jmeter文档:https://jmeter.apache.org/usermanual/get-started.html
在这里插入图片描述
解压下载的Jmeter包,得到Jmeter目录

在这里插入图片描述

bin:核心可执行文件,包含配置	
	jmeter.bat: windows启动文件
	jmeter: mac/linux启动文件
	
	jmeter-server:mac/Liunx分布式压测使用的启动文件
	jmeter-server.bat:mac/Liunx分布式压测使用的启动文件
	
	jmeter.properties: 核心配置文件
		语言切换:  默认#language=en 改为 language=zh_CN		

extras:插件拓展的包

lib:核心的依赖包
	ext:核心包
	junit:单元测试包

启动Jmeter

执行jmeter.bat脚本以启动Jmeter

在这里插入图片描述

语言切换:

修改jmeter.properties文件:  默认#language=en改为 language=zh_CN	(永久有效)

菜单栏-> options -> choose language (临时有效)

在这里插入图片描述

Jmeter的基本使用

添加线程组

添加->threads->线程组(控制总体并发)
在这里插入图片描述

线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。

Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2 秒钟启动10 个线程,也就是每秒钟启动5 个线程。

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

Delay Thread creation until needed:直到需要时延迟线程的创建。

调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)

持续时间(秒):测试持续时间,会覆盖结束时间

启动延迟(秒):测试延迟启动时间,会覆盖启动时间

启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。

结束时间:测试结束时间,持续时间会覆盖它。

在这里插入图片描述

添加Http请求

线程组->添加-> 取样器 -> HTTP请求 (一个线程组下面可以增加多个取样器)

在这里插入图片描述

名称:

采样器名称

注释:

对这个采样器的描述

web服务器:

默认协议:http

服务器名称或IP :请求的目标服务器名称或IP地址	

默认端口是80

路径:服务器URL

当发送POST请求时,使用Use multipart/from-data方法发送,默认不选中。

在这里插入图片描述

添加察看结果树

线程组->添加->监听器->察看结果树
在这里插入图片描述
在这里插入图片描述

添加聚合报告

线程组->添加->监听器->聚合报告
在这里插入图片描述
在这里插入图片描述

lable: sampler的名称

Samples(样本): 一共发出去多少请求,例如10个用户,循环10次,则是 100

Average(平均值): 平均响应时间

Median(中位数): 中位数,也就是 50% 用户的响应时间

90% Line : 90% 用户的响应不会超过该时间 (90% of the samples took no more than this time. The remaining samples at least as long as this)

95% Line : 95% 用户的响应不会超过该时间

99% Line : 99% 用户的响应不会超过该时间

min(最小值) : 最小响应时间

max(最大值) : 最大响应时间
		
Error%(异常):错误的请求的数量/请求的总数

Throughput(吞吐量): 吞吐量——默认情况下表示每秒完成的请求数(Request per Second) 可类比为qps

KB/Sec: 每秒接收数据量

添加断言

增加断言: 线程组 -> 添加 -> 断言 -> 响应断言
在这里插入图片描述

pply to(应用范围)

Main sample only: 仅当前父取样器进行断言,一般一个请求,如果发一个请求会触发多个,则就用sub sample(比较少用)

测试的响应字段:

响应文本:即响应的数据

响应代码:http的响应状态码

响应信息:http响应代码对应的响应信息

Response Header: 响应头

URL样本:

文档(文本):

请求数据:

模式匹配规则:

包括:包含在里面就成功

匹配:响应内容完全匹配,不区分大小写

equals:完全匹配,区分大小写

字符串:

否:

或者:

测试模板:

相应字段的值

自定义失败消息:

匹配后响应信息

在这里插入图片描述

添加断言结果

线程组-> 添加 -> 监听器 -> 断言结果
在这里插入图片描述

断言内容:取样器名称

断言失败,查看结果树任务结果颜色标红,反之绿色。

每个取样器可以添加单独的结果树,然后同时加多个断言,最外层可以加个结果树进行汇总

在这里插入图片描述

执行测试

线程组配置
在这里插入图片描述
http请求配置

在这里插入图片描述
设置断言
在这里插入图片描述
工具栏启动执行
在这里插入图片描述
查看结果树
在这里插入图片描述
在这里插入图片描述

聚合报告
在这里插入图片描述
断言结果
在这里插入图片描述

在这里插入图片描述

自定义变量

很多变量在全局中都有使用,或者测试数据更改,可以在一处定义,到处使用,如:服务器地址。

线程组->添加 ->配置原件-> 用户定义的变量
在这里插入图片描述
在这里插入图片描述

引用方式${XXX},在接口中变量中使用
在这里插入图片描述

CSV可变参数

读取CSV或Txt文本文件里面的参数

线程组->添加 -> 配置原件-> CSV数据文件设置
在这里插入图片描述

Jmeter.csv文件内容如下:
在这里插入图片描述
value1、value2分别对应Jmeter.csv文件内容中的A、B两列的值
在这里插入图片描述
使用${}引用即可
在这里插入图片描述

数据库压力测试

添加数据库驱动程序

在这里插入图片描述

添加JDBC取样器

线程组 ->添加->取样器-> jdbc request
在这里插入图片描述
设置使用哪个JDBC连接配置
在这里插入图片描述
Query Type 查询类型

select Statement :查询

Update Statement:修改

Callable Statement: 存储过程

Prepared select Statement :预编译查询(?占位符)

Prepared Update Statement:预编译修改(?占位符)

Commit :事务提交

Rollback:事务回滚

Auto Commit(false):自动提交事务

在这里插入图片描述
parameter values 参数值

parameter types  参数类型

variable names  sql执行结果变量名

result variable names 所有结果当做一个对象存储

query timeouts  查询超时时间 

Limit ResultSet:分页,返回数量

 handle results  处理结果集

在这里插入图片描述

添加JDBC配置

在这里插入图片描述

Max Number of connections : 最大连接数

MAX wait :最大等待时间

Auto Commit: 是否自动提交事务

DataBase URL : 数据库连接地址 jdbc:mysql://127.0.0.1:3306/demo

JDBC Driver Class : 数据库驱动,选择对应的mysql

username:数据库用户名

password:数据库密码

在这里插入图片描述

执行测试

简单测试
在这里插入图片描述
在这里插入图片描述
预编译查询
在这里插入图片描述
查看结果树
在这里插入图片描述
添加Debug取样器,查看详细信息
在这里插入图片描述在这里插入图片描述

结果分析总结

需要确定是否允许错误的发生或者错误率允许在多大的范围内

Throughput吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加。若压测的机器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的往下减,找到最佳的并发数

压测结束,登陆相应的web服务器查看CPU等性能指标,进行数据的分析

最大的tps,不断的增加并发数,加到tps达到一定值开始出现下降,那么那个值就是最大的tps

最大的并发数:最大的并发数和最大的tps 是不同的概率,一般不断增加并发数,达到一个值后,服务器出现请求超时,则可认为该值为最大的并发数

压测过程出现性能瓶颈,若压力机任务管理器查看到的cpu、网络都正常,未达到90%以上,则可以说明服务器有问题,压力机没有问题。

影响性能考虑点包括:数据库、应用程序、中间件(tomact、Nginx)、应用属于CPU密集型还是IO密集型、网络和操作系统等方面

JMeter Address Already in use异常

原因

windows本身提供的端口访问机制问题。Windows提供给TCP/IP 链接的端口为1024-5000,并且要四分钟来循环回收。因此,在短时间内跑大量的请求时会将端口占满。

解决方案

参考:https://docs.microsoft.com/zh-CN/troubleshoot/windows-client/networking/connect-tcp-greater-than-5000-error-wsaenobufs-10055

使用CMD命令,执行regedit命令打开注册表
在这里插入图片描述

2.在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

右击parameters,添加一个新的DWORD,名字为MaxUserPort

双击MaxUserPort,输入数值数据为65534,基数选择十进制


同理,添加 TCPTimedWaitDelay:30 等待回收时间,单位秒

退出注册表编辑器,然后重启计算机

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137050.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!