前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jmeter压力测试工具安装及使用教程

Jmeter压力测试工具安装及使用教程

原创
作者头像
大龄老码农-昊然
修改2021-05-11 14:42:01
7430
修改2021-05-11 14:42:01
举报

一、Jmeter下载

进入官网:http://jmeter.apache.org/

1.第一步进入官网如下图

2.选择进行下载,下载下来为一个压缩包,解压即可。

3.我下载的是jmeter4.0版本,对应jdk1.8。然后就进行解压。

个人认为要注意3点:

1)解压之后压缩包叫apache-jmeter-4.0.zip,如是src.zip后缀的都不对,打开之后会报错不可用,因为里面缺少我们下一步将要配置的环境变量.jar文件。

2)对应的jdk版本不可太低,一般jmeter3.0的对应jdk1.7,jmeter4.0对应jdk1.8以上,否者启用jmeter也会报错。

3)一定要确保环境变量配置正确(包括jdk的与jmeter的环境变量配置)。

好了,接下来进行环境变量配置吧,因为是新手所以参照了大佬们的教程,我就根据自己的实际遇到的情况,总结一下来做备忘。

二、Jmeter环境变量相关配置

1.)   电脑桌面----》“计算机”图标----》鼠标右键选择“属性”----》点击高级系统设置----》高级---》环境变量页面

2) 开始配置环境变量了。在系统变量框,点击“新建”,建立一个变量:JMETER_HOME,值为你解压的jmeter安装路径。我的安装路径是在E盘,这个路径根据自己实际安装路径进行填写。然后点击确定保存即可

3)配置classpath变量,没有的话也要按照上面步骤进行新建,有的话直接进行选中,点击编辑即可。变量值固定为:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar;  做完之后一定要保存,不确定的话可以直接点击确定按钮直到退到我的电脑页面

4)基本配置完成,然后验证一下是否配置正确,是否可用。

首先进到你的jmeter安装路径,找到bin文件夹,点击进去,找到jmeter.bat,鼠标右键用管理员方式运行,或者直接双击打开,此时会弹出2个界面:1.个是命令窗口,使用jmeter的时候此命令窗口不能关,你缩小到电脑任务栏即可。2.还有一个界面是jmeter工作页面,你可以在里面进行相关的操作.具体如图

5)确认安装是否成功,双击jmeter.bat或者以管理员方式运行,页面如下:

6)jmeter的工作区域如下:,我们每次使用jmeter的首先打开方式就是进入bin文件下双击这个jmeter.bat,如果觉得麻烦,可以鼠标右键快捷方式发送电脑桌面,就会方便很多。

7.安装结束~

三、Jmeter测试案例实操

1、添加本次测试计划 (右键-->添加-->Threads(Users)-->线程组)

2、设置线程数 (所谓线程数就是并发用户数)

3、添加协议及相关配置信息

4、为线程添加监听器

5、启动测试

6、查看报告

查看结果树

图形结果

实际项目使用说明

JMeter构建测试类似于组装一台智能电子设备,比如智能手机。智能手机由CPU、内存、输入输出设备(比如USB接口,摄像头等)、屏幕、电池等一系列物理部件构成的。

JMeter测试也是由一系列JMeter元素组合起来构成的,JMeter提供了构建测试的所有元素,你可以随心所欲的将这些元素组装起来完成你想要的测试。

JMeter元素有以下四种类型的测试元素:

1)测试计划

2)线程组

3)组件

包含配置元件、定时器、前置处理器、后置处理器、断言与监听器

4)控制器

包括取样器、逻辑控制器与测试片断

1.2.1 测试计划

测试计划描述了JMeter测试在运行时执行的一系列步骤。完整的测试计划由一个或多个线程组、逻辑控制器、取样器、监听器、定时器、断言和配置元件组成。

测试计划元素是JMeter测试树的根节点,是唯一的,所有的测试元素节点都位于根节点之下。

1.2.2 线程组

在手工测试中,测试用例由测试工程师手动执行完成。而性能测试与自动化测试的测试用例由选择的测试工具代替测试工程师来执行。JMeter执行测试的任务是由线程组来完成的。打个比方,线程组相当于手工测试中执行测试用例的测试工程师。

线程组控制JMeter用来执行测试的线程数。要模拟多少个用户(称之为虚拟用户)来执行测试,可以通过修改线程组的线程数来实现。比如将线程数设置为10,表示模拟10个用户执行测试。

所有的取样器与逻辑控制器都必须位于线程组下,从这个角度理解,JMeter测试计划真正开始于线程组。其他元素,例如监听器,可以直接放在测试计划下,在这种情况下,它们将作用于所有的线程组。

一个测试计划下可以有多个线程组,在测试计划中可以配置以并行或顺序方式启动多个线程组。

1.2.3 组件

JMeter中最基本的元素为元件,元件是JMeter测试中的最小功能单元,每个元件都具有某种特定的功能。比如“Response Assertion”断言元件,可以实现对请求或响应是否预期的验证。

JMeter提供了很多元件,为了方便用户使用与管理众多的元件,JMeter将多个功能类似或逻辑上相关的元件归为一类,称为组件。JMeter包含六大组件: 配置元件、定时器、前置处理器、后置处理器、断言、监听器。

  • 配置元件

配置元件与取样器密切相关。类似于配置文件之于软件,软件配置文件可以影响软件的行为;同样通过配置元件可以新增或修改请求内容,实现对请求的自定义。

  • 定时器

默认情况下,JMeter线程按顺序执行取样器而不会出现暂停的情况。通过将定时器添加到线程组来指定延迟。如果不加延迟,JMeter可能会在很短的时间内发送过多的请求到服务器,导致服务器负载过重而崩溃。

定时器可以使在其作用范围内的每个取样器执行前延迟一段时间。

  • 前置处理器

前置处理器在进行取样器请求之前执行一些操作。

如果前置处理器附加到取样器元素,那么它将在该取样器元素运行之前执行。

前置处理器经常用于在运行之前修改取样器请求的设置,或更新未从响应文本中提取的变量。

  • 后置处理器

后置处理器在取样器请求完成后执行一些操作。

如果后置处理器附加到取样器元素,那么它将在该取样器元素运行之后执行。

后处理器通常用于处理响应数据,从中提取需要的值。

断言用于验证取样器请求或对应的响应是否返回了期望的结果。

JMeter测试是否执行成功,结果是否预期,都可以通过添加断言来进行验证。

  • 监听器

监听器可以在JMeter执行测试的过程中搜集相关的数据,并将这些数据不同的形式,比如树、图、报告等呈现出来。

比如,“图形结果”监听器绘制响应时间的曲线图,“查看结果树”监听器显示取样器请求和响应的详细信息等。

此外,有些监听器还可以将搜集到的测试数据保存到文件中以供以后使用。

1.2.4 控制器

  • 取样器

取样器用于构建发给服务器处理的请求,即告诉JMeter怎样将请求发送到服务器。例如,若要发送HTTP请求,可以选择“HTTP Request”取样器,同时还可以通过添加配置元件来自定义请求。

  • 逻辑控制器

取样器请求默认是以先后顺序依次执行的,某些情况下满足了复杂的业务/场景需求。通过逻辑控制器可以控制JMeter发送请求的逻辑,来实现复杂的业务/场景。比如有选择性执行某些请求,循环执行请求,整体执行逻辑上有依赖关系的请求,交替执行请求等。

1.3 JMeter执行顺序与作用域

1.3.1 执行顺序

类似于运算符或操作符的优先级,当JMeter测试中包含多个不同的元素时,哪些元素先执行,哪些元素后执行,并不是严格按照它们出现的先后顺序依次有序执行的,而是会遵循一定的内部规则,我们称之为JMeter元素的执行顺序,一般情况下JMeter元素按照如下顺序依次执行:

代码语言:javascript
复制
0. 配置元件
1. 前置处理器
2. 定时器
3. 取样器
4. 后置处理器
5. 断言
6. 监听器

一个简单的例子:

其中①为取样器、②为配置元件、③为定时器、④为监听器、⑤为前置处理器、⑥为后置处理器、⑦为断言。

执行顺序为:②-->⑤-->③-->①-->⑥-->⑦-->④

1.3.2 作用域

JMeter测试树中的元素可以分为两类:层次结构与顺序结构

层次结构的元素包括:配置元件、定时器、前置处理器、后置处理器、断言与监听器;

顺序结构的元素包括:取样器和逻辑控制器。

一般而言顺序结构的元素没有作用域的概念,而作用域只针对具有层次结构的组件。

JMeter作用域就是组件对取样器有效的区域,在这个区域内组件是起作用的。

层次结构的元素作用域

具有层次结构的元素的作用域规则如下:

代码语言:javascript
复制
(1)若其父节点为取样器,则其只对该取样器起作用;
(2)若其父节点为逻辑控制器,则会影响逻辑控制器下的所有取样器;
(3)若其父节点为线程组,则会影响线程组下的所有取样器;
(4)若其父节点为测试计划,则会影响测试计划下的所有取样器。

一些例子:

1.父节点为取样器

代码语言:javascript
复制
-Test Plan
	-Thread Group
		HTTP Request1
			Response Assertion
			View Results Treel
		HTTP Request2
			View Results Tree2

解析:

“Response Assertion”断言的父节点为“HTTP Request1”取样器,则只会对“HTTP Request1”进行断言,不会断言“HTTP Request2”取样器。

2.父节点为逻辑控制器

代码语言:javascript
复制
-Test Plan
	-Thread Group
		-Loop Controller
			Response Assertion
			-HTTP Request1
				View Results Treel
			-HTTP Request2
				View Results Tree2

解析:

“Response Assertion”断言的父节点为“Loop Controller”逻辑控制器,“Response Assertion”会对逻辑控制下的“HTTP Request1”取样器和“HTTP Request2”取样器进行断言。

3.父节点为线程组

代码语言:javascript
复制
-Test Plan
	-Thread Group
		Response Assertion
		-HTTP Request1
			View Results Treel
		-Loop Controller
			-HTTP Request2
				View Results Tree2
			-HTTP Request3
				View Results Tree3

解析:

“Response Assertion”断言的父节点为“Thread Group”线程组,“Response Assertion”会对线程组下的“HTTP Request1”取样器、“HTTP Request2”取样器与“HTTP Request3”取样器进行断言。

4.父节点为测试计划

代码语言:javascript
复制
-Test Plan
	Response Assertion
	-Thread Groupl
		-HTTP Request1
			View Results Treel
		-Loop Controller
			-HTTP Request2
				View Results Tree2
	-Thread Group2
		-HTTP Request3
			View Results Tree3

解析:

“Response Assertion”断言的父节点为“Test Plan”测试计划,“Response Assertion”会对测试计划下的“HTTP Request1”取样器、“HTTP Request2”取样器与“HTTP Request3”进行断言。

1.4 一个简单的JMeter测试计划

以访问百度为例(www.baidu.com)。

代码语言:javascript
复制
按照如下步骤完成测试计划:
1.在Test Plan节点上右键,选择Add->Treads(users)->Thread Group
  在Tread Properties项下,设置“Number of Threads(users)”为1
2.在Thread Group节点上右键,选择Add->Sampler->HTTP Request
  在Web Server项下,设置“Server Name or IP”为www.baidu.com
  在HTTP Request项下,设置“Path”为/
3.在HTTP Request节点上右键,选择Add->Assertions->Response Assertion
  在Field to Test项下,选择“Response Code”
  在“Patterns to Test”项下,点击“Add”,输入200
4.继续在HTTP Request节点上右键,选择Add->Listener->View Results Tree
5.点击“Save”快捷按钮,然后输入测试计划文件名,保存
6.点击“Start”快捷按钮执行测试,可以在“View Results Tree”中查看测试结果。

JMeter测试查看结果树显示如下:

参考文章

更多相关知识和参考文章来源可以关注我的博客站点

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实际项目使用说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档