什么是Java-背景知识
# 压力测试概述:
压力测试(Load testing)是一种软件测试方法,通常用于测试应用程序或系统在高负载、高压力情况下的性能和稳定性。压力测试是通过模拟大量用户同时访问系统,或者对系统进行大量数据处理或计算等操作,来测试系统的负载能力、性能瓶颈和稳定性等指标。通过压力测试,可以发现系统的瓶颈和弱点,进而优化系统,提高系统的性能和稳定性。
# 压力测试的目的是什么?
压力测试的目的是在模拟真实使用情况下,对系统、应用程序或网络进行测试,以确定其在高负载和高压力情况下的性能和稳定性。通过压力测试,可以发现系统的瓶颈和弱点,进而优化系统,提高系统的性能和稳定性。
# 什么是Jmeter?
JMeter是Apache基金会的一个性能测试工具,用来测试服务器端应用程序的性能。因为简单易用,现在也被社区作为接口测试工具。性能测试用来确认系统是否能承受大量用户,JMeter能模拟大量用户访问网站。
# 一、安装
# 1.压力测试工具下载地址
jemter官方网站 https://jmeter.apache.org/download_jmeter.cgi

外网资源如果你没有科学上网 可以通过百度网盘下载下载我准备好的jmeter
通过百度网盘分享的文件:apache-jmeter-5.4.3 2.zip 链接:https://pan.baidu.com/s/1j13X1i3Sf8-1jzPBJve6Ng?pwd=4u82 提取码:4u82 复制这段内容打开在百度网盘中可以获取
下载后解压文件 点击进入bin目录 选择jmeter.sh或者jmeter.bat 都可以 区别是 .sh是中文 .bat是英文 jmeter打开的同时也会打开git 如果没有需要提前安装好
.sh 打开后的界面会小一下可以从选项放大 调整界面大小

# 二、使用

如图所示,右击“测试计划”>添加>Threads(Users)>线程组。什么是“线程组”呢:JMeter是由Java实现的,并且使用一个Java线程来模拟一个用户,因此线程组(Thread Group)就是指一组用户的意思,换句话说一个线程组就是一组虚拟用户(virtual users),这些虚拟用户用来模拟访问被测系统。
**setUp线程组:**在测试任务运行前,先运行,通常运功老做初始化工作,例如用户登陆。 **tearDown线程组:**在测试任务线程组运行结束后运行,一般是用来做清理工作。例如关闭数据库。 **线程组:**执行核心业务。 这里我们选择线程组
简单介绍一下线程组的分工:
**名称:**这个线程组的名字
**注释:**备注一下这个是做什么的接口或脚本或其他你认为容易忘记的内容。 在取样器错误后要执行的动作:报错后你希望脚本要进行的处理
**线程数:**相当于多少人同时请求这个接口。 **Ramp-Up时间(秒):**测试中逐渐增加并发用户数的时间。它表示从测试开始到达最大并发用户数所需的时间。
例如:线程数100 设置Ramp-Up为10秒 那么会在10秒内增加并发数,知道达到100
**循环次数:**如果你勾选了永远那么就会一直进行压力测试,需要配合调度器持续时间来控制整个压力测试过程的时间,不勾选则是按照您设定的次数对线程数中的数量进行循环,例如 100线程数 循环5次即模拟100个用户 同时请求接口 一共请求5次。
Same user on each iteration:
【选中】每次循环用第一次的cookie,不再更新;可以理解为每次循环都是同一个用户。
【不选中】每次循环都是用新的cookie值;可以理解为每次循环都是不同的用户。
**延迟创建线程直到需要:**Ramp-up时间(秒)设置配合使用,如果选择此项,则所有线程会在需要的时候启动,即会在Ramp-up时间(秒)时间结束后启动所有线程;如果不选择这个选项,那么,在计划开始的时候,所有需要的线程就都被创建好了。
例如:线程数为100,Ramp-up时间(秒)为10,则如果不选择此项则本次测试会每隔1s创建并启动10个线程,那么10s后会有100个线程在运行;但是如果选择此项,那么线程组会每隔1s创建10个线程但并不启动,而是会等待10s,所有100个线程都创建好之后同时启动。
**拓展小知识:**1个线程组循环100次与100个线程组循环1次有没有区别,对服务器压力的话谁更大?
答:有区别,因为一个线程组不断循环,是属于线性顺序执行的,这属于压力测试范畴;而后者100个同时启动,属于并发性测试,对CPU冲击性更大,也就是“压力”的本质。
添加一个HTTP请求:

和postman差不多 参数一般用于GET请求 消息体数据一般用于POST请求
添加断言 机械性的确认单次请求是否成功(原理是根据返回的结果确认是否成功,例如当设置断言为success时 你的返回结果如果包含这个字符串,那么就认定这是一次成功的请求,否则为失败请求,影响最终的通过了,需要特别注意的是,当返回的结果数据量过大是,断音还会对请求的时长产生一定量的影响,实际情况需要综合考虑)

添加结果树 验证或运行时查看运行结果 原则上来说红色是失败,绿色是成功 (不绝对,具体要看返回数据和一些其他的数据)
添加汇总报告 在此处可以看出运行脚本的平均值、最小值、最大值、吞吐量等等
至此你已经学会了jmeter的简单实用,快尝试起来吧
下期预告:jemter如何本地生成测试报告