面试过程中,性能测试你测什么?关注的点是什么?
程序的响应时间 ,系统的吞吐量,以及并发用户数,和tps,qps,以及DB的IOPS,和服务器的系统资源(CPU和内存) 通过一定的工具或者代码的方式,来验证被测试的程序是否满足性能测试的目标,以及验证程序是否会出现OOM,系统崩溃,系统无响应等情况
性能测试工作流程:
1、目标是什么?
2、怎么去做
3、过程中你需要收集数据
4、一定要有结论
主流的MQ消息队列服务器:
Kafka:linkedin公司打造的,它主要应用于大数据领域,在数据的实时流要求是非常高的,而且它的性能也是非常好的,但是在数据一致性方面表现很差劲。 RabbitMQ:对数据的一致性要求很高,对性能反而要求没那么高
性能测试的模型/流程
性能测试模型也可以理解为性能测试步骤,具体汇总为如下:
• 测试前期准备
1、梳理清楚性能测试的目标(参考之前的历史数据,性能的目标由测试主导梳理出来,但是和大家一起沟通决定下来)
2、在目标清楚的基础上,梳理出测试场景,和准备测试数据
3、准备测试的资源(人力和机器资源)
• 测试工具技术引入
1、LoadRunner HP公司研发的工具,主要在工业级的性能测试中具备非常大的优势,它是收费的。
2、JMeter Apache基金会顶级项目,是Java语言100%开发的,它是开源的,在头部互联网公司基本都进行二次开发,应用也是非常广泛的
3、Locust 是Python代码级别的性能测试工具,它是基于协程(微小的线程)
• 性能测试计划
1、具体测试场景执行的负责人,和执行的开始结束时间
2、前置工作内容
3、具体使用到的测试技术
• 测试设计与开发
编写测试脚本来执行验证具体的测试场景
• 测试执行与管理,数据收集
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监控工具
在控制台输入:jvisualvm
性能测试方法
验收负载测试
在QA的环境模拟生产运行的业务压力和使用场景组合,测试系统的性能是否满足生产环境的性能诉求。
环境: 1、测试环境(QA)
2、预发布环境
3、生产环境(线上)
面试题:测试环境测的没问题,但是每次发布到线上环境就会有问题,怎么解决?
答:增加一个预发布环境
负载测试
在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状态。核心是找到系统的处理极限,为系统调优提供数据,从而达到了解系统性能的容量。
压力测试
该方法是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut,OOM,OverStackExpection(堆栈异常)。压力测试的特点:
• 检查系统在处于压力情况下时应用的性能表现
• 等价于负载测试,使系统的资源处于一个瓶颈的状态(建议CPU和内存在75%以上)
• 这种方式一般用于测试系统的稳定性
TimeOut:超时
OOM(Java.lang.Out Of Memory):内存泄露
OverStackExpection:堆栈溢出
系统的稳定性:被测系统在系统资源饱和的状态下,依然能够很好的处理系统的业务逻辑
配置测试
被测环境软硬件环境参数的调整,达到最优的分配原则。
并发测试
模拟用户的并发访问,测试多用户并发访问同一个应用时是否存在死锁或者其他的问题,并发测试的特点是:
• 发现系统中可能隐藏的并发访问的问题
• 关注系统可能存在的并发问题,如内存泄露,线程锁,资源争用情况
• 使用的测试工具如profiler等
可靠性测试
给系统加载一定的业务压力,让应用持续运行一段时间,测试系统在这种条件下是否能稳定运行。
被测对象往往是一个服务,服务一般都会提供接口,那么我们直接访问这个接口可以来测试这个服务。
故障演练
容灾恢复测试
被测对象往往是一个服务,服务一般都会提供接口,那么我们直接访问这个接口可以来测试这个服务。
jmeter下载网站
https://jmeter.apache.org/download_jmeter.cgi
配置jmeter环境变量
1、打开jmeter的bin目录复制路径
2、打开系统设置,环境变量
3、在系统变量path里面添加jmeter的bin目录
4、打开控制台输入jmeter -v
1、怎么区分负载测试与压力测试
2、怎么理解系统稳定性测试
被测系统在系统资源饱和的状态下,是否依然能够很好的处理系统的业务逻辑,举例西安一码通,在资源饱和状态下,看是否还能够扫码,如果依然能够处理业务,那说明系统的稳定性良好。
3、如果做性能测试过程中,开发要求增加服务器,此时你会?
不同意,性能测试的过程中,测试环境的资源配置与生产环境的资源必须是一致的。如果一定要增,就叫上相关人员把生成环境和测试环境资源配置成统一的。
4、做性能测试需要准备哪些工作,为什么?
1)梳理清楚性能测试的目标(参考之前的历史数据,性能的目标由测试主导梳理出来,但得和大家一起沟通决定)
(2)在目标清楚的基础上,梳理出测试场景和准备测试数据
(3)准备测试的资源(人力和机器资源)
(4)测试工具技术引入,例如LoadRunner,JMeter,Locust
做性能测试需要注意的点是什么?
1.性能测试中测试环境和生产环境的配置必须一样
2.客户端本身的资源也是有限的,到具体一定的值,就不能再扩大每秒并发用户数了 ,这个时候使用分布式的技术来实现。
原文链接:https://www.cnblogs.com/duanshuyuan/p/16289672.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/32584