性能测试

1、怎么区分负载测试与压力测试

负载测试:负载测试指的是通过不断增加系统的压力而检测系统在性能饱和时的状态;如:如果一个健康码查询程序原本设计之初的最大并发用户是20万,那我们通过不断增加查询用户数来逼近系统的承载极限,进而来查看此系统的最大饱和状态,以此来对系统做出一些优化。

压力测试:压力测试与负载测试类似,但不同之初在于,压力测试是检测系统在最大饱和状态下的工作性能;如:当一个健康码查询程序已经达到了查询的最大并发用户数,那么测试系统还能否正常工作,还能否正常扫码,是否会出现内存泄漏、超时、堆栈异常,进而来测试系统的稳定性。

2、怎么理解系统稳定性测试

系统的稳定性测试指的是当系统处于高负载状态下长时间运行,此时系统还能否正常的处理业务;如:如果一个购物平台因访问人数太多而负载过高,那么此时系统还能否长时间支持正常的查询、下单以及支付等业务。

3、如果做性能测试过程中,开发要求增加服务器,此时你会?

不同意这种做法,因为性能测试的过程中,测试环境的资源配置与生产环境的资源必须是一致的,如果不一样,那么测试环节也就没有任何意义,毕竟要模拟最真实的情况才有参考的价值。

4、做性能测试需要准备哪些工作,为什么?

(1)测试需求分析以及确定测试目标。

(2)性能测试计划:测试场景执行负责人以及执行的开始结束时间、确定测试环境,准备数据、设计测试场景、用到的测试技术

(3)编写测试脚本:执行验证测试场景以及分析可能会出现的问题

(4)收集数据

(5)测试分析,编写测试报告:查看是否达到原本的性能预期,如果达到就生成测试报告,如果没有,则反馈给开发进行优化性能。

5、性能测试中测试环境和生产环境的配置必须一样嘛?为什么?

必须一样,如果不一样,那么测试的结果也就没有参考性;比如:一个人走着和跑着的速度当然是有很大的区别的,我们需要去模拟最真实的实际情况。

 

面试过程中,性能测试你测什么?关注的点是什么?

程序的响应时间 ,系统的吞吐量,以及并发用户数,和tps,qps,以及DB(数据库)的IOPS,和服务器的系统资源(CPU和内存) 通过一定的工具或者代码的方式,来验证被测试的程序是否满足性能测试的目标,以及验证程序是否会出现OOM(内存泄漏),系统崩溃,系统无响应等情况。

 

工作流程:

1、目标是什么?

2、怎么去做

3、过程中你需要收集数据

4、一定要有结论

 

Kafka:linkedin公司打造的,它主要应用于大数据领域,在数据的实时流要求是非常高的,而且它的性能也是非常好的,但是在数据一致性方面表现很差劲。

RabbitMQ:对数据的一致性要求很高,对性能反而要求没那么高。

 

性能测试模型也可以理解为性能测试步骤,具体汇总为如下:

• 测试前期准备

1、梳理清楚性能测试的目标(参考之前的历史数据,性能的目标由测试主导梳理出来,但是和大家一起沟通决定下来)

2、在目标清楚的基础上,梳理出测试场景,和准备测试数据

3、准备资源(人力和机器资源)

• 测试工具技术引入

1、LoadRunner HP公司研发的工具,主要在工业级的性能测试中具备非常大的优势,它是收费的。

2、JMeter Apache基金会顶级项目,是Java语言100%开发的,它是开源的,在头部互联网公司基本都进行二次开发,应用也是非常广泛的

3、Locust 是Python代码级别的性能测试工具,它是基于协程(微小的线程)

• 性能测试计划

1、具体测试场景执行的负责人,和执行的开始结束时间

2、前置工作内容

3、具体使用到的测试技术

• 测试设计与开发

1、编写测试脚本来执行验证具体的测试场景

• 测试执行与管理,数据收集

1、在脚本编写的基础上执行以及验证测试场景

2、我们在测试的过程中需要收集数据(性能计数器) A、服务器系统资源:CPU和Memory B、DB的资源:IOPS,连接数 C、服务资源:响应时间(最大,最小,平均,中位数(50%),90%,95%,99%),吞吐量,并发数

3、数据收集的思路:把这些数据写到InfluxDB(时序数据库),最后展示在Grafana的平台上

• 测试分析

测试分析:

1、结合收集到的数据分析是否和最初制定的性能测试目标吻合,如果达到了目标,输出性能测试的报告

2、如果没有达到目标,那么开发继续调整,优化,测试继续测试

性能测试过程中,开发说需要添加服务器性能测试才能继续,此时该怎么做?

性能测试的过程中,测试环境的资源配置与生产环境的资源必须是一致的。

 

场景:针对一码通的系统,需要做并发的测试,目标数据是每秒并发15万

1、5万

2、10万

3、15万

4、20万

5、25万

 

JVM监控工具

 

 

验收负载测试

在QA的环境模拟生产运行的业务压力和使用场景组合,测试系统的性能是否满足生产环境的性能诉求。

环境:

1、测试环境(QA)

2、预发布环境(当测试环境没问题,发布至生产环境中出现问题时的解决方法)

3、生产环境(线上)

 

负载测试 在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状态。核心是找到系统的处理极限,为系统调优提供数据,从而达到了解系统性能的容量。

 

压力测试 该方法是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut,OOM,OverStackExpection(堆栈异常)。压力测试的特点:

• 检查系统在处于压力情况下时应用的性能表现

• 等价于负载测试,使系统的资源处于一个瓶颈的状态(建议CPU和内存在75%以上)

• 这种方式一般用于测试系统的稳定性,TimeOut:超时 OOM(Java.lang.Out Of Memory):内存泄露 OverStackExpection:堆栈溢出

 

系统的稳定性:被测系统在系统资源饱和的状态下,依然能够很好的处理系统的业务逻辑。

 

配置测试 被测环境软硬件环境参数的调整,达到最优的分配原则。

 

并发测试 模拟用户的并发访问,测试多用户并发访问同一个应用时是否存在死锁或者其他的问题,并发测试的特点是:

• 发现系统中可能隐藏的并发访问的问题

• 关注系统可能存在的并发问题,如内存泄露,线程锁,资源争用情况

• 使用的测试工具如profiler等

 

可靠性测试 给系统加载一定的业务压力,让应用持续运行一段时间,测试系统在这种条件下是否能稳定运行。

 

被测对象往往是一个服务,服务一般都会提供接口,那么我们直接访问这个接口可以来测试这个服务。

 

posted @   keep97  阅读(408)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示