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 侵删

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354