首页 > 其他分享 >性能工具之Jmeter小白入门系列之二

性能工具之Jmeter小白入门系列之二

时间:2023-04-06 13:08:37浏览次数:38  
标签:断言 采样器 之二 sample 线程 测试 请求 Jmeter 入门


性能工具之Jmeter小白入门系列之二_数据


    

    在上一讲中简单的介绍了Jmeter的安装与Http Requet请求,在实际工作,咱们对工具的使用还需咱们进一步学习与操作才能掌握;

   话说【间单的事情重复做,就会成为行家;简单的事情用心做,就会成为赢家。简单的法坚持修,就会成为大法,每天持之以恒做简单的事情,这个人就会不简单】


一、Thread Group

     线程组也叫用户组,是性能测试时的虚拟用户资源池,该组件可以用来设置运行时间和虚拟并发数。具体组件结构如下:

性能工具之Jmeter小白入门系列之二_服务器_02


参数说明:

Name:线程组的名称,可以随意修改

Comments:备注信息,记录一些参数设置的原因和策略可填可不填

Action to be taken after a Sampler error:线程内的采样器失败后,接下来采取的动作:

            Continue:继续执行接下来的操作

            Start Next Thread Loop:执行下一个线程循环

            Stop Thread:退出该线程,不在执行该线程的任何操作

            Stop Test:等待该线程的采样结束后,结束整个测试,不会立即停止

            Stop Test Now:立即停止整个测试


Thread Properites:线程属性

            Number of Threads(users):线程数,也就是一共要启动多少线程用来并发执行

            Ramp-uo Period(in seconds):多长时间将上一步设置的线程数启动完毕。设置不同的值可以验证在不同并发的情况下验证系统的性能

            Loop Count:设置sampler循环的次数,勾上Lnfinte后就会死循环一直执行

            Specify Thread lifeTime:调度器,日程表。选上之后才能设置执行时间


操作说明:

Loop Count: 如果勾选就不断重复

性能工具之Jmeter小白入门系列之二_数据_03

如:不会停止,除非自己停止服务;

性能工具之Jmeter小白入门系列之二_采样器_04


按次数执行

性能工具之Jmeter小白入门系列之二_采样器_05

View Results Tree 结果:

性能工具之Jmeter小白入门系列之二_数据_06



按时间执行

性能工具之Jmeter小白入门系列之二_采样器_07

View Results Tree:

性能工具之Jmeter小白入门系列之二_采样器_08




二、断言

    在做性能测试中判断是不可缺少的组件,jmeter叫断言(Assertion),它的作用和loadrunner中的检查点类似;用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致。

jmeter中断言的方式也有很多,我们只介绍以下最常用的几种。

      以下是Jmeter中断言截图,其实在工作中只有掌握常见的几种满足工作,如果把断言全部学习,也可以参考官方文档或者自己把每个断言尝试下。

性能工具之Jmeter小白入门系列之二_采样器_09



1. Response Assertion:响应断言


操作步骤

性能工具之Jmeter小白入门系列之二_服务器_10


添加断言内容

性能工具之Jmeter小白入门系列之二_数据_11

作用:用来做检查点,对sampler做额外的检查,比如判断响应数据中是否存在指定的内容,也可以对请求数据做断言。

参数说明

Apply to:指定断言的作用范围

  1. Main sample and sub-sample:作用于主main sample和子sub-sample
  2. Main sample only:只作用于main sample
  3. Sub-samples only:只作用于sub-sample
  4. JMeter Variable name to use:作用于JMeter变量


注意:

1、大多数情况下,可只勾选“main sample only”,因为一般情况下,发起一个请求,实际就只有一个请求。但是在某些情况下,发起一个请求时,会触发多个服务器请求,这时候就有main sample和sub-sample之分,类似ajax请求,另外,如果发起重定向请求,并且勾选“跟随重定向”,


2、如果sub-sample断言失败,但main sample断言成功,那么main sample也被设置为失败状态。如果作用域JMeter变量,且该变量关联main sample,那么如果断言失败,则main sample也被设置为失败(If the JMeter variable option is used, it is assumed to relate to the main sample, and any failure will be applied to the main sample only)。


3.如果执行完每个sampler的所有断言,变量JMeterThread.last_sample_ok会被设置为true或false


Field to test:

  1. Text Response:断言服务器返回的响应文本,比如body,不包含HTTP headers
  2. Response Code :断言响应码,
  3. Response Message:断言响应码的具体信息,比如
  4. Response Headers:断言响应头,包括Set-Cookie 头,如果有的话
  5. Resquest Headers:断言请求头
  6. URL Sampled:
  7. Document(text) -通过Apache Tika追踪的各种各种类型文档的文本
  8. Ignore Status:指示JMeter设置sampler status的初始状态为success。sample status是否成功,由已Response status和断言结果决定,当选中Ignore Status时,Response status被强制设置为success,不执行进一步的断言判断。仅第一次断言时使用。
  9. Resquest Data:断言请求数据

Pattern Matching Rules:模式匹配规则

性能工具之Jmeter小白入门系列之二_数据_12

  1. Contains:如果文本中包含指定的正则表达式则为true
  2. Matches:如果整个文本匹配指定的正则表达式则为true
  3. Equals:如果整个文本等于给定的字符串(大小写敏感),则为true
  4. Substring:如果整个文本包含给定的字符串(大小写敏感),则为true
  5. Not:表示非,不匹配给定的模式,可以和前4个配合使用
  6. Or:表示或,和前4个配合使用,有一个为true则为true

注意:

Contains,Matches:将字符串当做正则表达式处理

Equals,Substring:纯字符串,不会解析成正则表达式,大小写敏感

示例:用Substring模式和contains模式分别匹配:.*

Substring模式,将.*当做文本来匹配,所以会匹配失败

性能工具之Jmeter小白入门系列之二_采样器_13


结果:

性能工具之Jmeter小白入门系列之二_采样器_14

Contains模式:

性能工具之Jmeter小白入门系列之二_服务器_15

结果:

性能工具之Jmeter小白入门系列之二_服务器_16

Patterns to Test: 

     填写需要测试的模式列表,(通过重复点击面板的添加按钮来添加多个测试模式),和多个断言,每个断言一个模式是一样的。

如:

性能工具之Jmeter小白入门系列之二_采样器_17


性能工具之Jmeter小白入门系列之二_服务器_18


演示:

性能工具之Jmeter小白入门系列之二_服务器_19


提示成功:

性能工具之Jmeter小白入门系列之二_采样器_20

断言失败

性能工具之Jmeter小白入门系列之二_数据_21


结果:

性能工具之Jmeter小白入门系列之二_数据_22


2. Response Assertion and 正则提取器

添加正在【Regular Expression Extractor】

性能工具之Jmeter小白入门系列之二_采样器_23

打开结果查看树【View Results Tree】

性能工具之Jmeter小白入门系列之二_数据_24


打开后置处理器组件中的【Regular Expression Extractor】:

性能工具之Jmeter小白入门系列之二_采样器_25

输入内容:

性能工具之Jmeter小白入门系列之二_数据_26

说明:

(1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它。

(2)正则表达式:

        ():括起来的部分就是要提取的。

        .:匹配任何字符串。

        +:一次或多次。

        ?:抑制贪婪,在找到第一个匹配项后停止。


(1)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值

(2)匹配数字:有多个匹配值时,0代表随机取值;正数n代表取第n个匹配的值;负数代表将变量名和数字拼接,比如如果写-1的话,那么拼接后的变量就是title_1。通常情况下填0

(5)缺省值:如果参数没有取得到值,那默认给一个值让它取。


添加调试

性能工具之Jmeter小白入门系列之二_数据_27

结果查看树验证

性能工具之Jmeter小白入门系列之二_服务器_28



3. Duration Assertion:响应时间断言

设置服务器响应的最大时间,如果超过设定的值则认为执行失败,组件如下:

性能工具之Jmeter小白入门系列之二_服务器_29

结果显示:

性能工具之Jmeter小白入门系列之二_服务器_30

参数说明:

Apply to:适用范围,也就是断言范围

  1. Main sample only:只作用在主sample中
  2. Sub-sample only:只作用在子sample中
  3. Main sample and Sub-sample only:主sample和子sample中都起作用

Duration in milliseconds:响应允许的最大时间,单位为毫秒,超过此值即测试失败。


演示:

设置10ms

性能工具之Jmeter小白入门系列之二_数据_31


运行结果:

性能工具之Jmeter小白入门系列之二_采样器_32

设置1000ms

性能工具之Jmeter小白入门系列之二_采样器_33

结果显示:


性能工具之Jmeter小白入门系列之二_数据_34



4. JSON Assertion:json断言

性能工具之Jmeter小白入门系列之二_数据_35


具体显示:


性能工具之Jmeter小白入门系列之二_采样器_36


说明:

作用:对响应的json数据断言,查找指定的内容

参数说明:

Assert JSON Path exists:符合json path规则的断言表达式

json断言的规则就是json path,和xpath类似也是有类似根和子节点的概念,对比如下:



xpath

json path

描述

/

$

根节点

.

@

根据判断条件取得的当前节点

*

*

匹配所有元素节点

//

..

查找任意位置的元素

/

.或者[]

基于当前元素查找子元素

[]

[]

下标运算符

N/A

[start:end]

类似于切片的运算符

()

N/A

xpath中的分组


json断言的表达式可以使用点运算符也可以使用括号;

  1. Additionally assert value:勾选了此项之和才能在Excepted value中填写断言值
  2. Match as regular expression:以正则的方式匹配,默认勾选
  3. Excepted value:断言值
  4. Excepted null:断言空值,断言的数据为null的话可以勾选此项,或者在Excepted value中直接写null
  5. Invert assertion (will fail if above condition met):取反,也就是不包含断言表达式中的内容才成功

待演示数据

性能工具之Jmeter小白入门系列之二_采样器_37


增加json断言【正确】

性能工具之Jmeter小白入门系列之二_采样器_38


结果:

性能工具之Jmeter小白入门系列之二_服务器_39

断言失败:

性能工具之Jmeter小白入门系列之二_服务器_40


验证结果:

性能工具之Jmeter小白入门系列之二_采样器_41




三、jmeter常用组件介绍

启动Jmeter添加线程组

性能工具之Jmeter小白入门系列之二_采样器_42


解释:

  1. test plan:测试计划,是其它组件的容器
  2. thread:线程组,用来设置多少线程,怎么运行这些线程
  3. config element:配置信息
  4. listener:监听,查看执行的结果、统计、发出的请求
  5. timer:等待时间,集合点、按照请求流量加压
  6. pre processor:前置处理器,在发出正式请求前做好准备工作
  7. post processor:请求之后需要做的事情,提取各种响应内容
  8. assertion:各种断言,和post processor部分相似,提取出指定的内容后作为断言内容。
  9. test fregment:测试片段,用于其他的控制器使用

    性能工具之Jmeter小白入门系列之二_采样器_43
  10. Non-test element:非测试相关的元件,比如(HTTP Mirror Server,HTTP(S) Test Script Recorder(脚本录制)等等




    1. Sampler:取样器

      简单的说取样器可以理解为性能测试中的协议,每次请求需要选择相应的协议才能用于向服务器发起请求,里面最常用的就是HTTP Request,Debug Sampler、TCP Sampler、jdbc Request等。每种不同类型的sampler可以根据服务端所需要的参数进行构建请求类型,进而达到测试的效果。

性能工具之Jmeter小白入门系列之二_采样器_44





2. Controller:控制器(逻辑控制器)

性能工具之Jmeter小白入门系列之二_服务器_45


JMeter中的Logic Controller分为两类:

  a) 控制测试计划执行过程中节点的逻辑执行顺序,如:Loop Controller、If Controller等;

  b) 对测试计划中的脚本进行分组、方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller、Transaction Controller。



3. Pre Processor:预处理

       前置处理器会在采样器发出请求之前做一些特殊操作。如果前置处理器附着在某个采样器之下,那么它只会在该采样器运行之前执行。前置处理器通常用于在采样器发出请求前修改采样器的某些设置,或者更新某些变量的值(这些变量不在服务器响应中获取值)。

性能工具之Jmeter小白入门系列之二_采样器_46



4. Post Processor:请求之后的处理

       后置处理器会在采样器发出请求之后做一些特殊操作。如果后置处理器附着在某个采样器之下,那么它只会在该采样器运行之后执行。后置处理器通常被用来处理服务器的响应数据,特别是服务器响应中提取数据。

性能工具之Jmeter小白入门系列之二_采样器_47



5. Assertions:断言

       用户可以使用断言来检查从服务器获得的响应内容。通过断言可以测试服务器返回的响应与测试人员的期望是否相符

性能工具之Jmeter小白入门系列之二_数据_48



6. Timer:定时器

       定时器会让作用域内的每一个采样器都在执行前等待一个固定时长,如果不设定这种延迟,JMeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。如果为线程组添加了多个定时器,那么JMeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。在Java中常见的就是sleep.

性能工具之Jmeter小白入门系列之二_采样器_49




7. Test Fragment:片段

是控制器上一个种特殊的线程组,它在测试树上与线程组处于一个层级。但使用时需要和include Controller或者Module Controller配合。它的主要作用是模块化测试过程,类似于编程语言中的函数。即,将测试过程封装成测试片段,就可以在其他地方直接引用了;


性能工具之Jmeter小白入门系列之二_数据_50


8. Config Element:配置元件

       用于提供对静态数据配置的支持。CSV date set config将本地数据文件形成数据池(date pool),而http request sampler和TCP request sampler等类型的配置元件则可以修改sampler的默认数据。


性能工具之Jmeter小白入门系列之二_服务器_51



9. Listener:监听器

      它是用来对测试结果数据进行处理和可视化展示的一系列元件。图形结果、查看结果树、聚合报告等都是我们经常用到的元件。

性能工具之Jmeter小白入门系列之二_数据_52



10. Non-test element:非测试相关的一些组件

一般代理录制就使用该组件

性能工具之Jmeter小白入门系列之二_采样器_53



性能工具之Jmeter小白入门系列之二_数据_54


标签:断言,采样器,之二,sample,线程,测试,请求,Jmeter,入门
From: https://blog.51cto.com/u_15181572/6172654

相关文章

  • jmeter模拟多IP地址访问
    1.前言:今天一同事在压测时提到怎么用jmeter里虚拟多个ip来发送请求,我想了一下以前用LR时用过虚拟ip地址,jmeter还没有使用过。想着原理应该是相通的,既然LR都能支持的话,那Jmeter应该也是支持,于是就有了jmeter虚拟化IP地址的研究。在网上也查找了相应的资料,摸索参考着实践了一把,坑吃......
  • 深度学习基础入门篇[三]:优化策略梯度下降算法:SGD、MBGD、Momentum、Adam、AdamW
    1.梯度下降算法(优化器)1.1原理解释如果我们定义了一个机器学习模型,比如一个三层的神经网络,那么就需要使得这个模型能够尽可能拟合所提供的训练数据。但是我们如何评价模型对于数据的拟合是否足够呢?那就需要使用相应的指标来评价它的拟合程度,所使用到的函数就称为损失函数(LossFu......
  • jmeter模拟多IP地址访问
    1.前言:今天一同事在压测时提到怎么用jmeter里虚拟多个ip来发送请求,我想了一下以前用LR时用过虚拟ip地址,jmeter还没有使用过。想着原理应该是相通的,既然LR都能支持的话,那Jmeter应该也是支持,于是就有了jmeter虚拟化IP地址的研究。在网上也查找了相应的资料,摸索参考着实践了一把,坑吃......
  • python入门到实战系列一
         学习 pyhton 语言首先需要掌握它的基本规则,还有它支持什么数据类型,下面画一张图来了解它支持的数据类型有哪些?  上面这几个数据类型在工作中经常使用,下面不分先后介绍每一种数据类型基本使用。一、字符串  第一,字符串基础对于它的定义就不在这里说明,下面介绍......
  • 深度学习基础入门篇[二]:机器学习常用评估指标:AUC、mAP、IS、FID、Perplexity、BLEU、
    A.深度学习基础入门篇[二]:机器学习常用评估指标:AUC、mAP、IS、FID、Perplexity、BLEU、ROUGE等详解1.基础指标简介机器学习的评价指标有精度、精确率、召回率、P-R曲线、F1值、TPR、FPR、ROC、AUC等指标,还有在生物领域常用的敏感性、特异性等指标。在分类任务中,各指标的计算......
  • VsCode开发工具的入门及基本使用
    (VsCode开发工具的入门及基本使用)一、VsCode介绍1.VsCode简介VisualStudioCode(简称“VSCode”)是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于MacOSX、Windows和Linux之上的,针对于编写现代Web和云应用的跨平台源代码编辑器,可用于Windows,macOS和Lin......
  • 题目 1016: [编程入门]水仙花数判断
    打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。 #include<stdio.h>intmain(){inta,b,c,i;for(i=100;i<1000;i++){a=i/100;b=i/10%10;c=i......
  • 题目 1014: [编程入门]阶乘求和
    求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。 1.因为这是阶乘求和,一般的int类型可能就不够,因此我们利用longlongint类型(不用unsignedlong因为当n为20时,Sn=2561327494111820313)了,unsignedlong的范围不够。2.求Sn的和,我·用的是两个for循环嵌套for(in......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-会议笔记文档智能转摘要从0到1快速入门——官
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • 题目 1013: [编程入门]Sn的公式求和
    求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字,为2。例如,n=5时=2+22+222+2222+22222,n由键盘输入。#include<stdio.h>intmain(){intn,i,sum=0,c=0;scanf("%d",&n);for(i=0;i<n;i++){sum*=10;sum=sum+2;c......