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

全网最详细,Jmeter性能测试-性能基础详解,终成测试卷王(一)

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

发起请求

发起HTTP、HTTPS协议请求就不多说了。比较基础的了

写脚本的注意事项:
1、用Jmeter发起请求,必须写上协议,不然会向http和https各发起一次请求
2、填域名或者IP时,不能有“/”
3、填路径时,不要把IP或者域名填进来
4、注意路径前后是否有空格,有的话要删掉,不然会把空格转换为%20(urlencode编码)一起发起请求
5、内容编码一般默认是utf8,如果出现乱码可以查看本页最底下的场景异常。
6、注意请求体的选择

参数与消息体的选择

在编写HTTP请求时,请求体的内容可以在参数和消息体数据中二选一。
但这两者并不是随便选的,参数里面的值是会跟在Url后面的,而消息体数据的值则是放在请求体内的。

参数
1、GET请求只能使用参数的方式;
2、Post请求要看Content-Type是什么值,如果是x-www-from-urlencoded则是使用参数;
3、如果Post请求不指名请求体类型,也是使用参数传值

消息体数据

1、Post请求的Content-Type的值是application/json就是用的消息体数据;
2、xml格式的请求体是在消息体数据里面写;

重定向

HTT取样器这里有几个很容易忽略的地方

请添加图片描述

自动重定向
不会显示中间重定向过程,无法从过程中提取信息。

跟随重定向
会自动显示重定向过程,能从过程中提取想要的信息,可用于后面接口请求。

KeepAlive
保持连接、长连接。由于现在使用的HTTP版本是1.1就是长连接,所以默认是勾选KeepAlive。
但是在性能测试中,我们会根据需要去掉这个勾。因为在性能测试会产生大量的请求,每个请求会使用一个本机的端口,如果这些请求一直保持着连接,也会影响到本机的资源,所以在部分场景下会需要缩短连接的时间,不勾选KeepAlive。
大部分场景下上面所说的不需要改动,保持默认即可。

查看结果树

查看结果数中,绿色只是代表网络成功,不代表结果是否准确;
红色代表失败,但失败的原因也有很多种,具体情况具体分析。

结果树中的显示顺序是根据收到响应的先后顺序显示,所以在多用户的场景下,查看结果树的结果顺序未必是相同的。

配置原件执行顺序

配置原件的执行顺序很重要,请牢记!
1、测试计划是根目录,肯定是最先执行的,这里不解释了。
2、线程组中有setup和teardown线程组,setup线程组是所有线程组之中最先执行的;teardown则是所有线程组执行完成后才执行的。
3、其余线程组之间是并行的。

断言

在接口测试、自动化测试脚本中一定会添加断言,断言的目的是判断是否有bug。但是断言这个元件在执行时会消耗资源,虽然消耗的资源都是来自于本机的,但在性能测试中还是不推荐加断言。

在性能测试时,本机的资源也会影响性能测试的结果。
例如原本机器能发起1000个并发,但由于加了断言,实际可能只达到了900个并发,但你设置的并发却是1000个,这样你得到的性能结果就并不准确了。

聚合报告

请添加图片描述

要看聚合报告有个提前条件:

1、没有网络瓶颈

因为在很多时候,在看聚合报告时会把吞吐量的值等价为TPS的值,但实际上吞吐量是衡量网络的指标值,在网络中传递事务的数量有多少个;
而Tps是服务器每秒处理的事务数。

举个例子:一个药厂每天可以生成10000支疫苗,但因为运输的问题,每天只有8000支疫苗运出,那这难道就能说这个药厂的Tps是8000吗?

如果要判断性能瓶颈,可以看聚合报告最后两列,它们是吞吐率。通过这个可以看出是否存在网络带宽。

平常讲带宽时,讲的百兆带宽,它的单位是100Mb,但再去看聚合报告里面的,它的单位是KB。这里面小写b和大写B是不相等的,它们之间是8倍的关系。 100Mb = 100 * 1024kb = 102400kb/8 = 12800KB。然后如果是1兆的带宽那就是 1Mb= 1 * 1024kb = 1024kb/8=128KB。

基于上述的公式,结合自己的带宽再来看看聚合报告,如果接受和发送的KB没有接近理论值,那就是没有网络瓶颈。

补充一点,企业级的带宽与民用带宽不一样,企业级的带宽上行比较宽,下行比较窄,而民用带宽则是相反。

2、并发用户数不变

负载测试时,并发用户数会随着时间变化而变化,而聚合报告是计算的平均值,一旦并发用户数发生变化,那值就不准确了。

聚合报告中每一行都是一种事务

每一列的意思:
样本:在运行过程中,所有并发用户数在一段时间内总共发起的请求数
单独看样本是无法知道并发用户数、执行时长,但并发用户数和执行时长可以在线程组里面看。

然后当并发用户数、执行时长、样本是已知时,那就可以计算出Tps:
并发用户数® * 时长(S) * 频率§ = 样本数
10R * 60S * P = 500
P ≈ 0.83 意思就是每个用户每秒钟发起0.83个请求,那10个用户就是每秒钟8.3个请求

平均值、中位数、…最小值:这些都是响应时间,单位是毫秒ms
其中90%、95%、99%的意思是总共的样本里有百分之90、95、99的请求小于等于聚合报告里的值。
90%~95%是比较有参考价值的。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只要你仍有梦想,你就还有机会。不管你现在处于什么位置,只要你拥有勇气与毅力,就能够战胜困难。无论前方会遭遇怎样的挑战,我们都要坚持走下去,为了理想而奋斗。

只有勇敢面对挑战,才能收获胜利的喜悦;只有不断努力奋斗,才能谱写人生最美妙的篇章。

只有在努力奋斗的过程中,我们才能真正感受到生命的存在。每一份汗水都是成就的铸造,每一次坚持都是梦想的践行。让我们怀揣着信念,不断向前,勇往直前。

相关文章:

全网最详细,Jmeter性能测试-性能基础详解,终成测试卷王(一)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 发起请求 发起HTTP…...

人工智能概述

一、人工智能发展必备三要素 算法 数据 算力 CPU、GPU、TPU 计算力之CPU、GPU对比: CPU主要适合I\O密集型任务GPU主要适合计算密集型任务 什么样的程序适合在GPU上运行? 计算密集型的程序 所谓计算密集型(Compute-intensive)的程序,就是…...

API接口安全—webservice、Swagger、WEBpack

API接口安全—webservice、Swagger、WEBpack1. API接口介绍1.1. 常用的API接口类1.1.1. API接口分类1.1.1.1. 类库型API1.1.1.2. 操作系统型API1.1.1.3. 远程应用型API1.1.1.4. WEB应用型API1.1.1.5. 总结1.1.2. API接口类型1.1.2.1. HTTP类接口1.1.2.2. RPC类接口1.1.2.3. web…...

从前M个字母中取N个的无重复排列 [2*+]

目录 从前M个字母中取N个的无重复排列 [2*+] 程序设计 程序分析 从前M个字母中取N个的无重复排列 [2*+] 输出从前M个字母中取N个的无重复字母排列 Input 输入M N 1<=M=10, N<=M Output 按字典序输出排列 Sample Input 4 2 Sample Output A B A C A D B A B C B …...

ES forceMerge 强制段合并为什么会提升检索性能?

根据以前的测试&#xff0c;forceMerge段合并&#xff0c;将段的个数合并成一个。带来了将近一倍的性能提升&#xff0c;测试过程文档&#xff08;请参考我的另外一篇文章&#xff09;&#xff1a;ES优化实战- forceMerge搜索提升测试报告_es forcemerge_水的精神的博客-CSDN博…...

macOS Ventura 13.3.1 (22E261) Boot ISO 原版可引导镜像

本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 macOS Ventura 13.3.1 为 Mac 提供下…...

html+css+JavaScript+json+servlet的社区系统(手把手教学)

目录 课前导读&#xff1a; 一、系统前期准备 二、前端代码的编写 三、登陆页面简介 四、注册页面 五、社区列表页 六、社区详情页 七、社区发帖页 八、注销 九、访问链接 登陆页面http://175.178.20.77:8080/java106_blog_system/login.html 总结&#xff1a; 课前…...

UI Toolkit(1)

UI ToolkitUI Toolkit界面画布设置背景制作UI布局UI Toolkit界面 在Unity 2021LTS版本之后UI Toolkit也被内置在Unity中&#xff0c;Unity有意的想让UI Toolkit 成为UI的主要搭建方式&#xff0c;当然与UGUI相比还是有一定的差别。他们各有有点&#xff0c;这次我们就开始介绍…...

vLive带你走进虚拟直播世界

虚拟直播是什么&#xff1f; 虚拟直播是基于5G实时渲染技术&#xff0c;在绿幕环境下拍摄画面&#xff0c;通过实时抠像、渲染与合成&#xff0c;再推流到直播平台的一种直播技术。尽管这种技术早已被影视工业所采用&#xff0c;但在全民化进程中却是困难重重&#xff0c;面临…...

初谈 ChatGPT

引子 最近&#xff0c;小编发现互联网中的大 V 突然都在用 ChatGPT 做宣传&#xff1a;“ChatGPT不会淘汰你&#xff0c;能驾驭ChatGPT的人会淘汰你”、“带领一小部分人先驾驭ChatGPT”。 确实&#xff0c;ChatGPT这个新生事物&#xff0c;如今被视为蒸汽机、电脑、iPhone 般的…...

JAVA练习103-螺旋矩阵

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 4月9日练习内容 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、题目-螺…...

RecvByteBufAllocator内存分配计算

虽然了解了整个内存池管理的细节&#xff0c;包括它的内存分配的具体逻辑&#xff0c;但是每次从NioSocketChannel中读取数据时&#xff0c;应该分配多少内存去读呢&#xff1f; 例如&#xff0c;客户端发送的数据为1KB , 应该分配多少内存去读呢&#xff1f; 例如&#xff1a;…...

图数据结构与算法

什么是图数据的结构 图是由顶点和边组成的非线性数据结构。顶点有时也称为节点,边是连接图中任意两个节点的线或弧。更正式地说,图由一组顶点 ( V ) 和一组边 ( E ) 组成。该图由 G(E, V) 表示。 图的组成部分 顶点:顶点是图的基本单位。有时,顶点也称为顶点或节点。每个节…...

科普:c语言与C++的区别

C语言和C语言是两种广泛使用的编程语言&#xff0c;尽管它们非常相似&#xff0c;但它们在某些方面也存在不同之处。本文将详细介绍C语言和C语言的区别。 1. 编程范式 C语言是一种过程式编程语言&#xff0c;它的设计目标是为了编写操作系统和其他系统级编程。C语言是一种面向…...

流量整形(GTS和LR)

Generic Traffic Shaping通用流量整形 通用流量整形(简称GTS)可以对不规则或不符合预定流量特性的流量进行整形,以保证网络上下游之间的带宽匹配,避免拥塞发生。 GTS与CAR一样,都采用了令牌桶技术来控制流量。GTS与CAR的主要区别在于:利用CAR进行报文流量控制时,…...

Java接口详细讲解

目录 Java接口概念 Java接口主要有以下特点 Java接口的具体作用 定义接口 实现接口 接口继承 默认方法 静态方法 Java接口概念 Java编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 …...

元宇宙地产暴跌,林俊杰亏麻了

文/章鱼哥出品/陀螺财经随着元宇宙的兴起&#xff0c;元宇宙地产曾一度被寄予厚望&#xff0c;成为各大投资者追捧的对象。然而&#xff0c;最近的一次元宇宙地产价值暴跌再次提醒我们&#xff0c;高收益背后可能伴随着高风险。根据元宇宙分析平台WeMeta的数据显示&#xff0c;…...

什么是瀑布流布局?瀑布流式布局的优缺点

瀑布流又称瀑布流式布局&#xff0c;是一种多列等宽不等高的一种页面布局方式。 视觉表现为参差不齐的多栏布局。随着页面滚动条向下滚动&#xff0c;这种布局会不断加载数据并附加至当前的尾部。 是一种多列等宽不等高的一种页面布局方式&#xff0c;用于图片比较复杂&#…...

给您的 MongoDB 定期做个体检:MongoDB 诊断

新钛云服已累计为您分享739篇技术干货接下来的一些列文章会为大家介绍日常工作中常用的 NoSQL 产品 MongoDB。主要涉及到&#xff1a;MongoDB 的安装及基本使用 MongoDB 文档查询 MongoDB 复制集 MongoDB 分片集群的介绍及搭建 MongoDB 安全加密 MongoDB 诊断我们会用…...

【云原生进阶之容器】第五章容器运行时5.8--容器热迁移

《云原生进阶之容器》专题索引: 第一章Docker核心技术1.1节——Docker综述第一章Docker核心技术1.2节——Linux容器LXC第一章Docker核心技术1.3节——命名空间Namespace第一章Docker核心技术1.4节——chroot技术第一章Docker核心技术1.5.1节——cgroup综述...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...