【性能测试】性能压测TPS上不去原因分析,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.hqwc.cn/news/317077.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一题 2487. 从链表中移除节点(中等,回溯)

显然只要从后往前遍历链表,设 t 为当前的最大值,只要在遍历过程中比 t 小的节点都删除,大于等于 t 的则更新 t 为新的节点 通过递归回溯的方法可以很简单地实现从后往前遍历链表 # Definition for singly-linked list. # class ListNode: # …

fs-extra 文件操作的常用API

fs-extra 是一个比 node 内置 fs 模块更安全、更强大的文件操作库,支持 promise 和 async/await,为使用者免去了很多心理负担。 一、安装使用 安装: pnpm add fs-extra文件复制代码演示: const {copy,copySync } require(fs-e…

揭示AUTOSAR中隐藏的漏洞

AUTOSAR是一个普遍采用的软件框架,用于各种汽车零部件,如ABS, ECU,自动照明、环境控制、充电控制器、信息娱乐系统等。AUTOSAR的创建目的是促进汽车零部件之间形成标准接口,可以在不同制造商之间互通。 因此,任何配备微控制器(MC…

陈述式资源管理(2)

命令行。声明式资源管理 三种常见的项目发布方式: 1、蓝绿发布 2、金丝雀发布(灰度发布) 3、滚动发布 应用程序升级,最大困难就是新旧业务之间的切换。立项 --- 定稿 --- 需求发布 --- 开发 --- 测试 --- 发布。测试之后上线…

深度生成模型之GAN基础 ->(个人学习记录笔记)

文章目录 深度生成模型之GAN基础生成对抗网络1. 生成对抗网络如何生成数据2. 生成对抗原理3. GAN的核心优化目标4. D的优化5. GAN的理想状态6. GAN的训练7. 梯度不稳定与模式崩塌(collapse mode)问题8. 梯度消失问题 深度生成模型之GAN基础 生成对抗网络 1. 生成对抗网络如何…

MATLAB中xcorr函数用法

目录 语法 说明 示例 两个向量的互相关 向量的自相关 归一化的互相关 xcorr函数的功能是返回互相关关系。 语法 r xcorr(x,y) r xcorr(x) r xcorr(___,maxlag) r xcorr(___,scaleopt) [r,lags] xcorr(___) 说明 r xcorr(x,y) 返回两个离散时间序列的互相关。互相…

内网离线搭建之----nginx配置ssl高可用

一、证书生成 1.生成服务端私钥 openssl genrsa -des3 -out server.key 2048 2.去除server.key密码 ps:否则每次用到都需要输入密码 openssl rsa -in server.key -out server.key 3.生成证书的签名 ps:使用机构颁发证书的到这一步就可以了&#xff…

2024年美赛数学建模ABCDEF题思路选题分析

文章目录 1 赛题思路2 美赛比赛日期和时间3 赛题类型4 美赛常见数模问题5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 美赛比赛日期和时间 比赛开始时间:北京时间2024年2月2日(周五&#xff…

【Dubbo】RPC框架dubbo入门

目录 Dubbo 架构概述Dubbo是什么Dubbo能做什么Dubbo 核心概念和架构Dubbo 数据面服务开发框架通信协议 Dubbo 服务治理服务治理抽象Dubbo Admin服务网格 Dubbo入门开发实战实战案例介绍基于Spring Boot Starter开发安装Zookeeper父工程dubbo-demo接口服务模块service-api接口提…

vue登录 滑动验证,记住密码及AES加密解密

相关依赖 npm install js-cookie //js-cookie npm install crypto-js //AES加密解密 npm install -S vue-puzzle-vcode //滑动验证 <template><div class"login"><div class"login-box"><!-- 标题 --><div class"img…

Windows2012MySQL的安装与配置【详细教程】

目录 一.mysql5.7安装与配置 二.安装MySQL8.0 三.向日葵远程操作工具 3.1.介绍 3.2.常见的使用场景 3.3.使用方法 好啦今天就到这里了&#xff01;&#xff01;&#xff01;希望能帮到你哦&#xff01;&#xff01;&#xff01; 一.mysql5.7安装与配置 首先把你的虚拟机打…

DevOps系列 之 Python与Java互相调用的案例

Python和Java是两种非常流行的编程语言。Python是一种解释型语言&#xff0c;而Java则是一种编译型语言。两者都有广泛的应用&#xff0c;尤其是在测试领域。在本文中&#xff0c;我们将讨论如何使用Python测试Java源代码&#xff0c;Java如何调用Python脚本。 单元测试 单元…