【性能测试】性能压测TPS上不去原因分析,13年老鸟总结...

news2024/10/5 17:05:13

目录:导读

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


前言

1、性能测试TPS上不去的几种原因

先来解释下什么叫TPS:
TPS:每秒事务数,指服务器在单位时间内(秒)可以处理的事务数量,一般以request/second为单位。

下面就说说压测中为什么TPS上不去的原因:

1)网络带宽

在压力测试中,有时候要模拟大量的用户请求,如果单位时间内传递的数据包过大,超过了带宽的传输能力,那么就会造成网络资源竞争,间接导致服务端接收到的请求数达不到服务端的处理能力上限。

2)连接池

可用的连接数太少,造成请求等待。连接池一般分为服务器连接池(比如Tomcat)和数据库连接池(或者理解为最大允许连接数也行)。

3)垃圾回收机制

从常见的应用服务器来说,比如Tomcat,因为java的的堆栈内存是动态分配,具体的回收机制是基于算法,如果新生代的Eden和Survivor区频繁的进行Minor GC,老年代的full GC也回收较频繁,那么对TPS
也是有一定影响的,因为垃圾回收其本身就会占用一定的资源。

4)数据库配置

高并发情况下,如果请求数据需要写入数据库,且需要写入多个表的时候,如果数据库的最大连接数不够,或者写入数据的SQL没有索引没有绑定变量,抑或没有主从分离、读写分离等,就会导致数据库事务处理过慢,影响到TPS。

5)通信连接机制

串行、并行、长连接、管道连接等,不同的连接情况,也间接的会对TPS造成影响。

6)硬件资源

包括CPU(配置、使用率等)、内存(占用率等)、磁盘(I/O、页交换等)。

7)压力机

比如jmeter,单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,也会间接影响TPS(这个时候就需要进行分布式压测来解决其单机负载的问题)。

8)压测脚本

还是以jemter举个例子,之前工作中同事遇到的,进行阶梯式加压测试,最大的模拟请求数超过了设置的线程数,导致线程不足。

提到这个原因,想表达意思是:有时候测试脚本参数配置等原因,也会影响测试结果。

9)业务逻辑

业务解耦度较低,较为复杂,整个事务处理线被拉长导致的问题。

10)系统架构

比如是否有缓存服务,缓存服务器配置,缓存命中率、缓存穿透以及缓存过期等,都会影响到测试结果。

PS:性能瓶颈分析不能单从局部分析,要综合起来,多维度分析问题原因。上面列出的几点,可能有描述不当或者遗漏的,仅供参考。

2、自动化测试和性能测试

共同点:

接口的自动化测试和性能测试在处理脚本的方式上差不多,特别是使用JMeter、LR 这些工具测试的时候,例如测http协议的请求,只需模拟发送get或post方式的请求,接口脚本很容易转成性能测试脚本。

但对于Web应用来说,自动化测试和接口测试就大相径庭了。下面说下具体的差异吧。

差异:

1)测试角度不同

自动化测试和性能测试的出发点不一样,也就是最终的目的不一样。自动化测试是基于功能测试,案例也是来自功能测试,通常用做回归测试,其实测的是业务,是功能。

性能测试考虑单个接口的性能,有时候不会太考虑整体的业务通不通,只需考虑需要压测接口的性能表现,比如处理的tps、平均响应时间、支持的并发用户数。当然性能测试也会关注整个流程的测试。

比如有个做性能测试的小伙伴去做接口测试,就某一个产品的下单操作来说,做接口测试是为了查看下单这个功能是不是正常,他写的接口测试脚本跟性能测试脚本一样,只有一个下单的接口,下单之前一些商品的查询,账户的查询都没有做,这在业务上是不连贯的。

2)使用框架不同

如果说接口的自动化测试和性能测试在脚本处理上有些相同,就Web测试来说,二者就大相径庭了。

首先使用的框架就不一样,Web自动化测试使用的是Selenium Webdriver,模拟的是点击页面的元素,性能测试还是录脚本、发请求。一个主要是关注页面元素,后端做了些什么完全是黑盒;

一个需要关注发的请求有哪些,是post还是get,传的参数是什么,后端的一些知识还是要了解下,有点像灰盒。

3)要掌握的技能不同

自动化测试偏重开发,对开发语言要求相对高些,如果只是配置现成的框架做自动化测试,那要求并不高。

性能测试要了解的知识很多,脚本语言(C或者java等等)、操作系统(Linux,常用的监控命令,出问题时分析线程)、数据库(查询语句、表的关联、索引、Oracle的AWR 报表);如果是高级的性能测试,那还要懂架构方面的知识。

总的来说,自动化测试偏向于开发,但要有测试的思维;
性能测试要懂的知识点很多,真正高级的性能测试也跟开发架构师的水平差不多了。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

风雨兼程,无畏困境,相信自己的力量,勇往直前;抓住机遇,砥砺前行,只要心怀梦想,努力奋斗,就能创造出不朽的辉煌人生。

人生犹如驶向远方的航船,只有勇往直前,才能抵达成功的彼岸;坚持奋斗,追逐梦想,将创造出属于自己的辉煌与成就!

不要停下脚步,不要放弃梦想,即使前路坎坷,也要坚持奋斗;相信自己的力量,追逐辉煌,只有拼搏才能书写精彩人生的篇章!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1352224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构学习 jz42连续子数组最大和

关键词:动态规划 滚动数组 最长上升子序列 这道题比较简单,类似最长上升子序列,比最长上升子序列简单。 和最长上升子序列的区别:这道题因为是连续的,所以只用记录max就好了。最长上升子序列是不连续的,所…

【计算机毕业设计】SSM实现的在线农产品商城

项目介绍 本项目分为前后台,且有普通用户与管理员两种角色。 用户角色包含以下功能: 用户登录,查看首页,按分类查看商品,查看新闻资讯,查看关于我们,查看商品详情,加入购物车,查看我的订单,提交订单,添加收获地址,支付订单等功能。 管理员角色包含以…

TypeScript 之 interface 和 type 的区别

结论: 1、可以声明的数据类型 type 可以修饰任何类型 (值类型和引用数据类型) interface 只能修饰引用类型 (对象、数组、函数) //interface 声明对象属性 interface ins {a: string;b?: number; //可选项 }// int…

python主流开发工具排名,python最好用的开发工具

大家好,小编来为大家解答以下问题,python的开发工具软件有哪些,python主流开发工具排名,今天让我们一起来看看吧! 对于程序员来说,除了日常争论世界上最好的语言是哪一门以外,哪款 IDE 是最好的…

羊大师讲解长期喝羊奶的女性,身体变化与福利

羊大师讲解长期喝羊奶的女性,身体变化与福利 羊奶作为天然健康食品一直备受关注,尤其对女性来说更是具有独特的身体效益。长期喝羊奶不仅可以改善女性的健康状况,还能带来一系列积极的身体变化。本文小编羊大师将为大家详细介绍长期饮用羊奶…

程序员必知!装饰模式的实战应用与案例分析

装饰模式是一种结构型设计模式,允许在不改变对象基础上动态添加职责或行为。举个咖啡店中咖啡定制的实际例子,顾客可选不同配料装饰咖啡,每个配料视作装饰器,装饰模式优点有动态扩展、灵活性和避免类爆炸,但可能增加系…

Nacos 持久化及集群的搭建【微服务】

文章目录 一、统一配置管理二、微服务配置拉取三、配置热更新四、多环境共享配置五、Nacos 集群搭建1. 集群结构2. 初始化数据库3. 搭建集群 六、Nginx 反向代理七、启动项目测试 一、统一配置管理 案例练习的时候我们只有两个微服务,管理起来非常简单,但…

虎克:开发小程序要多少钱一个,非专业开发如何做自己的小程序

小程序开发费用主要取决于小程序的功能复杂度和开发周期。一般来说,小程序开发费用可以分为两类:模板开发和定制开发。 模板开发:模板开发是指使用现成的模板进行开发,价格相对较低,一般在几千元左右。优点是价格便宜&…

SpringSecurity-2.7中跨域问题

SpringSecurity-2.7中跨域问题 访问测试 起因 写这篇的起因是会了解到 SSM(CrosOrigin)解决跨域,但是会在加入SpringSecurity配置后,这个跨域解决方案就失效了,而/login这个请求上是无法添加这个注解或者通过配置(WebMvcConfig)去解决跨域,所以只能使用SpringSecurity提供的.c…

【接口自动化】写接口自动化case要注意的点!

可能有人会说,写接口的自动化CASE多简单了,写个参数发送请求完事了,还要注意啥? 没错,相比起UI自动化的case,你要去写各种定位器,接口自动化的case写起来确实容易多了。这也是接口自动化的一个…

APM32 移植 RTX5

打开APM32的 一个官方例子或者模板工程, MKD格式 更改工程属性,将编译器换为V6: 然后勾选 Use MicroLIB; 接着: 接着: 接着确认 然后编译,会报260个错误: 然后 打开工程树中 下面的文件: 如果用的是M4内核,添加下面的定义:

2SK3019 中低压MOSFET 60V 100mA 双N通道 SOT-723封装

2SK3019小电流双N通道MOSFET,电压60V电流100mA,采用SOT-723封装形式。适用于低RDS (on)的高密度电池设计,压控小信号开关,坚固可靠,ESD保护。可应用便携式设备的负载开关,电池开关上。

探索 CodeWave低代码技术的魅力与应用

目录 前言1 低代码平台2 CodeWave简介3 CodeWave 的独特之处3.1 高保真还原交互视觉需求3.2 擅长复杂应用开发3.3 支持应用导出&独立部署3.4 金融级安全要求3.5 可集成性高3.6 可拓展性强 4 平台架构和核心功能4.1 数据模型设计4.2 页面设计4.3 逻辑设计4.4 流程设计4.5 接…

【STM32F103】TIM定时器PWM

定时器分类 STM32F1中除了互联型产品(STM32F103C8T6为64KB Flash 中容量产品),其余有8个定时器。 可以8个定时器分为高级,通用,基本三种。 高级定时器有两个,分别是TIM1和TIM8。 通用定时器有四个&…

SD-WAN:提升连锁零售企业异地组网稳定性

连锁零售企业往往拥有众多分布在不同地区的分支机构和零售店,为保证企业高效运转,各地区之间的网络连接必须稳定可靠。但基于各地网络基础设施的不同和网络延迟、带宽等限制,异地组网往往并不稳定。在这背景下,SD-WAN成为连锁零售…

频谱论文:空间频率插值的无线电地图 Space-Frequency-Interpolated Radio Map

#频谱# K. Sato, K. Suto, K. Inage, K. Adachi and T. Fujii, "Space-Frequency-Interpolated Radio Map," in IEEE Transactions on Vehicular Technology, vol. 70, no. 1, pp. 714-725, Jan. 2021, doi: 10.1109/TVT.2021.3049894. 东京理科大学&#xff0…

MBP的新拉力=800MT+凯越525+泛美?

MBP国内新兴品牌,可能部分车友了解,之前专门做欧洲市场的,米兰车展的时候它带来一款比较有意思的车型,型号:T502X,这个502和贝纳利的502关系不大。 据了解,车辆是由高金代工生产的,发动机就是高…

闲置树莓派(linux单片机)做NAS的最简单方案

闲置的树莓派其实可以做nas服务器使用。树莓派单片机5V2A,功耗大概10W。外置移动硬盘盒子12V2A 功耗大概24W。全加起来,功耗一小时30W,一天3角左右的运行成本,速率也可以,非常划算。(其他任何Linux单片机原…

2024年个人工作计划怎么写?新年待办计划这样写更方便

元旦的钟声还在耳边回响,2024年的新篇章已经开启。面对新的一年,我深知一个清晰、实用的个人工作计划是多么重要。它不仅是指引我前进的灯塔,更是我实现目标、提升效率的秘密武器。 但如何制定这样一个计划呢?在过去,…

边框渐变色+圆角

这两个同时写,圆角不会生效 li {width: 282px;height: 96px;margin-right: 20px;box-sizing: border-box;border: 1px solid transparent;background-image: linear-gradient(#fff, #fff),linear-gradient(to right, #8efd9f, #07cbfb);background-origin: border-b…