【性能测试】性能压测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编程入门到精通

【性能测试】性能压测TPS上不去原因分析,13年老鸟总结..._第1张图片

二、接口自动化项目实战

【性能测试】性能压测TPS上不去原因分析,13年老鸟总结..._第2张图片

三、Web自动化项目实战

【性能测试】性能压测TPS上不去原因分析,13年老鸟总结..._第3张图片

四、App自动化项目实战

【性能测试】性能压测TPS上不去原因分析,13年老鸟总结..._第4张图片

五、一线大厂简历

【性能测试】性能压测TPS上不去原因分析,13年老鸟总结..._第5张图片

六、测试开发DevOps体系

【性能测试】性能压测TPS上不去原因分析,13年老鸟总结..._第6张图片

七、常用自动化测试工具

【性能测试】性能压测TPS上不去原因分析,13年老鸟总结..._第7张图片

八、JMeter性能测试

【性能测试】性能压测TPS上不去原因分析,13年老鸟总结..._第8张图片

九、总结(尾部小惊喜)

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

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

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

你可能感兴趣的:(性能测试,软件测试,测试工程师,软件测试,压力测试,软件测试工程师,性能测试,负载测试,jmeter性能测试,自动化测试)