李凯5.19

性能测试测什么?关注的点是什么?

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

主流的MQ消息队列服务器

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

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

 

性能测试模型也可以理解为性能测试步骤:

测试前期准备工作:

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

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

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

测试工具技术引入:

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

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

  3、Locust 是Python代码级别的性能测试工具,它是基于协程(微小的线程)测试分析(https://locust.io/)

性能测试计划:

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

  2、前置工作内容(准备工作)

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

测试设计与开发:

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

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

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

  2、我们在测试的过程中需要收集数据(性能计数器)

        A、服务器系统资源:CPU和Memory

        B、DB的资源:IOPS,连接数

        C、服务资源:响应时间(最大,最小,平均,中位数(50%),90%,95%,99%),吞吐量,并发数

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

测试分析:

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

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

 
 

性能测试的方法:

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

环境:

  1、测试环境(QA)

  2、预发布环境

  3、生产环境(线上)

负载测试 :

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

压力测试 :

    该方法是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut,OOM,OverStackExpection(堆栈异常)。压力测试的特点: • 检查系统在处于压力情况下时应用的性能表现 • 等价于负载测试,使系统的资源处于一个瓶颈的状态(建议CPU和内存在75%以上) • 这种方式一般用于测试系统的稳定性(系统的稳定性:被测系统在系统资源饱和的状态下,依然能够很好的处理系统的业务逻辑)

(TimeOut:超时 OOM(Java.lang.Out Of Memory):内存泄露 OverStackExpection:堆栈溢出)

配置测试

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

并发测试

    模拟用户的并发访问,测试多用户并发访问同一个应用时是否存在死锁或者其他的问题,并发测试的特点是: • 发现系统中可能隐藏的并发访问的问题 • 关注系统可能存在的并发问题,如内存泄露,线程锁,资源争用情况 • 使用的测试工具如profiler等

可靠性测试

    给系统加载一定的业务压力,让应用持续运行一段时间,测试系统在这种条件下是否能稳定运行。被测对象往往是一个服务,服务一般都会提供接口,那么我们直接访问这个接口可以来测试这个服务。

配置jmeter的环境变量:

1.

 

2.

 

 3.

 

 4.

 

JAVA环境的搭建:

 

 

 

 

 验证:

 

 

 

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

答:负载测试和压力测试所使用的方法大致一致,其目的不同。负载测试是通过持续不断增加压力来观察不同负载下系统的响应时间、吞吐量等性能。而压力测试则是长时间在一定的饱和状态(大量数据)下测试系统存在的问题以及自身的恢复能力等。

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

答:系统资源达到峰值(饱和状态或瓶颈期)下,系统能否正常运行并很好地处理业务。

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

答:不同意增加。因为在性能测试中测试环境的资源配置与生产环境的资源必须是一致的,要增加必须两者一起增加。

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

(1)在历史测试数据的基础上,团队商量沟通梳理并确定本次性能测试的目标;为了得出本次测试的测试方向。

(2)在目标清楚的基础上,梳理测试的场景、准备测试数据;模拟生产环境,为以后的运行提供参考价值。

(3)准备测试所用机器资源以及人力资源。

   若以上三项准备工作未做好,可能使本次测试不能顺利完成,直接导致本次测试结果无效。

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

答:在性能测试中,测试环境和生产环境的配置必须要求一致,这是性能测试的原则之一,加减配置需保持同步。测试环境就是上线前的测试、而生产环境是系统开发的最后一个环节,测试环境都不通过的话,则不能上线,也就是不能发布到生产环境上。若测试环境和生产环境配置不一致,可能会得到错误的测试数据以及结论,所以不能保证该系统可以在生产环境中正常运行。测试结果对生产环境中的运行没有参考价值。

 

 

posted @   重逢Fate  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
点击右上角即可分享
微信分享提示