【测试】揭开性能测试的神秘面纱

2024-05-28 13:08

本文主要是介绍【测试】揭开性能测试的神秘面纱,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 前言
    • 常见性能指标
    • 性能测试步骤
      • 准备阶段
      • 执行阶段
      • 分析阶段
      • 调优阶段
      • 验证阶段
    • 结尾


前言

大家好,我是洋子,相信刚学习软件测试的同学都听说过性能测试、压力测试、负载测试、稳定性测试等等,在日常性能测试工作中,我们不用太关心这四者之间有什么区别,因为压力、负载、以及稳定性测试都是属于性能测试的范畴

谈到性能测试,大家可能会想到Jmeter。网上有很多关于Jmeter的学习资料,但是请大家注意,学会Jmeter并不等于掌握了性能测试,Jmeter只是一个测试工具,用来辅助我们执行性能测试,除了Jmeter我们也可以选择其他的工具来执行性能测试。本篇文章不是一篇Jmeter的教程,而是带你了解性能测试完整的工作流程

常见性能指标

在学习性能测试之前,我们需要了解常见的性能相关数据指标。性能测试的对象可以分为服务端客户端

对服务端接口进行性能测试,我们通常会关注如下数据指标

  • 可用性:系统在面对异常时可以提供正常服务的能力
  • QPS(Queries-per-second,每秒查询率):QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准
  • 平响(平均响应时间):所有请求平均耗费的时间
  • 并发数:并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。并发数=QPS*平均响应时间
  • PV(Page View):即页面浏览量或点击量,用户每次对网站的访问均被记录,用户对同一页面的多次访问,访问量累计
  • 错误码:接口返回结果的HTTP状态码
  • 吞吐率:单位时间内服务器处理的请求数来描述其并发处理能力
  • 实例存活度:对多个机房实例同时进行性能测试后,实例正常运作的数量
  • 业务关键指标:根据自己业务设定的性能数据指标

而对APP客户端进行性能测试时,关注的指标如下:

  • 内存
  • CPU
  • 网络流量
  • 电量
  • 启动速度
  • 滑动速度、界面切换速度
  • 与服务器交互的网络速度

性能测试步骤

在实际工作当中进行性能测试,一般有如下五个步骤:

  • 准备
  • 执行
  • 分析
  • 调优
  • 验证

下面我以服务端性能测试为例,讲解各阶段该怎么做

准备阶段

需要深入了解性能问题对象并对性能问题进行粗略评估,还需要了解服务的整体架构、对应的服务器信息,对系统应用的熟悉程度,在很大程度上决定了是否能更快的发现问题,比如需要梳理压测接口及接口的依赖下游,准备压测环境,redis缓存的填充,准备接口入参(线上引流或数据构造),监控指标的配置,熔断方案

跟产品经理以及开发沟通本次性能测试的方案,包括确定被测系统、要进行压测的接口,确定本次压测的接口的最高QPS,制定应急预案,确保执行测试出现异常时,有人及时跟进处理

性能测试方案制定完成后,还需要准备监控平台,用于监控当前测试的状态以及各项性能指标

编写压测脚本用于批量发送压测的接口请求,也可以使用Jmeter 这样的测试工具,在成熟的公司里面,一般会有通用的压测平台,配置压测任务即可进行性能测试

执行阶段

在执行性能测试时,若某个接口需要压1000 QPS。我们不会让它立马上涨到 1000,而是设置100 QPS为初始值,增长的步长也为100。因为我们一般是直接对线上环境的接口进行压测,这样做能保证线上服务不受影响,否则一下子提到很高的QPS,服务器可能会压崩溃
在这里插入图片描述

分析阶段

达到预期的QPS以后,我们就可以停止压测,进行数据分析。通过分析准备阶段新增的监控进行收集问题信息,包括系统/业务监控报警,关联系统故障追溯;

此时还可以通过通过性能分析工具对问题进行初步定位

下面几张截图是监控平台上的指标趋势,下图为可用性,可以看到可用性基本是维持在98%-100%
在这里插入图片描述
下图为平均响应时间,基本是在100 ms
在这里插入图片描述

下图为PV,有时候还会采集PV lost数据指标,PV lost是对服务器日志中的status为500状态码的日志做采集
在这里插入图片描述
错误码,正常接口返回错误码是200,下图当中有少量499、404、504的错误码
在这里插入图片描述

调优阶段

当我们在性能测试的指标发现异常后,就需要与开发配合,让开发优化代码修复性能问题

根据定位到的瓶颈点针对性解决,包括应用性能调优,系统部署优化

性能测试发现的常见问题有接口读取数据超时,优化方式一般是优化SQL查询语句、修改索引,或者增加 Redis 缓存直接从缓存读取数据等等

验证阶段

在优化代码完成后,再次进行性能测试,与准备阶段的指标进行对比,观察数据指标是否正常,若已经达到预期效果则可以发送性能测试报告,完成本次压测

结尾

以上就是一个较简单的,完整的性能测试过程,当然其中很有很多值得分析和探讨的内容,大家可以留言一起探讨,看到一张整理得比较好的思维导图送给大家。如果你觉得对你有帮助,麻烦点一个【赞】和【在看】
请添加图片描述
图片来源:https://blog.csdn.net/wangfulong666/article/details/90177729

这篇关于【测试】揭开性能测试的神秘面纱的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010649

相关文章

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Java慢查询排查与性能调优完整实战指南

《Java慢查询排查与性能调优完整实战指南》Java调优是一个广泛的话题,它涵盖了代码优化、内存管理、并发处理等多个方面,:本文主要介绍Java慢查询排查与性能调优的相关资料,文中通过代码介绍的非... 目录1. 事故全景:从告警到定位1.1 事故时间线1.2 关键指标异常1.3 排查工具链2. 深度剖析:

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb