性能测试面试题汇总
稳定性测试的怎么挑选的接口?
1、频繁使用的接口:选择那些被频繁使用的接口,因为这些接口可能会面临更大的负载和并发访问,从而可能导致性能问题。
2、核心功能接口:选择那些实现系统核心功能的接口,因为这些接口的故障可能会导致整.个系統的故障。
3、外部依赖接口:选择那些与外部系统通信的接口,例如第三方 APl数据库、消息队列等等,因为这些接口的稳定性可能对系统整体性能和可用性产生影响。
4、流量高的接口:选择那些通常会有高流量负载的接口进行测试,这些接口可能会在高峰期经历高负载,而测试它们可以验证系统是否能够在高负载情况下正常运行。
5、关键路径接口:选择那些在系统关键路径上的接口,因为这些接口可能会导致系统性能下降或系统故障。
6、据库交互的接口:选择那些与数据库交互的接口进行测试,这些接口会产生数据库负载。测试这些接口可以确保系统能够稳定地处理数据库交互,而不会出现性能问题。
7、消息队列接口:这些接口允许不同的应用程序或模块之问异步地发送消息。在稳定性测试中,需要验证消息队列接口是否能够处理高并发的消息传递请求。
8、长时问运行的接口:这些接口通常需要较长的处理时间,如长时问查询、批量处理等。这些接口可能会在运行期间出现性能问题或故障。
性能测试中常见的指标有哪些?
1、响应时问 (Response Time):从用户发起请求到收到响应的时间,通常以毫秒为单位。这是衡量系统性能的关键指标之一。
2、吞吐量 (Throughput):单位时间内能够处理的请求数量。通常以每秒钟处理的请求数量(TPS) 来衡量。
3、并发用户数(Concurrency):同时处理的用户数,可以用于确定系统在负载压力下的承载能力。
4、CPU使用率 (CPU Utilization):系统中CPU的占用率。
5、内存使用率 (Memory Utilization) :系统中内存的占用率。如果内存使用率过高,可能会导致系统变慢或崩溃。
6、网络延迟 (Network Latency):发送请求和接收响应之问的时间差。这通常是网络速度和响应时间的重要组成部分。
7、错误率(Error Rate) :处理请求时发生错误的百分比。这对于确定系统是否可靠和稳定非常重要。
8、磁盘使用率 (Disk Utilization) :系统磁盘的占用率。
性能测试如何发现并定位到数据库的问题?
以项目是多个微服务+MysQL数据库为例:可以基于promethues+gratana+mysql_exporter监控mysal数据库性能指标,同时使用skywalking 做mysal的链路监控,如果检测到在数据库层面消耗时间过长,可以结合 profiling 工具分析如下性能指标:
1、连接数:同时连接到MySQL服务器的客户端数量。
2、查询数和查询响应时问:MySQL服务器接收到的查询数量和查询响应时间。
3、缓存命中率:查询在查询缓存中找到的百分比。
4、锁定等待时间:等待锁定的时问长度,包括共享锁和排它锁等待的时问。
5、磁盘使用率:MysQL服务器对磁盘进行读取和写入操作的使用率。
6、内存使用率:MySQL服务器使用的系统内存占总内存的百分比。
7、CPU使用率:MySQL服务器使用的CPU占总CPU 使用率的百分比。
8、慢查询数量和响应时间:查询执行时 间超过指定时间阈值的查询数量和响应时间。
9、错误日志:记录 MySQL服务器发生错误的日志,可以通过分析错误日志来了解MySQL服务器的问题。
10、慢查询日志:记录执行时间超过指定时间阈值的查询的日志,可以通过分析慢查询日志来了解MySQL服务器的查询问题。
以上性能指标出现问题都可能导致系统整体性能下降,借助工具进一步定位是SQL问题、锁定阻塞问题还是索引、表设计问题。
如何开展性能测试?
1、进行性能测试需求调研和准备
在进行性能测试之前,需要先了解测试的目标、需求和限制,以确保测试可以精准地反映实际场景。通常需要了解系统的架构、用户数量、交互类型、使用频率等信息。同时,需要组建性能测试团队并选择适合的测试工具和环境。
2、确定性能测试范国、方法和目标确定测试范围可以帮助测试人员集中精力测试关键场景,而不是无脑地测试每个功能。性能测试方法通常包括负载测试、压力测试、容量测试、稳定性测试等。针对每个测试方法,需要设定相应的性能测试目标,例如响应时间、,吞吐量、并发用户数、资源利用率等。
3、构建业务模型
基于实际的业务场景和用户行为,需要构建业务模型,模拟实际用户在系统中的操作。通过分析系统的访问日志,可以了解用户的行为模式、操作频率、访问路径等信息,从而构建出合适的业务模型。
4、编写性能测试方案
性能测试方案是性能测试的核心,它包括了测试的范围、方法、目标、测试场景、测试数据、测试工具、测试计划和执行流程等内容。根据项目的架构和业务特点,编写出详细的性能测试方案。
5、进行前端页面性能监控及分析
使用 Dynatrace Ajax Edition 等工具,可以对系统的前端页面进行性能监控和分析。通过监控页面的加载时问、资源请求、JavaScript执行等关键指标,可以深入了解前端页面的性能表现,并及时发现潜在的性能问题。
6、实施性能测试
基于 Jmeter、Locust、 Loadrunner等性能测试工具,开发性能测试脚本并设计测试场景,设置测试参数和指标监控,执行性能测试,收集测试数据并进行分析。在测试过程中,需要及时记录测试日志,包括测试结果、性能指标、错误信息等。
7、搭建性能监控平台
使用 Docker、Promethues、Grafana、InfluxDB、 Exporter、Skywalking 等开源工具,可以搭建一个完整的性能监控平台。通过对系统各个组件的监控和分析,可以深入了解系统的性能
8、代码瓶颈定位
如果监控到可能是代码级的瓶颈,可以基于JisualVM、Arthas等监控工具进行代码级监控及瓶颈定位。
9、根据要求生成相应的 《性能测试报告及优化方案》。
性能测试压力上不去的原因有哪些?
性能测试压力无法达到预期值的原因可能有多种,以下是一些常见的原因:
1、脚本设计不合理:脚本使用的语言或者逻辑过于复杂导致压力机出现瓶颈,比如数据加密等操作。
2、资源限制:测试环境的资源限制可能导致无法模拟预期的负载。例如,压力机的CPU、内存或网络带宽可能不足以支持生成所需的负载。
3、被测系统本身性能问题:被测系统本身可能存在性能问题,导致性能测试无法达到预期的负载水平。例如,应用程序中存在性能瓶颈,数据库操作不够高效,代码实现存在死循环、内存泄漏等问题等。
4、数据问题:测试数据的大小、分布和内容可能会影响负载测试的结果。测试数据可能过于简单或过于复杂,导致无法模拟真实的负载。
5、测试工具问题:测试工具可能存在问题,…例如无法正确处理多线程、网络延迟等情况,导致无法生成预期的负载。LoadRunner、Jmeter、Locust相同的用户数压力可能就不一样。
6、网络问题:测试环境与实际生产环境之问的网络差异可能会影响性能测试结果。例如,生产环境可能存在更多的网络延迟、丢包和带宽限制。
7、未考虑实际使用场景:性能测试可能未考虑实际使用场景。例如,测试可能过于 专注于单个功能或单个用户,而实际上需要考虑多个用户和复杂的工作流程。
8、测试过程错误:测试过程可能存在错误,例如测试用例不准确、测试数据不充分、测试环境设置不正确等等,导致无法生成预期的负载。
9、数据库或其他第三方服务的性能问题:如果被测系统依赖于其他服务,比如数据库或第三方服务,那么这些服务的性能问题也可能会影响到被测系统的性能测试结果。
性能面试的主要几个考核问题
可以通过下面的问题考核一下:
1、如何判断系统性能是否存在瓶颈?
2、针对容量场景,如何设计业务模型?
3、压力上不去的原因可能有哪些?
4、性能脚本是否加思考时间?
5、一台压力机可以运行多少线程?
6、性能监控方案是什么设计的?
7、怎么定位内存泄露的问题?
8、针对多个微服务项目如何全链路监控?
9、写过性能测试方案?包含哪些内容?
10、如何判断Linux内存不足?