你好,我是山茶,一个95后在职程序员。也是一个目标跟 1000+ 程序员探索出 AI + 测试 + 副业之路的 bro,欢迎跟我一起沟通交流!
一、什么是性能测试?
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
从过去的工作中我所理解的性能测试,是对当前系统进行系统化的全链路方式、单服务方式,模拟用户使用场景,施加压力下,系统的响应情况是否良好、是否会出现无压力情况下未出现的问题,从而避免上线以后出现不可控的性能问题
二、性能测试基础概念
1.响应时间
用户从客户端发送请求到所有的请求都从服务器返回客户所经历的时间。强调数据都返回客户端所花费的时间
那为什么说是所有数据呢?
因为用户体验的响应时间带有主观性,用户可能会认为从提交请求到服务器开始返回数据到客户端的这段时间为响应时间。以一个Web 应用的页面响应 时间为例,如图所示。
从图中可以看到,页面响应时间=网络传输时间+应用延迟时间。其中网络传输时间为(N1+N2+N3+N4),应用延迟时间为(A1+A2+A3),而应用延迟时间又可分解为数据库延迟时间(A2)和Web 服务器延迟时间(A1+A3)。
2.并发用户数
指同一时刻与服务器进行数据交互的所有用户数量。
在工作中,对于并发用户这个概念的理解经常会出现以下两种误区:一是认为系统所有的用户都是并发用户;二是认为所有在线的用户都是并发用户。
3.吞吐量TPS
在性能测试过程中,吞吐量是指单位时间内服务器处理客户请求的数量,吞吐量通常使用请求数/秒来衡量,直接体现服务器的承载能力。
吞吐量作为性能测试过程中主要的指标之一,它与虚拟用户数之间存在一定的联系,当系统没有遇到性能瓶颈时,可以采用下面这个公式来计算
其中,F 表示吞吐量; NVU 表示VU(Virtual User,虚拟用户)的个数; R 表示每个VU 发出的请求数量;T 表示性能测试所用的时间。但是如果系统遇到性能瓶颈,这 个公式就不再适用,吞吐量与VU 之间的关系图如图所示。从图中可以看出,吞吐量在VU 数量增长到一定值时,软件系统出现性能瓶颈,此时吞吐量的值并不再随着VU 数量的增加而增大,而是趋于平衡。
但在实际测试过程中,测试前吞吐量是不知道的,必须通过不断添加虚拟用户来不断地测试,才能找到吞吐量的拐点,即服务器实际吞吐量的值。
备注:
-
看到很多博客或性能测试人员将QPS和TPS混为一谈,个人认为,他们是以测试结果的统计得到该结论的;
-
TPS和QPS都是衡量系统处理能力的重要指标,一般和并发结合起来判断系统的处理能力;
-
QPS是查询,而TPS是事务,事务是查询的入口,也包含其他类型的业务场景,因此QPS应该是TPS的子集
TPS:Transaction Per Second:每秒事务数,指服务器在单位时间内(秒)可以处理的事务数量,一般以request/second为单位; QPS:Query Per Second :每秒查询率,指服务器在单位时间内(秒)处理的查询请求速率;
-
性能拐点
在上面的概念中我们提到了“性能拐点”,那么什么是性能拐点呢?
具体的从以下的图片进行说明;性能拐点:顾名思义,当系统软件达到一定程度的时候,发生了转变及发生了拐弯。
如下图所示,横轴坐标为虚拟用户量,竖轴坐标为响应时间(response time)、tps(Throughput)、资源使用率(Utilization)三条曲线;下图被横竖轴划分为三个区域,第一个区域轻负载区、第二个区域重负载区域,第三个区域则为 塌陷区(用户无法忍受而放弃)
说明:
-
随着并发用户数的增加,在轻负载区,资源使用率逐渐增加、tps相应时间逐渐变大同时相应时间逐渐增加。
-
随着用户数的逐渐增加,到达轻负载与重负载交界点时,tps开始逐渐缓慢增加、资源使用率开始逐渐趋于使用最大,此时为最佳并发用户点。
-
当用户数到达重负载区和塌陷区的临界点时,响应时间陡增、tps陡降,此时交界点为性能拐点。此时为性能最大承受点
-
事务: 性能测试中,事务指的是从端到端,一个完整的操作过程,比如一次登录、一次筛选条件查询,一次支付等
-
思考时间: 思考时间(Think Time)也称为“休眠时间”,是指用户在进行操作时,每个请求之间的时间间隔。对于交互系统来说,用户不可能持续不断地发出请求,一般情况下,用户在向服务端发送一个请求后,会等待一段时间再发送下一个请求。性能测试过程中,为了模拟这个过程而引入思考时间的概念。
-
资源使用率: 资源使用率是指服务器系统不同硬件资源被使用的程度,主要包括CPU 使用率、内存使用率、磁盘使用率、网络等。资源使用率=资源实际使用量/总的可用资源量。资源利用率表现当前服务器资源使用的情况,它是分析服务器出现瓶颈和对服务器进行调优的主要依据,在配置调优测试的过程中,通过比较配置调优前后系统资源的使用率来判断调优的效果
今天我们仅对性能测试及其基础概念了解,接下来将深入学习如何进行性能测试
以上本文完,如果你觉得有用就“点个赞呗👍”
作者简介:
程序员山茶,一个工作5年,并坚持探索测试之路的测试开发工程师。曾混迹于互联网大厂、IOTA行业领航企业、安全行业、大数据行业领航企业,欢迎和我一起沟通交流。