软件测试——性能测试

什么是性能测试?

性能测试和功能测试都是在系统测试阶段进行,那么这两者有什么区别呢?

以购物软件为例:

1)购物过程中页面突然无法打开,刷新后可以重新打开

2)双十一期间无法进⼊商品页面

3)页面加载时间过长,需要消耗用户大量的等待时间

常见的性能问题:

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

常见性能测试指标

并发数

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

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

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

吞吐量

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

响应时间

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

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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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 = 100000 * 0.8 / 24*60*60*0.2 = 4.6

  1. 如果有详细的数据:5万笔交易在晚上的8~9点完成的

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

  • QPS:每秒查询率
  • 若⼀个事务中只有⼀个接口且是查询接口,则QPS = TPS;

事务

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

资源利用率

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

  • 服务器:CPU、内存、磁盘、网络等

  • 主要由运维负责

性能测试⼈员工作重点在于性能测试场景的设计、脚本的开发和执⾏,以及性能缺陷的排查和定位。测试⼈员除了具有及其宽⼴的知识⾯,如系统架构,存储架构,⽹络架构等全局的知识,还要有⼤量知识积累,⽐如数据库SQL语句的执⾏计划调优、JVM垃圾回收、多线程常⽤问题等。

性能测试分类

基准测试

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

并发测试

并发测试(Concurrency Testing)⽤于评估被测系统的某些特定操作同时发⽣时的性能表现,例如,被测系统被多个用户同时登录时的响应能⼒,或系统的某⼀功能被多个用户同时操作时的性能表现。通过并发测试,不仅可以获得被测系统在多用户并发操作时的性能指标,还可以发现被测系统在并发条件下可能发⽣的问题,如内存泄漏、线程锁、资源争⽤问题。

负载测试

负载测试(Load Testing)是性能测试的⼀种测试类型,⽤于评估被测系统在预期的不同负载下的⾏为。

通过负载测试可以获取系统能够达到的峰值指标

例如,⼀个软件系统的响应时间要求不超过2秒,如果在这个前提下不断增加用户访问量,系统的响应时间就会变⻓。假设当访问量超过1万⼈时系统的响应时间超过2秒,那么就可以确定在系统响应时间不超过2秒的前提下,系统的最⼤负载量是1万⼈。负载测试可⽤于系统的性能验证、性能诊断和性能调优等场景。

压力测试

压⼒测试(Stress Testing)⽤于评估被测系统在⾼于预期、⾼于指定容量负载需求或低于最少需求资源的条件下的⾏为。

压力测试和负载测试的区别?

压力测试与负载测试不同。负载测试是在保持性能指标要求的前提下测试系统能够承受的最⼤负载,⽽压⼒测试则是测试系统性能达到极限的状态。例如,软件系统要求的响应时间为2秒。进⾏负载测试时发现,当访问量达到1万时,系统响应时间不超过2秒,⽽当访问量超过1万时,系统响应时间则会超过2秒,那么,在满⾜系统响应时间指标的前提下,该系统能够承受的最⼤访问量是1万。进⾏压⼒测试时,则可继续增加系统的访问量,并观察系统的性能变化。例如,当系统访问量增加到2万时,发现系统响应时间延迟到5秒,⽽当访问量增加到3万时,系统则崩溃,⽆法做出响应。由此可以确定系统能达到的极限访问量是3万

稳定性测试

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值