前言
本文仅用于学习回顾使用!
Jmeter介绍
Jmeter是100%纯Java开源软件,主要用来进行web端的接口测试和性能测试,Jmeter可以在一个服务器、网络或者对象上模拟重负载来测试它的强度或者分析在不同的负载类型下的全面性能。
使用Jmeter进行性能测试的主要流程如图:
下载Jmeter
- 下载地址:https://jmeter.apache.org/download_jmeter.cgi
- 建议下载5.6.2版本,最后的录制部分,b站博主用的是此版本。
对于环境变量的配置我只配置了如下:
- 打开终端输入:
jmeter
就能启动
- 设置中文简体
开始测试
- 对于测试网站选择:https://email.163.com
- Jmeter建立测试计划
一个 JMeter的测试计划对应性能测试的一个场景,其实也就是一个测试用例,具体里面的内容怎么测,根据你设计好的测试用例,在测试计划中添加相应子节点定义。
线程组
线程组定义了同一种用户的行为和数量,代表有一批用户,进行了同样的动作。
添加线程组:
线程属性选项当中,线程数表示模拟多少数量的用户;Ramp-Up 时间表示所有用户上线的总时间,以秒为单位,比如Ramp-Up设置为5,如果是 5个用户,那就意味着每隔1.25秒上线一个用户: 5秒/(5-1) = 1.25;
循环次数表示每个用户执行线程组里面定义的动作行为多少轮,缺省即为仅做一轮。
取样器
一个具体的请求是通过取样器来定义的。最常用的就是HTTP请求取样器,选择需要添加取样器的线程组,右击添加取样器,除此之外,还可以发起FTP请求,JDBC数据库访问请求等,添加后右侧窗口显示取样器的设置页面。
创建HTTP请求:
断言
Jmeter提供断言功能给测试人员,对接收到的响应进行判断,测试是否返回了期望的结果。断言可以判断响应是否包含某些特定文本、数据,甚至可以使用 Groovy、 BeanShell这样的脚本语言做更加灵活的断言判定。
添加断言和断言结果:
添加文本断言判断页面是否包含账号登录判断是否进入到首页:
添加断言结果:
添加查看结果树开始测试:
断言结果不报错就说明进入了登录界面:
取样器结果中,有三个在性能测试中比较重要的指标:
Connect Time
:与目标建立TCP连接的时间;
lantency
:从发出请求前到接收完第一个响应的时间
loadtime
:从发出请求前到接收完所有响应的时间
配置参数
在HTTP请求中需要提交数据进行操作例如登录、提交表单、搜索时,就需要连同参数发起请求,在Jmeter中参数设置有几种方式:
1、设置全局的自定义变量,选择线程组右击添加【配置元件】的【用户自定义变量】:
这里设置的变量整个线程组发起的动作都可以使用,只需要在相应的取样器的路径中使用“${变量}”的方式配置变量。
下图中设置好变量username
,password
,以及变量值,在取样器中的【路径】下面进行引用。
- 添加全局变量
这种正规网站直接在URL中包含用户名和密码是不安全的,因为这会使敏感信息暴露在URL中,可能会被网络中的其他人截获,但是可以用来测试自己开发的网站。
- 若参数不需要全局使用,可以直接在某个需要传递参数的请求中另行配置:
如下图,直接在取样器中配置参数:
3. 还可以使用"CSV Data Set Config"这个配置元件批量配置参数
HTTP代理服务器、录制控制器
在使用JMeter进行性能相关的测试时,可能涉及到比较复杂的操作,比如订单提交流程,根据录制自动化脚本的思路,在Jmeter中,可以在测试计划中添加HTTP代理服务器和录制控制器来自动执行。
- HTTP代理服务器(HTTP Proxy Server):
是一个非测试元件,它用于捕获客户端(如浏览器)和服务器之间的HTTP/HTTPS通信。这个代理服务器可以记录客户端发出的请求和服务器返回的响应,并将这些信息保存到JMeter的测试脚本中,以便之后可以重放这些请求进行性能测试。
使用JMeter的HTTP代理服务器时,需要在客户端(如浏览器)中设置代理服务器的地址和端口,这样所有通过浏览器的HTTP/HTTPS流量都会通过这个代理服务器。然后,JMeter会监听这些流量,并根据捕获的数据生成相应的测试脚本。
-
录制控制器(Record Controller):
将测试计划中的请求按照它们被添加的顺序进行分组。它本身并不生成任何请求,而是对子元素进行逻辑分组,以便可以对这些请求进行统一的控制和管理。 -
cookie管理器
在Jmeter发起请求时,可能会出现失败的情况,其中一种场景是:被测网站采取了Cookie Session的验证机制,想要通过请求,就需要让JMeter自动把接收到的HTTP响应消息中的Cookie保存起来,并且在后续发给该网站的请求中自动携带上。
Jmeter 录制
脚本录制的话参考:
https://www.bilibili.com/video/BV1ZC4y1J7F3/?spm_id_from=333.337.search-card.all.click&vd_source=0928d61f2e17607bbd20800feb98f57e
这个博主说的很详细!
结语
本文仅用来记录学习过程,方便后续回顾!