一、性能测试概念
1.为什么程序会有性能问题,性能问题是怎么出现的?
2.性能测试和功能测试的区别是什么?
3.核心性能指标:吞吐量QPS/TPS
4.核心性能指标:并发量
5.核心性能指标:响应时间
1.性能和功能的区别
功能角度:验证程序是否满足功能性需求(有没有功能,能不能用)
性能:多角度分析(做的好不好,性能指标)
2.为什么程序会有性能问题,性能问题是怎么出现的?
任何程序运行都需要资源(CPU、内存、磁盘、网络)
资源不是无限的(程序运行受限,每一个后端请求)
3. 性能指标
用户角度(核心)
(1)响应时间(速度快不快):一次操作的完成时间
响应时间=等待处理时间+处理时间
网页响应:js css json html 页面多个子资源加载累加计算
接口相应:但接口请求>接收响应的完整时长
(2)并发量:人多的时候能不能用
相对并发:某一段时间内向服务器发出请求的并发(业界通常以秒为单位),人的操作是有间隔的。
绝对并发:同一时间点 服务器收到的请求量(有些可能会到毫秒级,一般不用)
成本管理
(1)资源占用率
我们在程序运行过程中,对服务器资源占用:一个用户请求过来需要站多少CPU,多少网络带宽。
运维角度
(1)吞吐量 --一进一出 输入--处理--输出
应用角度--QPS、TPS
QPS:每秒查询率(Query Per Second)
针对查询类请求处理,每秒能处理多少笔 ;select,不涉及数据变更的操作
TPS:每秒处理的事务数(Transaction Per Second)
涉及数据变更的操作 从数据库围观,事务>多个操作
网络角度--字节/S 服务器 带宽
反应程序的处理能力综合体现(吞吐量越大越好)
吞吐量和并发量有什么区别?
定义
- 吞吐量(Throughput):指系统在单位时间内能够处理的请求数量或事务数量,或者在网络设备中,指单位时间内成功地传送数据的数量(以比特、字节等为测量单位)。它常用于评估系统的性能和容量,反映了系统处理请求的总体能力。
- 并发量(Concurrency):指系统能够同时处理的请求数量或事务数量,即在同一时间段内系统可以同时执行的任务数。它描述了系统的并发处理能力和承载能力。
区别
- 关注点不同:
- 吞吐量关注的是系统在单位时间内能够完成的工作量,即处理请求的总体速率。
- 并发量则关注系统在同一时间内能够同时处理的请求数量,即系统的并发处理能力。
- 衡量标准不同:
- 吞吐量通常以每秒完成的请求数(RPS、TPS)或每秒处理的数据量(如比特、字节)来衡量。
- 并发量则直接以同时处理的请求数量或用户数来衡量。
- 影响因素不同:
- 吞吐量受到系统处理能力、资源利用率、算法效率等多种因素的影响。
- 并发量则主要受系统资源(如CPU、内存、数据库连接等)的限制,以及系统架构和并发处理机制的设计。
- 对系统性能的影响:
- 吞吐量的大小直接关系到系统的性能和稳定性,高吞吐量意味着系统能够高效地处理大量请求。
- 并发量过高则可能导致系统资源紧张,进而影响系统的响应时间和稳定性。因此,在设计和测试系统时,需要合理控制并发量,确保系统能够稳定运行。
示例说明
- 假设一个电商网站在高峰时段每秒能够处理1000个订单,那么它的吞吐量就是1000 TPS。这反映了网站处理订单的总体能力。
- 同时,如果网站能够同时处理5000个用户的并发请求,那么它的并发量就是5000。这表示网站在同一时间内能够同时服务这么多用户。
吞吐量>并发量 ==轻松处理
吞吐量<并发量== 系统出问题
吞吐量受并发量影响,当并发量变大时。
二、性能测试核心步骤
1、梳理性能需求
性能测试不能脱离实际需求,不论是测试那种场景,有哪方面的性能需要,我们在执行测试的时候,都会涉及到具体的业务场景。
性能测试范围(首屏速度)--业务场景(APP首屏加载广告,这个广告信息是从后端接口拉取的;例:希望接口平均1.5S加载出来)--性能指标(响应时间)--性能测试用例(1.通过接口测试工具,反复针对这个接口进行多次测试, 取响应时间平均值;2.模拟贴近真实环境的用户数量,并发对这个接口进行测试,取响应平均值)
2、执行测试
性能用例:
(1)使用工具模拟10个用户,并发对接口发起调用(持续2分钟)或者发起1000次调用);判断响应时间是否3秒以内
执行:
(1)工具:loadrunner、Jmeter、python(locust)等
(2)工具选型:能够方便快捷的模拟出性能场景
结果采集:
(1)Jmeter汇总报告
样本:总共发起请求数
平均值、最小值、最大值、偏差值:响应时间ms
异常:样本异常率
吞吐量:Jmeter没有区分TPS/QPS
接受、发送、平均字节:网络
(2)Jmeter查看结果树 一般用于调试阶段,正式压测一般是禁用的
3、性能结果分析
分析性能指标是否达标
- 识别性能瓶颈:
- 通过分析性能数据,识别出导致系统性能下降的关键因素或组件。这些瓶颈可能存在于硬件资源(如CPU、内存、磁盘I/O、网络带宽)、软件架构、数据库查询、第三方服务调用等方面。
- 优化系统性能:
- 基于性能瓶颈的识别,提出并实施针对性的优化策略。这可能包括代码优化、算法改进、数据库索引调整、缓存策略优化、硬件升级等,以提升系统的整体性能和响应速度。
- 确保系统稳定性:
- 评估系统在高负载或并发场景下的稳定性。通过模拟高压力测试场景,观察系统是否会出现崩溃、内存泄漏、响应时间过长等问题,以确保系统能够稳定运行并满足业务需求。
- 满足用户需求:
- 确保系统性能能够满足用户的使用需求。通过性能结果分析,验证系统是否能够在规定的时间内完成用户请求,并保持良好的用户体验。如果系统性能无法满足用户需求,则需要进行相应的优化或升级。
- 支持决策制定:
- 为管理层或决策层提供关于系统性能的客观数据和评估结果,以支持他们在项目规划、预算分配、技术选型等方面的决策。性能结果分析可以作为评估系统健康状况、预测未来需求以及制定长期发展规划的重要依据。
- 持续改进:
- 性能结果分析是一个持续的过程,旨在通过不断地监测、分析和优化来提升系统的性能。通过定期的性能测试和分析,可以发现新的性能问题并及时解决,确保系统始终保持最佳状态。
不达标要做性能优化