当前位置: 首页 > news >正文

从零开发短视频电商 Jmeter压测示例模板详解(无认证场景)

文章目录

    • 添加线程组
    • 添加定时器
    • 添加HTTP请求默认值
    • 添加HTTP头管理
    • 添加HTTP请求
    • 添加结果断言
      • 响应断言 Response Assertion
      • JSON断言 JSON Assertion
      • 持续时间断言 Duration Assertion
    • 添加察看结果树
    • 添加聚合报告
    • 添加表格察看结果
    • 参考

以压测百度搜索为例

  • https://www.baidu.com/s?wd=lakernote

下面的步骤在大部分情况下可以套用。

添加线程组

右键单击“Test Plan” -> “Add” -> “Threads (Users)” -> “Thread Group”。

  • Name:取一个描述性的名称

  • Action to be taken after a Sampler error: 在请求发生错误时的处理方式,可以选择中止线程、中止测试等。

  • Number of Threads (users): 设置模拟用户数,即同时并发执行请求的用户数。这决定了在每个线程组中启动的线程数量。

  • Ramp-Up Period (in seconds): 设置启动所有用户的时间间隔。如果将用户数设置为100,Ramp-Up Period设置为10秒,则系统将在10秒内逐渐启动100个用户。

    • Ramp-Up Period定义了启动所有虚拟用户所需的时间。如果设置为10秒,而同时有100个虚拟用户(线程),那么在10秒内,系统将逐渐启动这100个用户,而不是立即启动所有。
    • 这个选项的目的是模拟真实场景中用户逐渐增加的情况,而不是突然出现大量用户。这有助于更真实地模拟系统在负载逐渐增加时的性能表现。
  • Loop Count: 设置每个线程运行的次数。如果设置为1,每个线程将仅运行一次。如果设置为-1(无限循环),则线程将一直运行直到测试停止。

    如果要达到刚好运行10次测试,则可以配置线程数:2,循环次数:5

    如果要达到运行10s测试,而不管多少次,则可以设置循环次数:永远,选中调度器设置持续时间:10

  • Same user on each iteration: 如果选中此选项,每个迭代中的同一个线程将使用相同的用户。

    • 如果选择了这个选项,那么在每次迭代(循环)中,同一个线程(虚拟用户)将使用相同的用户标识。这意味着在每次循环中,该线程将以相同的身份(用户标识)执行请求。
    • 对于模拟单个用户在多次迭代中使用相同的身份进行一系列操作很有用,例如登录并执行多个操作,而不是在每次迭代中使用不同的用户。
  • Delay Thread Creation until needed: 如果选中此选项,JMeter将推迟线程的创建,直到需要运行它们为止。这可以帮助减小资源消耗。

    • 如果选择了这个选项,JMeter将不会在测试计划启动时立即创建所有线程(虚拟用户)。相反,它将等到线程实际需要运行时才创建它们。
    • 这可以帮助减小资源消耗,特别是在你有大量线程但不是所有线程都在同一时间运行的情况下。例如,如果你有100个线程,但是测试计划启动后的第一秒只需要运行10个线程,那么只有这10个线程会在初始时创建,而其余90个线程将在后续需要时逐渐创建。
  • Scheduler Configuration: 可选的调度配置,允许你按照特定的时间计划执行测试。如果你想在特定的时间段内执行测试,可以选择此选项。

    • Duration (持续时间): 设置测试计划的持续时间。可以选择执行测试的总时长,例如设置为3600秒(1小时)。
    • Startup Delay (启动延迟): 设置测试计划开始执行前的延迟时间。这可以用来在启动测试之前等待一段时间,以便进行预热或等待其他资源的准备。

添加定时器

定时器(Random Timer)可以帮助模拟用户在执行操作时的不规律性。你可以设置一个基础定时器和一个随机范围,以便每个请求之间有一些随机的等待时间,通常添加在需要模拟用户请求之间的时间间隔的位置,常见的情况是将定时器添加在HTTP请求之前,以模拟用户在执行不同操作之间的停顿。

以统一实际定时器举例

  • Random Delay Maximum (in milliseconds): 设置随机等待时间的最大值(毫秒)。这个值表示在每个请求之间的最大等待时间。
  • Constant Delay Offset (in milliseconds): 设置随机等待时间的偏移值(毫秒)。这个值表示在每个请求之间的基本等待时间。
  • 计算公式:
    • 实际等待时间 = Constant Delay Offset + (0Random Delay Maximum 之间的随机值)
  • 例如,如果你设置最大等待时间为500毫秒,偏移值为200毫秒,那么实际等待时间将在200毫秒到700毫秒之间变化。
  • 设置示例:
    • Random Delay Maximum: 500
    • Constant Delay Offset: 200

添加HTTP请求默认值

HTTP Request Defaults可以在多个HTTP请求中设置默认的服务器和协议信息,减少冗余配置。

HTTP Request Defaults 的设置会应用于同一级别下所有的 HTTP 请求。如果在具体的 HTTP 请求中有设置,它会覆盖这里的默认设置。这样,你就可以更方便地共享和管理一些通用的请求参数。

选择 Add -> Config Element -> HTTP Request Defaults进行添加。

  • Server Name or IP: 输入服务器的主机名或 IP 地址。这是服务器的基本地址,实际请求中的具体路径可以在具体的 HTTP 请求中指定。
  • Port Number: 输入服务器的端口号。默认是80,如果是HTTPS则通常是443。
  • Protocol: 选择使用的协议,可以是 httphttps
  • Path: 如果有一些请求共享相同的路径,你可以在这里设置。在具体的请求中,你仍然可以覆盖这个路径。
  • Content Encoding: 可选项,可以选择请求的内容编码方式,例如 gzip。
  • Parameters: 如果有一些参数在多个请求中都是相同的,可以在这里设置。

添加HTTP头管理

HTTP Header Manager允许你添加自定义的HTTP头部信息,如User-Agent,用于更真实地模拟浏览器行为。

选择 Add -> Config Element -> HTTP Header Manager

  • User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
  • Authorization: Bearer your_access_token
  • Content-Type: application/json
  • Accept: application/json

添加HTTP请求

在Thread Group下右键单击 -> Add -> Sampler -> HTTP Request

  • Name: 用于标识请求的名称,显示在测试计划中,便于识别。
  • Protocol: 指定使用的协议,可以是 httphttps
  • Server Name or IP: 服务器的主机名或 IP 地址。
  • Port Number: 服务器的端口号,默认是80。如果使用 HTTPS,通常是443。
  • Method: HTTP 请求的方法,常见的有 GET、POST、PUT、DELETE 等。
  • Path: 请求的路径,即请求的具体终点。
  • Content Encoding: 请求的内容编码方式,例如 gzip。
  • Parameters: 请求的参数,可以手动输入键值对,也可以使用 “Add” 按钮添加键值对。这是请求的查询参数。
  • Body Data: 如果是 POST 请求,你可以在这里输入请求体的内容,通常用于传递 POST 请求的数据。
  • Files Upload: 用于上传文件的配置,可以指定要上传的文件。
  • Redirect Automatically: 如果勾选,JMeter 将自动处理重定向。
  • Follow Redirects: 如果勾选,JMeter 将跟随重定向。如果取消勾选,将不会跟随重定向。
  • Use KeepAlive: 如果勾选,将使用 HTTP Keep-Alive 以在单个连接上执行多个请求。
  • Use multipart/form-data for POST: 如果勾选,请求将使用 multipart/form-data 编码方式。常用于文件上传等场景。
  • Implementation: HTTP 请求的实现方式。默认为 “HttpClient4”,可以选择其他实现。
  • Retrieve All Embedded Resources from HTML Files: 如果勾选,JMeter 将尝试检索 HTML 页面中引用的所有嵌入资源(例如图像、样式表等)。

添加结果断言

结果断言(Response Assertion)是一种用于验证请求响应是否符合预期的断言。

常用的断言类型,它们分别用于验证不同方面的请求响应。以下是这几种常用断言的简要说明:

  1. 响应断言(Response Assertion)
    • 用途: 用于验证响应的内容是否符合预期,包括响应文本、响应代码、响应消息等。
    • 配置选项: 可以设置响应文本的包含、不包含、匹配等条件,以及验证响应代码、消息等。
  2. JSON断言(JSON Assertion)
    • 用途: 用于验证 JSON 格式的响应是否符合预期。适用于处理 API 接口返回的 JSON 数据。
    • 配置选项: 可以设置 JSON 路径表达式和期望的值,以确保响应中包含或不包含特定的 JSON 数据。
  3. 持续时间断言(Duration Assertion)
    • 用途: 用于验证请求的响应时间是否在指定的时间范围内。
    • 配置选项: 可以设置期望的响应时间范围,如果实际响应时间在这个范围内则断言通过,否则失败。

响应断言 Response Assertion

响应断言是最常用的一种断言方法,主要是对响应结果中的文本内容进行断言,比如响应结果是否包含指定的值,或者是否等于指定的值。响应断言可以适用各种返回类型的响应结果,如Test、html、application/json、application/xml等。

图片.png

JSON断言 JSON Assertion

JSON断言也是测试工作中经常用到的一种断言方法,它一般用于断言某个字段值是否等于我们指定的值。所以JSON断言只能针对响应结果为applicaton/json格式的进行断言操作。如果是其他类型(如:Test、html),则无法使用这种方式。

图片.png

持续时间断言 Duration Assertion

断言持续时间通常用于做性能测试,一般用于检查HTTP请求的响应时间是否超过预期值。而这个响应时间是性能测试中常关注的一个性能指标。

图片.png

添加察看结果树

选择Add -> Listener -> 察看结果树

将看到所有请求的详细信息,包括请求头、响应头、响应数据等。

察看结果树 是一个非常有用的监听器,用于调试和分析测试中的问题。通过查看这个监听器,你可以深入了解每个请求的执行情况,包括请求和响应的各个方面。

请注意,在进行实际的性能测试时,由于 察看结果树 会占用大量资源,建议在测试结束后禁用或删除该监听器,以避免影响测试性能。

添加聚合报告

选择 Add -> Listener -> 聚合报告

看到有关测试结果的聚合信息,包括平均响应时间、最小响应时间、最大响应时间、错误百分比等。

聚合报告 监听器是用于查看整体性能指标的一种方便工具。它将汇总所有线程组中的结果,并显示关键的性能统计信息。

请注意,在进行实际的性能测试时,由于 聚合报告 也会占用一些资源,建议在测试结束后禁用或删除该监听器,以避免影响测试性能。

添加表格察看结果

选择 Add -> Listener -> 察看结果表格

将看到表格形式的结果,包括请求的详细信息、响应时间、响应代码等。

察看结果表格 是一种以表格形式查看结果的监听器,提供了简洁的视图,便于查看关键信息。你可以在这个表格中查看每个请求的详细信息,包括响应时间、响应代码、错误等。

请注意,在进行实际的性能测试时,由于监听器会占用一些资源,建议在测试结束后禁用或删除不需要的监听器,以避免影响测试性能。

参考

  • http://testingpai.com/article/1655452307498

相关文章:

从零开发短视频电商 Jmeter压测示例模板详解(无认证场景)

文章目录 添加线程组添加定时器添加HTTP请求默认值添加HTTP头管理添加HTTP请求添加结果断言响应断言 Response AssertionJSON断言 JSON Assertion持续时间断言 Duration Assertion 添加察看结果树添加聚合报告添加表格察看结果参考 以压测百度搜索为例 https://www.baidu.com/s…...

C++可以函数重载而C不可以的原因

函数重载是指在同一个作用域内,可以定义多个函数,它们具有相同的名称但是参数列表不同。函数重载的主要原理是函数的签名不同,而在 C 中,函数签名包括函数的名称和参数列表。而在 C 中,函数的标识仅依赖于函数的名称&a…...

Spark常见算子汇总

创建RDD 在Spark中创建RDD的方式分为三种: 从外部存储创建RDD从集合中创建RDD从其他RDD创建 textfile 调用SparkContext.textFile()方法,从外部存储中读取数据来创建 RDD parallelize 调用SparkContext 的 parallelize()方法,将一个存在的集合&…...

【华为数据之道学习笔记】3-1 基于数据特性的分类管理框架

华为根据数据特性及治理方法的不同对数据进行了分类定义:内部数据和外部数据、结构化数据和非结构化数据、元数据。其中,结构化数据又进一步划分为基础数据、主数据、事务数据、报告数据、观测数据和规则数据。 对上述数据分类的定义及特征描述。 分类维…...

电脑版便签软件怎么设置在桌面上显示?

对于不少上班族来说,如果想要在使用电脑办公的时候,随手记录一些常用的工作资料、工作注意事项等内容,直接在电脑上使用便签软件记录是比较方便的。电脑桌面便签工具不仅方便我们随时记录各类工作事项,而且支持我们快速便捷使用这…...

【华为数据之道学习笔记】2-建立企业级数据综合治理体系

数据作为一种新的生产要素,在企业构筑竞争优势的过程中起着重要作用,企业应将数据作为一种战略资产进行管理。数据从业务中产生,在IT系统中承载,要对数据进行有效治理,需要业务充分参与,IT系统确保遵从&…...

【IC前端虚拟项目】git和svn项目托管平台的简单使用说明

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 代码托管在gitee平台上,进去后会看到文档目录“MVU芯片前端设计验证虚拟项目”和工程目录“mvu_prj”,可以通过git来下载工程: git clone gitgitee.com:gjm9999/ic_vi…...

C++ IO库

IO类 IO对象不能拷贝和赋值 iostream 表示形式的变化: 将100转换成二进制序列 然后格式化输出 x,y共用一块内存 输出的时候用不同的方式解析同一块内存 操作 格式化:内部表示转换为相应字节序列 缓存:要输出的内容放到缓存 编码转换&…...

Springboot 项目关于版本升级到 3.x ,JDK升级到17的相关问题

由于spring 停止对2.x 版本的维护,以及 jdk 频繁发布等客观因素,现需要对已有springboot 工程做一次全面升级;已因对市面上第三方等依赖库的兼容问题; 现有工程使用哥技术栈是版本: freemarker :2.3.32 spr…...

QGraphicsView实现简易地图7『异步加载-多瓦片-无底图』

前文链接:QGraphicsView实现简易地图6『异步加载-单瓦片-无底图』 前一篇文章提到的异步单瓦片加载,是指线程每准备好一个瓦片数据后,立刻抛出信号让主线程加载。而本篇异步多瓦片加载是指线程准备好所有瓦片数据后,一起抛出信号让…...

Spring Boot学习(三十三):集成kafka

前言 下面是zookeeper和kafka的官网下载地址,大家可以学习下载 zookeeper下载地址:http://zookeeper.apache.org/releases.html kafka下载地址:http://kafka.apache.org/downloads.html 1、添加依赖 在 pom.xml 文件中添加kafka依赖&am…...

MOSFET

MOSFET 电子元器件百科 文章目录 MOSFET前言一、MOSFET是什么二、MOSFET类别三、MOSFET应用实例四、MOSFET作用原理总结前言 MOSFET是一种常见的半导体器件,通过栅极电场控制通道区的导通特性,以控制电流流动。它在现代电子电路中发挥着重要的作用,并广泛应用于各种应用领域…...

DriveWorks——参数化设计非标定制利器

DriveWorks基本介绍 DriveWorks是一套被 SOLIDWORKS 认可为金牌合作伙伴产品的设计自动化软件。DriveWorks 可自动创建特定于订单的销售文档和 SOLIDWORKS 制造数据。减少重复性任务,消除错误,增加销售额,并在创纪录的时间内交付定制产品。 为…...

DevEco Studio集成ArkUI-X

语雀知识库地址:语雀HarmonyOS知识库 飞书知识库地址:飞书HarmonyOS知识库 在上篇文章(HarmonyOS应用开发工具DevEco Studio安装与使用)中我说到官方推出了4.0 Beta版本的IDE,这篇文章就来介绍这个版本的安装与使用 该版本集成了HarmonyOS多…...

网络视频服务器的作用是什么?

随着互联网的快速发展和网络带宽的提升,网络视频已经成为人们日常生活中不可或缺的一部分。网络视频服务器作为支持和传输网络视频的关键基础设施,发挥着重要的作用。本文将以网络视频服务器的作用为方向,探讨其在现代社会中的重要性。 首先…...

解决vue3使用iconpark控制台预警提示问题

前言 最近在项目中使用 iconpark-icon 来管理图标,一切都很顺利,引入链接后,图标正常显示,没有报错。但是控制台却发出了预警信息。 [Vue warn]: Failed to resolve component: iconpark-icon If this is a native custom eleme…...

VMware 虚拟机 NAT 模式网络配置

配置的核心点在于 网关要一致,才能访问外网 比如下面的网关都是:192.168.145.2 问题总结: 当时重启电脑后如果连不上外网了,检查下 windows 服务中 NAT服务是否已经启动...

5-redis高级-哨兵

1 哨兵 1.1 python 操作哨兵 1 哨兵 # 主从---》一主多从-主库用来写-从库用来读-主库挂了--》整个系统就不能写数据了#主从复制存在的问题:1 主从复制,主节点发生故障,需要做故障转移,可以手动转移:让其中一个slave变…...

鸿蒙HarmonyOS4.0开发应用学习笔记

黑马程序员鸿蒙4.0视频学习笔记,供自己回顾使用。1.安装开发工具DevEco Studio 鸿蒙harmony开发文档指南 DevEco Studio下载地址 选择或者安装环境 选择和下载SDK 安装总览 编辑器界面 2.TypeScript语法 2.1变量声明 //string 、number、boolean、any、u…...

联通宽带+老毛子Padavan固件 开启IP v6

联通宽带开启IP v6 参考: 联通宽带开启 IPV6 的方法_联通ipv6怎么开通-CSDN博客 个人宽带如何开启IPv6网络访问 - 知乎 (zhihu.com) 首先,你要确定当前你所在的地区运营商已经开通了IPV6,可以使用手机流量 IP查询(ipw.cn) | IPv6测试 | IPv…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》

近日&#xff0c;嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》&#xff0c;海云安高敏捷信创白盒&#xff08;SCAP&#xff09;成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天&#xff0c;网络安全已成为企业生存与发展的核心基石&#xff0c;为了解…...