【软件测试】11.性能测试概念

目录

1.什么是性能测试?

2.常见性能测试指标

2.1并发数

2.2吞吐量

2.2.1 事务

2.2.2 TPS和QPS

2.3 响应时间

2.4资源利用率

3.性能测试关注点

4.性能测试分类

4.1 基准测试

4.2 并发测试

4.3 负载测试

4.4 压力测试

4.5 稳定性测试


能够对个人编写的代码进行性能测试以及性能调优。

1.什么是性能测试?

为了发现系统性能问题或获取系统性能相关指标而进行的测试。

一般在真实环境、特定负载条件下,通过工具模拟时机软件系统的运行及操作,同时监控性能各项指标,最后对测试结果进行分析来确定系统的性能情况。

常见的性能问题:

查询数据时间过长,网速很慢,服务器无响应,查询数据很长时间才显示列表。

2.常见性能测试指标

2.1并发数

并发用户数

从业务层面看,并发用户数指的是实际使用系统的用户总数。

从后端服务器层面看,指的是web服务器在一段时间内处理浏览器请求而建立的http连接数或生成的处理线程数。

例如:一个已经投入运行的web系统,有5000名员工使用,最多同时有2500人使用,用户分别进行浏览页面、填写订单、提交订单、查询订单的操作。那么这个系统的业务并发用户用户数是2500,实际并发用户数是提交订单和查询订单操作的用户。

2.2吞吐量

单位时间内处理的并发数,直接体现软件系统负载承受能力。吞吐量越高,系统承受的并发越多,性能越好。

例如:

有AB两种场景。

A场景,有100个并发用户,每个用户每隔一秒发出一请求。

B场景,有1000个并发用户,每个用户每隔10秒发送一个请求。

A和B场景的吞吐量相同都是每秒100个请求。但是A场景思考时间短,所以A场景占用的系统资源更多。

2.2.1 事务

一个接口可以是一个事务,多个接口也可以是事务,一个流程可以是事务,事务代表一个完整的功能。

2.2.2 TPS和QPS

TPS:每秒处理事务数,用于衡量系统在一定时间内能够处理的是事务数

计算公式:总的事务数/总的运行时间

例1:某一系统1分钟处理1000个业务,那么TPS=1000/60=16.7

例2:2022年最高的一天有10万笔交易,预测2023年TPS多少合格?认为每笔交易就是一个事物,理论TPS=100000/24*60*60=1.2(理想状态),然而实际上订单量会在某段时间内突然增加并不是平均到每个时间段内,因此

(1)没用更详细的数据:根据二八定律(80%的事务在20%的时间内完成)

TPS = 10000*0.8/24*60*60*0.2=4.6

(2)如果有更详细的数据:5万笔交易在晚上的8~9点完成的

TPS=50000/60*60=13.9(实际还要参考往年业务的增长,假设每年业务增长30%,则TPS=50000+50000*0.3/60*60=18)

QPS:每秒查询率

若一个事务中只有一个接口且是查询接口,则QPS=TPS

2.3 响应时间

应用系统从请求出发开始,到客户端接受到最后一个字节数据所消耗的时间。

对于Web系统而言,系统响应时间包含前端展现时间和系统响应时间。

前端展现时间:页面渲染时间。

系统响应时间:包含服务器、数据库、通讯网络等相应时间。

并发用户、系统吞吐量、系统相应时间之间的关系:

当并发用户较少,系统吞吐量低,系统响应时间较短,我们认为系统处于空闲区间。随着系统并发用户增加,系统吞吐量呈线性增长,系统性能进入了线性增长区间。

吞吐量在某个点上达到了饱和点,也称之为拐点。在这之后用户请求不再被立即处理,响应时间随之变长,吞吐量也逐渐降低,系统性能进入了过饱和区间。

系统性能的拐点通常是性能测试的主要目的。

2.4资源利用率

通过查看系统占用的情况分析资源瓶颈。

服务器:CPU、内存、硬盘、网络等。

3.性能测试关注点

不同的角色看待性能测试的侧重点不同。

从客户端发起一个请求到客户端收到请求的整个过程,各阶段痘坑存在性能问题。

后端处理请求的性能问题

服务器硬件资源(CPU、内存、磁盘)

中间件、网络、数据库、架构设计等是否存在瓶颈。

开发人员和测试人员并不需要关注全流程的性能问题。通过分析不同角色的侧重带你,从而促进性能测试更好的发展。和软件系统性能相关的角色有四种。

1.终端用户

对于终端用户来说,表现为用户进行业务操作时的主观影响时间。用户重点关注从你提交请求到收到响应的时间,包括系统响应时间和前端展现时间。

2.系统运维人员

系统运维人员除了关注个人请求的响应时间,更关注大量用户并发访问时对系统的影响,以及更大负载情况下的系统健康状态。从而执行系统的整体的策略。

1.关注全局利益最大化,对最大并发用户数和系统响应时间进行权衡取舍。

2.系统并发处理时间、系统容量、数据库调优、以及时间运行稳定性和可扩展性。

例如:当有以下两种方案时

A方案:100万并发访问用户,登录响应时间3秒。

B方案:500万并发访问用户,登录响应时间8秒。

这种情况下运维人员往往更倾向于第二种。

3.软件设计开发人员

关注算法设计,架构设计,性能最佳实践,数据库相关,软件性能的可测试性等方面。

4.性能测试人员

工作重点在于性能测试场景设计、脚本的开发和执行,以及性能缺陷的排查和定位。

测试人员除了具有及其宽广的知识面,如系统架构,网络架构等全局的知识,还要有大量知识积累,比如数据库SQL语句的执行计划调优,JVM垃圾回收,多线程常用问题。

4.性能测试分类

4.1 基准测试

基准测试又称单用户测试,主要用于监测被测系统在较低压力下的运行状态并记录相关数据。当性能测试环境确定以后,通常选取业务模型中的重要业务做基准测试,对被测系统施加一定压力,从而获取被测系统在单用户运行情况下的各项性能指标,为多用户并发测试和混合场景测试等提供参考依据。

4.2 并发测试

并发测试用于评估被测系统的某些特定操作同时发生时的性能表现,例如,被测系统被多个用户同时登录时的响应能力,或系统的某一功能被多个由用户同时操作时的性能表现。通过并发测试,不仅可以获得被测系统在多用户并发操作时的性能指标,还可以发现被测陈希同在并发条件下可能发生的问题,如内存泄漏、线程锁、资源争用问题。几乎所有的性能测试都会设计一些并发测试。但并发测试对并发时间要求比较苛刻,通常需借助专门的性能测试工具,采用多线程和多线程的方式来模拟用户的并发行操作。

4.3 负载测试

负载测试是性能测试的一种测试类型,用于评估被测系统在预期的不同负载下的行为。负载测试关注系统处理不同负载的能力,这些负载可通过控制并发用户或者进程的数量来实现。进行负载测试时,通过对系统不断增加并发访问负载,监测系统性能的变化,直到系统的某项或多项性能指标达到安全临界值,最终确定满足该安全临界值的性能指标下,系统所能承受的最大负载量。简而言之,负载测试时通过逐步加载的方式来确定系统的处理能力。负载测试类似于举重运动,通过不断给运动员增加重量,确定运动员在其身体状况保持正常的情况下所能举起的最大重量,通过负载测试可以获取系统所能达到的峰值指标。

负载测试可用于系统的性能验证、性能诊断和性能调优等场景。

4.4 压力测试

压力测试用于评估被测系统再高于预期、高于指定容量负载需求或低于最少需求资源的条件下的行为。压力测试关注被测系统处理超出预期或特定峰值负载的能力,也可以用于评估系统在资源匮乏时的处理能力,比如在可用的计算能力,带宽和内存不足的条件下系统的表现。进行压力测试时通常采用逐步增加系统负载的方式,使系统某些资源达到饱和甚至失效,从而发现那些只有在高负载条件下才会出现的缺陷,如同步问题、内存泄漏等,通过对被测系统进行压力测试,也能找到被测系统的性能拐点,获得系统所能提供的最大服务级别,评估系统在峰值负载或超过最大负载情况下的处理能力。压力测试主要用于性能诊断、性能调优和容量规划等场景。

4.5 稳定性测试

在负载测试的基础上,执行较长时间的测试以检查系统的稳定性。通常较长时间指3*24小时以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值