Jmeter-1安装及GUI介绍

安装

配置java环境
下载jmeter程序包,解压即可使用。http://jmeter.apache.org/download_jmeter.cgi

GUI界面

GUI界面功能相对简单

image.png

Jmeter插件管理

  • 默认插件路径:apache-jmeter-5.0\lib
  • 扩展插件存储路径:apache-jmeter-5.0\lib\ext
  • 插件管理器,下载jmeter-plugins-manager-1.4.jar 放入apache-jmeter-5.0\lib\ext 目录下进行重启
    image.png

Jmeter测试计划各组件

以下为链接接中文章内容,转载学习使用

用户线程

image.png

通俗理解:

  • 线程组:就是一个线程组,里面有若干个请求;
  • 线程:一个线程就是一个“虚拟用户”;
  • 请求:一个线程组里面有若干个请求。
    对应关系:
    例如:1个线程组里面有10个请求,线程数为10个,跑完后得到:
    理解为:(10个线程数)10个人,每个人都要跑这10个请求,所以:10*10=100:
    并发数:100;线程数:10;
    PS:线程组也可以看作是一个虚拟用户组。线程组中的每一个线程都可以理解为一个虚拟用户。

    image.png

    线程组设置:

  1. 在采样器失败后怎么处理,5中处理方式
  2. 线程属性
  • 线程数:相当于模拟用户数量;
  • Ramp-up时间:达到指定线程需要的时间,例如线程数为1000,时间设定为10s,那么就是10s加载 1000个线程,每秒启动的线程数=1000/10=100
  • 循环次数:如果填具体的数值,就是循环对应的次数;如果选择“永久”,则一直执行下去,直到手动停止
  • 延迟线程创建,直到需要:
  • 调度器:启用调度器
  1. 调度器
  • 持续时间:测试计划执行持续多上时间
  • 启动延迟:测试计划延迟多少时间启动
    注意:使用调度器后中间循环次数则作废

线程组分类

  • 线程组:常用线程组,一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户
  • setUP线程组:一种特殊类型的ThreadGroup的,可用于执行预测试操作、初始化操作,例如:测试数据库操作,此线程可以用于数据库的连接操作;平台功能测试,可以执行用户注册、登录等操作;
  • tearDown线程组:一种特殊类型的ThreadGroup的,可用于执行测试后动作。例如:测试数据库操作,此线程可以关闭数据库连接;平台功能测试,可以执行用户退出登录等操作;
  • Concurrency Thread Group(递增式并发线程组):可以模仿递增式并发(只能递增不能递减),并可设置递增次数、递增时长、到达目标递增数量保持时长等等
参数解释:

· Target Concurrency:目标并发(总线程数)
· Ramp Up Time:加速时间(总加速时长)
· Ramp-Up Steps Count:加速步骤计数(总加速/递增次数)
· Hold Target Rate Time:保持目标速率时间(到达总线程数后持续时长)
· Time Unit:时间单位(分钟或者秒)
· Thread Iterations Limit:线程迭代次数限制(循环次数)
· Log Threads Status into File:将线程状态记录到文件中(将线程启动和线程停止事件保存为日志文件);
image.png
  • Stepping Thread Group(逐步线程组):模仿递增式并发(不但递增还可以递减),并可设置递增次数、递增启动延迟、递增时长、到达目标递增数量保持时长等等:

    image.png
1、线程组最大用户数:100个
2、初次加载用户前等待时间:10秒,此时没有用户进入
3、第一次加载用户数:10个用户开始
4和5:每隔10秒加10个用户
6、ramp-up在几秒内启动线程组
7、持续压测60秒,一分钟
8、和9:退用户,每10秒退出10个用户
10、上面各种设置的图形表示
  • bzm - Arrivals Thread Group(bzm-到达线程组):跟Concurrency Thread Group线程组功能作用大同小异

    image.png
Target Rate:目标线程数(总线程数)
Ramp Up Time:所需多少加载时间(总加速时长)
Ramp Up Steps Count:所需多少个加载梯次(总递增/加速次数)
Hold Target Rate Time:持续运行时间(到达总线程数后持续时长)
Time Unit:可以选择用分钟还是秒来做单位
Thread lterations Limit:线程迭代次数限制。如果我们只需要运行每个用户一次以模拟用户的实际行为,则可能会很有用。在我们的例子中,该字段为空,因此每个用户将运行不确定的迭代,直到调度结束。
Log Thread Status into File:将线程状态记录到文件中
Concurrency Limit:最大并发数限制。以避免出现内存不足的问题。在我们的例子中是1000,这是一个很大的数字。

配置元件

以下参考https://zhuanlan.zhihu.com/p/72857359 侵删

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

image.png
  • 取样器
    取样器用于构建发给服务器处理的请求,即告诉JMeter怎样将请求发送到服务器。例如,若要发送HTTP请求,可以选择“HTTP Request”取样器,同时还可以通过添加配置元件来自定义请求。
  • 逻辑控制器
    取样器请求默认是以先后顺序依次执行的,某些情况下满足了复杂的业务/场景需求。通过逻辑控制器可以控制JMeter发送请求的逻辑,来实现复杂的业务/场景。比如有选择性执行某些请求,循环执行请求,整体执行逻辑上有依赖关系的请求,交替执行请求等。

监听器

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

image.png

定时器

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

image.png

前置处理器

前置处理器在进行取样器请求之前执行一些操作。如果前置处理器附加到取样器元素,那么它将在该取样器元素运行之前执行。前置处理器经常用于在运行之前修改取样器请求的设置,或更新未从响应文本中提取的变量。

image.png

后置处理器

后置处理器在取样器请求完成后执行一些操作。如果后置处理器附加到取样器元素,那么它将在该取样器元素运行之后执行。后处理器通常用于处理响应数据,从中提取需要的值。

image.png

断言

断言用于验证取样器请求或对应的响应是否返回了期望的结果。判断测试执行是否成功。

image.png

测试片段

image.png

非测试元件

image.png

1.3 JMeter执行顺序与作用域

1.3.1 执行顺序

类似于运算符或操作符的优先级,当JMeter测试中包含多个不同的元素时,哪些元素先执行,哪些元素后执行,并不是严格按照它们出现的先后顺序依次有序执行的,而是会遵循一定的内部规则,我们称之为JMeter元素的执行顺序,一般情况下JMeter元素按照如下顺序依次执行:
0. 配置元件
1. 定时器
2. 前置处理器
3. 取样器
4. 后置处理器
5. 断言
6. 监听器
一个简单的例子:

image.png

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

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

1.3.2 作用域

JMeter测试树中的元素可以分为两类:层次结构与顺序结构
层次结构的元素包括:配置元件、定时器、前置处理器、后置处理器、断言与监听器;
顺序结构的元素包括:取样器和逻辑控制器。

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

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

层次结构的元素作用域

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

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

-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.父节点为逻辑控制器

-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.父节点为线程组

-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.父节点为测试计划

-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测试计划

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

按照如下步骤完成测试计划:

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测试查看结果树显示如下:

image

PS: 参考:https://zhuanlan.zhihu.com/p/123244380,侵删 参考https://zhuanlan.zhihu.com/p/72857359 侵删
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值