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

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

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

PR曲线——一个更敏感的性能评估工具

在不均衡数据集的情况下,精确率-召回率(Precision-Recall, PR)曲线是一种非常有用的工具,因为它提供了比传统的ROC曲线更准确的性能评估。以下是PR曲线在不均衡数据情况下的一些作用: 关注少数类:在不均衡数据集中,少数类的样本数量远少于多数类。PR曲线通过关注少数类(通常是正类)的性能来弥补这一点,因为它直接评估模型在识别正类方面的能力。 精确率与召回率的平衡:精确率(Pr

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采