聊一聊性能测试

news2024/11/16 13:24:24

提到性能测试,很多从业相关人员可能会感觉比较混淆。

性能测试,它是属于测试领域一个专业细分领域,和软件测试一样,性能测试涉及到的范围和所需要的技能是非常广而精的,如果从大的类型来划分的话性能测试可以被分为:

服务端性能测试 | 客户端性能测试 | 全链路性能测试

这三种性能测试它的关注点及关注指标都是不一样的,本系列以服务端性能测试展开,客户端性能测试及全链路性能测试不在此系列说明

什么是服务端性能测试?

那么,什么是服务端性能测试呢?

从大家熟悉的功能测试举例吧!比如测试一个简单登录功能,在只考虑正常流程的情况下无非就是输入正确的账户和密码点击登录,然后跳转到系统首页。

注意,这里的登录是只考虑正常流程的情况下,而在这里功能测试也不是重点。

那么,如何对该登录功能进行性能测试呢?

就是在确保功能测试已经通过的情况下,模拟多个用户同时进行登录,在这过程中监控系统的各项性能指标及服务器硬件资源的使用情况。

看到这里,相信许多人都觉得比较简单。虽然简单,但是这例子已经包含的性能测试的三个基本特点。

  • 功能测试已通过

  • 一定的并发用户

  • 监控各项性能指标与硬件资源使用情况

最后,在明确下什么是性能测试:性能测试是在有性能测试指标的前提下模拟多个用户对系统进行操作(请求),监控系统的各项性能测试指标与服务器资源是否达到我们的一个预期值。

功能测试的测重点是测试功能是否与需求说明书一致,性能测试的测重点是测试系统是否符合我们预期的一个性能指标。各位千万别搞错了哦!

性能测试类型?

根据不同的测试目的,性能测试可以大致分为五种类型,类型如下:

  • 基准测试

  • 负载测试

  • 压力测试

  • 疲劳强度测试

  • 稳定性测试

  • 容量测试

性能测试类型概念?

基准测试:

基准测试是指模拟单个用户执行业务场景,监控系统的性能指标与服务器资源。严格来说,基准测试不属于性能测试的范畴,它与功能测试其实没有太大的区别。具体的差异在于,基准测试的目的更多的是关注业务功能及验证脚本的一个准确性,然后,将基准测试时采集到的结果(各项性能指标及服务器硬件资源)作为后续并发测试性能分析的一个参考依据

负载测试:

**负载测试是模拟系统在正常负载压力场景下,考察系统的各项性能指标**。这里说的正常负载,主要是指用户对系统能承受的最大负载量的期望值。即预计系统最大可用支持的业务并发用户数。**通过负载测试,可以验证系统是否能满足我们预期的一个业务压力场景**。

通常负载测试类型是最典型的性能测试类型。通过负载测试,得到系统的性能拐点(最佳性能点),当达到这个点时,系统的极限与表现能力又是多少!负载测试也经常用于线上流量评估。

压力测试:

压力测试是测试系统在多大并发压力下系统的性能会变得不可接受,或者出现性能拐点(崩溃)。在加压策略上,压力测试会对被测系统逐步加压,在加压的过程中考察系统性能指标的走势情况,最终找出系统在出现性能拐点时的并发用户数,也就是系统支持的最大并发用户数。

压力测试主要用于测试系统或系统某些部分的极限能力。通过一直增加负载,直到应用的部分功能不能正常工作,压力测试的****目的是找到被测系统的容量天花板

看到这里,是不是觉得负载测试和压力测试好像没啥差别。其实还是有很大区别的!

  • 目的不一样。负载测试是验证系统是否满足预期的业务压力场景;而压力测试是找到测试系统的容量天花板。

  • 负载测试是模拟多个用户不同时间段内持续向系统发送请求的,而压力测试是模拟同一时间段内持续不断的向系统发送请求的。

    如果各位还有不同见解的话可以评论区下留言哦!

疲劳强度测试:

疲劳强度测试与负载测试testing觉得挺接近的,都是对系统模拟出系统能承受的最大业务负载量。差异在于,疲劳强度测试的侧重点是系统在长时间运行情况下系统各项性能指标的变化情况。例如:系统在运行24 * 3后,是否会出现事务处理失败、响应时间增长、业务吞吐量降低、CPU/内存资源增长等性能问题。

稳定性测试:

稳定性测试是测试被测系统持续正确运行的周期长度。

看到这里,是不是觉得疲劳强度测试和稳定性测试很像,感觉是一个东西,其实不是的。

稳定性测试是指被测系统被用户正常的使用,能持续多长时间运行而不出现错误。而疲劳强度测试是指被测系统可以支持的最大并发数长时间模拟运行业务,通过资源和性能指标侧面分析系统的稳定性。

说到这,知道了稳定性测试需要花费的大量时间(如上月、上年)。所以大部分情况下,用疲劳强度测试来替代稳定性测试

容量测试:

当系统业务越来越复杂的时候,比如双十一、春节等大促。我们应该怎么评估线上的性能?如何去做合理的扩容?这个时候就需要开展相应的容量测试了。

其实说到这里,通过对比可以发现,不同的性能测试类型,其本质的差异还是体现在了加压策略上,而采用哪种加压策略,就取决于我们性能测试的目的,即希望通过性能测试发现什么问题。本节可以总结出性能测试不同类型的重点在于加压的方式及策略

性能测试指标:

一般来说,性能测试指标从维度上划分的话,主要可以分为两大类,分别是**业务性能指标和系统资源性能指标。**这里贴下百度的答案,具体的小编也有点忘了。

业务性能指标可以直观地反映被测系统的实际性能状况,常见的指标项有:

  • **并发用户数**

  • **事务吞吐率(TPS/RPS)**

  • **事务平均响应时间**

  • **事务成功率**

系统资源性能指标主要是反映整个系统环境的硬件资源的一个使用情况,常见的指标项有:

  • 服务器:

CPU利用率、处理器队列长度、内存利用率、内存交换页面数、磁盘IO状态、网卡带宽使用情况等。

  • 数据库:

数据库连接数、数据库读写响应时长、数据库读写吞吐量等;

  • 网络:

网络吞吐量、网络带宽、网络缓冲池大小;

  • 缓存(Redis):

静态资源缓存命中率、动态数据缓存命中率、缓存吞吐量等;

  • 测试设备(压力发生器):

CPU利用率、处理器队列长度、内存利用率、内存交换页面数、磁盘IO状态、网卡带宽使用情况等。

看到最后一项(测试设备)有些人可能会问了,监控被测系统环境的相关硬件资源使用情况时,为什么还要关注测试设备本身呢?因为测试设备在模拟高并发请求的过程中,测试设备本身也会存在较高的资源消耗,例如CPU、内存、网卡带宽吃满,磁盘IO读写频繁,处理器排队严重等;当出现这类情况后,测试设备本身就出现了瓶颈,无法产生预期的并发压力,从而在测试中得到的数据也就不具有可参考性了。

说到这里,性能测试指标之间通常都是有密切关联的。如果单纯地看某个指标往往很难定位出性能瓶颈,所以需要我们对各项性能指标的含义了然于胸,然后才能在实际测试的过程中对系统性能状况综合进行分析,找出系统真正的瓶颈。

举个例子,在压力测试时发现服务器端CPU利用率非常高,那这个能说明什么问题呢?是服务端系统算法问题呢,还是服务器硬件资源配置跟不上呢?光看这个指标并不能定位出产生问题的根本原因,如果仅因为这一点,就决定直接去优化系统算法或者升级服务器配置,最后也很难真正地去解决问题。

是不是说到这里就明白了,**性能瓶颈定位的重点在于性能测试指标的监控和分析**。

性能测试开展:

前面说了那么多理论,那么实际工作又是怎么开展的呢?结合具体的一个实际情况,小编觉得下面这流程是比较标准的。

  • 了解&获取性能测试需求,确定性能目标

  • 设计及确定测试方案|测试计划

  • 提取测试的业务场景,设计测试用例

  • 构建性能测试环境

  • 编写性能测试脚本和基准测试

  • 执行性能测试和分析

  • 测试结果分析和报告

性能测试工具推荐:

性能测试的主要手段是通过模拟真实业务的压力对被测系统进行加压,同时监控被测系统的各项性能指标,分析被测系统在不同压力情况下的表现,找出其潜在的性能瓶颈。

那么,如何对系统进行加压,又如何对系统的指标进行监控呢?这里,就需要引入性能测试工具了。

当然,我们也可以看下在不借助性能测试工具的情况下,如何手工地对系统进行性能测试。

假设现在我们要对前面提到的登录功能进行负载测试,验证在10个并发用户下登录功能的事务平均响应时间是否在3秒以内。

很自然地,我们想到测试的前提条件有如下几点:

  • 10个测试人员,产生业务压力

  • 1个指挥人员,对10个人员的协调控制,实现并发操作

  • 1个结果记录人员,对每一个人员的操作耗时进行监控和记录

  • 若干资源监控人员,实时查看被测系统的各项性能指标,对指标进行汇总、分析

  • 1个结果统计人员,对10个用户各操作消耗的时长进行汇总,计算其平均值

可以看出,要通过人工来进行性能测试,操作极为繁琐,需要投入的资源非常多。想像一下,如果要测试1000、10000、1000000并发呢?

显然,这种情况下是完全不可能通过投入人力就能解决的。这也就是性能测试工具存在的必要性和诞生的背景。

性能测试工具推荐:

在性能测试工具方面,市面上已经有很多的测试工具可以拿来使用,这里重点给大家推荐 Locust、LoadRunner、Jmeter三款工具,排名不分先后。

从功能特性角度来说,LoadRunner作为一个老牌的性能测试工具,其功能是最全面的,用户群体也是最多的,相应的学习资料也是最丰富的。个人建议如果是刚刚接触性能测试,可以先熟悉LoadRunner,借此来熟悉一些理论上的东西。但是,缺点也是有的,LoadRunner不能跨平台,目前貌似只支持在windows下使用。

因为这工具也没怎么用过,只是了解过,所以在这里不作过多评价。

Jmeter是由Java开发的可在跨平台运行的性能测试工具,除了做性能测试,它也常用于做接口测试。目前市面上大多数的人都在用它来开展性能测试。该款工具的并发机制是基于线程来实现的。有GUI界面操作,也支持命令行调用。功能插件也比较完善,我一般把它用来做接口测试或者接口自动化测试

Jmeter给我的唯一缺点就是灵活度,有点高不成低不就的味道。也可能我没有对Jmeter进行一个系统的学习吧。

**Locust**是由Python开发的一款性能测试库,性能测试过程皆是采用Python脚本描述,并且HTTP请求完全基于Requests库。除了HTTP(S)协议,Locust也可以测试其它任意协议的系统,比如:websocket、Thrift、RPC协议等等,只需要采用Python调用对应的库进行请求描述即可。需要强调的是Locust的并发机制摒弃了进程和线程,采用协程(gevent)机制。

这款工具testing还是比较推荐的,因为去年在实际的性能测试项目实践testing使用的就是这个框架,在灵活度上比LoadRunner及Jmeter高很多。但是缺点也还是有的,比如报表功能太简单,有些数据没有进行收集,使用的人群少,出现问题也只能自己鼓捣等。

资源监控工具推荐:

既然有性能测试工具,也肯定有资源监控工具啦!下面推荐二款用过的。一款是nmon,一款是grafana软件。

nmon是一款帮助收集服务器的各项硬件资源信息的工具。觉得,这款工具在操作上还是有些繁琐的。安装后需要命令行运行,然后在收集信息的同时不能实时监控服务器资源;收集信息完后还需要导出收集结果在去nmon官方的一个可视化工具里处理形成可视化报表。

是不是觉得很麻烦,所以后面一直在找一个可替代的工具。后面就发现了Grafana。

Grafana是一款强大的监控工具,使用Grafana可以自定义自己的监控指标,但是Grafana官方提供了非常多的实用模板,使用官方的模板是一个快速开启监控的好办法哦。比如我监控Linux服务器资源,我可以使用Grafana+Prometheus+Node Exporter进行监控,而且是实时的,也支持报表导出等。如果我想监控Mysql,我可以使用Grafana+mysqld_exporter+Prometheus进行监控。这样监控都在Grafana。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/642510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac本地部署蘑菇个人博客详解

文章目录 一、安装Docker、Docker Compose1、系统要求2、安装Docker3、Docker-Compose 二、docker一键部署博客1、创建网络2、修改前端配置1)自动修改前端配置2)手动修改前端配置 3、开始部署 三、系统测试1、Nacos测试2、swagger测试3、前端页面4、后端…

Python datetime

datetime的作用 Python datetime的模块,用于处理日期和时间 datetime 官网 datetime模块的类如下 datetime 使用的时候需要引入datetime import datetime 下面说下其中的2个datetime 和 date date 类 import datetime # 获取当前日期 t1 datetime.date.today…

Linux基本工具

文章目录 Linux软件包管理器yum关于rzsz安装与卸载示例注意事项 Linux开发工具vimvim基本操作总结插入模式:移动光标快捷键删除文字复制替换撤销上一次操作更改跳至指定的行多文件操作底行模式 sudoLinux编译器gcc/g的使用预处理编译汇编链接生成可执行文件总结详谈…

如何用智能工牌+语音分析技术,从会话数据中,自动化获取客户满意度评价

在企业客户服务过程中,如何获得客户对产品和服务真实、实时、全面的评价,是企业在后续提升客户满意度、洞察客户需求、制定个性化营销策略、提升销售成交率和品牌口碑的 那么传统企业在获取客户评价和提升客户认知这块都是怎么做的呢? 用运营…

【办公类-30-01】(Python)大班毕业证书批量打印(幼儿信息、性别、毕业日期、学校、公章、签名、证书日期)

背景需求 大班毕业在即,需要打印大班幼儿毕业证书。(已有打印好的彩色证书) 常规操作模式: 1,统一盖章,反复签字 200份证书,每张证书上需要盖园所章、园长签字200次 2. 每个班主任自己领取班…

彻底弄懂 JavaScript 异步任务处理原理

目录 1.单线程 什么是单线程? 2.同步和异步 同步 异步 3.事件循环(EventLoop) 1.事件循环的基本概念 2.微任务/宏任务 3.宏任务和微任务的执行顺序 4.常见的面试题 1.单线程 首先我们需要明白JS是单线程的,这是为了降低程序复杂性&#xff0c…

Windows上安装绿色版mysql-8.0.26

以8.0.26为例 1.安装包下载 下载地址:https://dev.mysql.com/downloads/mysql/下载后文件如图所示: 解压压缩包,并修改文件夹名称为mysql: 2.创建配置文件 在E:\mysql(MySQL解压目录)文件夹下&#…

VS Code 实用快捷键

在使用VS Code 开发过程中,熟练使用一些快捷键可以极大的便利我们的开发。所以,本文汇总了一些快捷键,以便想使用时忘记了可以快速查找到。 1. Alt 鼠标点击 在每一个点击的地方添加输入光标 2. Alt Shift 鼠标左键按住拖动 竖列多行选择。…

达梦数据库无法打开图形化界面的解决方法

在安装或使用DM数据库中,我们经常会需要使用图形化界面,但某些情况下,我们可能会打开图形化界面失败。本文分别介绍通过VNC或者VMware连接数据库服务器,和使用Xmanager第三方工具连接服务器打开图形化界面的方法。实验环境的操作系…

【ARM AMBA AXI 入门 6 - AXI3 协议中的锁定访问之AxLOCK信号】

文章目录 1.1 Locked accesses 1.1 Locked accesses 当主机使用 AxLOCK 信号来指示事务是锁定的事务时,互连(Interconnect)必须确保只有该主机可以访问目标从属区域,直到来自同一主机的未锁定事务完成。互连中的仲裁器(arbiter)必须执行此限制。 在主机…

【面试题】前端面试 15 问高频题

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 数组去重 遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素…

Linux安装mysql8

Linux安装mysql8 第一步:解压mysql安装包:tar -xvf mysql-server-8.0.25.tar.gz 第二步:更新文件夹名:mv mysql-server-8.0.25 mysql 第三步:进入mysql文件夹:cd mysql,创建data文件夹&#x…

OM6621PW蓝牙智能指纹锁(附芯片选型)

随着科技的快速发展,智能家居正逐渐成为现代生活的一部分。在智能家居领域,安全始终是人们关注的焦点。传统的机械锁存在被暴力破解、易被复制钥匙等安全隐患,无法满足当今社会对安全性的需求。因此,越来越多的家庭和商业场所开始…

【vue3】12-Vue 3中的Composition Api(二)

Vue3 - composition Api setup中的函数(1)computed函数使用(2)setup获取元素或组件(3)组件的生命周期函数(4)provide/inject函数(了解)(5&#xf…

Java实现PPT转MP4文件

环境要求 必须是Windows电脑&#xff0c;已安装微软Office且已激活。 引入Jar 首先在pom中引入jar包 <dependency><groupId>cc.pptshow</groupId><artifactId>pptshow</artifactId><version>1.3</version> </dependency> …

【2023年计划大纲】2023年技术笔记大纲

2023年技术笔记写作计划 按照技术类型&#xff0c;计划写以下三个领域的笔记&#xff1a; &#xff08;1&#xff09;AUTOSAR标准体系的专业知识&#xff0c;T-BOX,BMS,VCU这几个产品的设计和核心开发。包括UDS协议&#xff0c;XCP协议&#xff0c;OS操作系统。 每一个产品和…

测试工程师常见的面试问题及回答建议

说起软件测试近几年的发展&#xff0c;其实已悄无声息地发生了巨大的变化。前几年随着互联网行业的迅猛发展&#xff0c;软件测试人才稀缺&#xff0c;低门槛高薪资促使大批毕业生和转行人员一窝蜂地涌入。而现在&#xff0c;软件测试发展太快&#xff0c;纵观各大招聘网站&…

Prompt是什么_揭秘Prompt:大模型时代的关键技术与实践应用

文章目录 1 Prompt是什么Prompt的定义和基本概念Prompt的工作原理 2 综合案例案例1&#xff1a;根据内容提取数据生成表格百度&#xff1a;文心一言科大讯飞&#xff1a;讯飞星火 案例2&#xff1a;文生图百度&#xff1a;文心一言科大讯飞&#xff1a;讯飞星火 案例3&#xff…

如何建立一个好的待办事项系统并提高工作效率

如果你有一系列的任务需要完成&#xff0c;你会如何记住它们呢&#xff1f; 最简单的方法当然是将它们记在脑中&#xff0c;但如果任务的数量很多&#xff0c;记忆的细节难免模糊。纸和笔也是一个不错的选择&#xff0c;但纸质的任务清单容易遗失或者损坏。让应用来帮忙当然也…

ubuntu iptables开机自启动

一、配置ubuntu路由转发 用在一台电脑有多个网卡的情形下&#xff0c;一个网卡5网段、一个网卡8网段&#xff0c;8网段是网络出口&#xff0c;所以5网段的设备需要入网的话&#xff0c;要路由转发。 sudo iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -j SNAT --to-sou…