全网最详细,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 强制段合并为什么会提升检索性能?
根据以前的测试,forceMerge段合并,将段的个数合并成一个。带来了将近一倍的性能提升,测试过程文档(请参考我的另外一篇文章):ES优化实战- forceMerge搜索提升测试报告_es forcemerge_水的精神的博客-CSDN博…...

macOS Ventura 13.3.1 (22E261) Boot ISO 原版可引导镜像
本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 macOS Ventura 13.3.1 为 Mac 提供下…...

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

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

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

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

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

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

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

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

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

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

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

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

给您的 MongoDB 定期做个体检:MongoDB 诊断
新钛云服已累计为您分享739篇技术干货接下来的一些列文章会为大家介绍日常工作中常用的 NoSQL 产品 MongoDB。主要涉及到: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综述...

react框架的简单认识
React框架 众所周知,React与Vue,Angular被前端开发人员称为前端的三大框架。在如今,React和Vue相对于老牌的Angular,它们的表现更为出色,常常被各大公司使用。但其中React的技术难度要稍稍大于Vue,不过为了…...

IDEA的基本使用
IDEA的基本使用IDEA的基本使用1 IDEA概述2 IDEA的下载和安装2.1 下载2.2 安装3 IDEA中层级结构介绍3.1 结构分类3.2 结构介绍project(项目、工程)module(模块)package(包)class(类)3…...

【MySQL】实验八 触发器与存储过程
文章目录 1. 创建商品价格修改记录表2. 创建触发器,当更改商品价格(price列)时,记录价格3. SQL触发器:插入新员工时,同步更新部门表相应人数4. SQL触发器:删除学生数据5. SQL触发器:创建成绩表插入触发器6. SQL存储过程:查询订单7. SQL存储过程:建立存储过程,查询课程…...

Mockito5.2.0学习
Mockito是mocking框架,它让你用简洁的API做测试。而且Mockito简单易学,它可读性强和验证语法简洁。 Mockito 是一个针对 Java 的单元测试模拟框架,它与 EasyMock 和 jMock 很相似,都是为了简化单元测试过程中测试上下文 ( 或者称之…...

用指针实现内存动态分配
导引:已知:变量在使用前必须被定义且安排好存储空间。且变量有这么一些分类:全局变量、静态局部变量【它们的储存一般是在编译时确定,在程序开始执行前完成。】自动变量【在执行进入变量定义所在的复合语句时为它们分配存储&#…...

DBSCAN聚类算法及Python实现
DBSCAN聚类算法 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,可以将数据点分成不同的簇,并且能够识别噪声点(不属于任何簇的点)。 DBSCAN聚类算法的基…...

风光及负荷多场景随机生成与缩减
目录 1 主要内容 计算模型 场景生成与聚类方法应用 2 部分程序 3 程序结果 4 程序链接 1 主要内容 该程序方法复现了《融合多场景分析的交直流混合微电网多时间尺度随机优化调度策略》3.1节基于多场景技术的随机性建模部分,该部分是随机优化调度的重要组成部分…...

lamda表达式
lamda表达式一. lamda表达式的特性二.常用匿名函数式接口2.1 Supplier接口2.2 Consumer接口2.3 Predicate接口2.4 Function接口2.5 BiFunction接口三.stream流传递先后顺序四.表达式4.1 ForEach4.2 Collect4.3 Filter4.4 Map4.5 MapToInt4.6 Distinct4.7 Sorted4.8 groupingBy4…...

MobTech 秒验|极速验证,拉新无忧
一、运营拓展新用户的难题 运营拓展新用户是每个应用都需要面对的问题,但是在实际操作中,往往会遇到一些困难。其中一个主要的难题就是注册和登录的繁琐性。用户在使用一个新的应用时,通常需要填写手机号、获取验证码、输入验证码等步骤&…...

大模型混战,阿里百度华为谁将成就AI时代的“新地基”?
从算力基础到用户生态,群雄逐鹿大模型 自2022年stable diffusion模型的进步推动AIGC的快速发展后,年底,ChatGPT以“破圈者”的姿态,快速“吸粉”亿万,在全球范围内掀起了一股AI浪潮,也促使了众多海外巨头竞…...