关于性能测试需要知道的

news2024/10/6 16:23:37

随着各企业的业务发展、用户量以及数据量的不断增加,系统承载的压力也会随之增加,服务系统的性能好坏又严重影响企业的利益。因此,性能测试重要性与需求越来越强烈。

常见的性能测试目的

性能测试是确定系统在特定工作负载下的稳定性和响应能力。在进行性能测试之前,首先是要明确性能测试的目的,目的不同,对应的解决方案会有很大差异,最常见的性能测试目的(或契机)有三种:

性能测试的三种目的

  • 评测当前系统性能
    通过性能测试了解系统当前的性能是否达到预期。例如:新系统上线前、技术升级后,都会进行性能测试,确保系统在线上稳定可靠地运行。
  • 寻找瓶颈,优化性能
    系统已知有性能问题,进行测试寻找瓶颈,以便优化其性能。例如:用户提出业务操作响应时间长,需要定位问题,调整性能;系统运行一段时间后,速度变慢,寻找瓶颈,进而优化
  • 预测系统未来的性能、可扩展性
    通过性能测试预测系统在未来达到一定负载量的情况下,系统的性能表现。为的是提前预防并降低风险。扩展能力非常好的系统,性能是随资源扩展呈线性或接近线性提升。

性能测试的不同类型

性能测试的不同类型

  • 基准测试
    基准测试:系统较低压力时,查看系统的运行状况并记录相关数作为基础参考。

  • 负载测试
    负载测试是通过逐渐增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统能承受的最大负载量的测试。目标:确定系统的性能容量(如系统在保证一定响应时间情况下能够允许多少并发用户的访问),系统各项指标,如吞吐量、响应时间、CPU负载、内存使用等如何决定系统的性能。

  • 压力测试
    压力测试通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。目标:压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。

  • 并发性能测试
    负载测试和压力测试通常被合称为并发性能测试。即大并发场景下的系统性能,多用户同时访问时,检测系统是否能够稳定运行。

      平均并发用户数C=nL/T
      
      n:平均每天访问用户数(login session的数量);
    
      L:一天内用户从登录到退出的平均时间(login session的平均长度);
    
      T:考察的时间段长度(一天内多长时间有用户使用系统);
    
      并发用户数峰值:C'≈C+3*根号C
    
  • 大数据量测试
    大数据量测试包括独立的数据量测试和综合数据量测试。独立的数据量测试指针对某些系统存储、传输、统计、查询等业务进行的大数据量测试。综合数据量测试指系统在具备一定数据量时,在负载压力测试下,考察业务是否能够正常运行的测试。目标:测试数据量较大时系统的性能状况。

  • 容量测试
    容量测试的目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数),系统在其极限状态下没有出现任何软件故障且能正常运行。

  • 配置测试
    通过对被测系统软硬环境的调整,了解各种不同环境对系统性能的影响程度,从而找到系统各项资源的最优分配原则。

  • 稳定性测试
    稳定性是通过给系统加载一定的压力,让系统持续运行一段时间(通常为7x24小时),检测系统是否能够稳定运行。稳定性测试也称为疲劳强度测试,属于可靠性测试的范畴。目标:测试系统长时间无故障稳定运行的能力

  • 失效恢复测试
    失效恢复测试是针对有冗余备份或负载均衡的系统来说,检验如果系统局部发生故障,系统灾备措施是否可以正常启动,用户是否可以继续使用。(如:集群、热备等) 目标:通过实施失效恢复测试,评估系统的健壮性和可恢复性。

在实际项目当中,可根据不同的性能测试目的,选相对应的性能测试方式。

性能测试的监控指标

在进行各类性能测试时,需要同步检测系统各项性能指标,从而分析系统的实际的响应能力与稳定性等。常用的性能监测指标有四类:业务性能指标、资源性能指标、中间件监测指标、数据库监测指标。

四种性能监测指标

业务性能指标

  • 每秒交易数(TPS):每秒钟系统能够处理的交易或事务的数量
  • 响应时间:从请求端发起请求开始,到请求端接收到服务器端的返回结束,这个过程所耗费的时间。
  • 并发用户数:指系统可以同时承载的正常使用系统功能的用户的数量,即在给定的时间段内正在使用系统的用户数。
  • 在线用户数:没有提交请求,会话状态在线的用户数。
  • 吞吐量:指系统在单位时间内处理请求的数量。即在给定时间段内系统完成的交易数量。

响应时间行业标准

  • 互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。
  • 金融企业:1秒以下为佳,部分复杂业务3秒以下。
  • 保险企业:3秒以下为佳。
  • 制造业:5秒以下为佳。
  • 时间窗口:不同数据量结果是不一样的,大数据量的情况下,2小时内完成。

TPS行业标准

  • 互联网企业:500毫秒以下,如某宝业务10毫秒左右。
  • 金融行业:1000TPS~50000TPS,不包括互联网化的活动
  • 保险行业:100TPS~100000TPS,不包括互联网化的活动
  • 制造行业:10TPS~5000TPS
  • 互联网电子商务:10000TPS~1000000TPS
  • 互联网中型网站:1000TPS~50000TPS
  • 互联网小型网站: 500TPS~10000TPS

资源性能

  • CPU指标:主要指的CPU使用率、利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。一般情况下,CPU使用率、利用率要低于警戒值范围75%。
  • 内存/SWAP:内存利用率100%并不代表内存有瓶颈,衡量系统内有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。
  • 磁盘吞吐量:磁盘吞吐量是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。磁盘繁忙率,磁盘队列数,平均服务时间,平均等待时间,空间利用率。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的重要依据,一般情况下,磁盘繁忙率要低于70%。
  • 网络吞吐量:网络吞吐量是指在无网络故障的情况下单位时间内通过的网络的数据数量。一般情况下不能超过设备或链路最大传输能力的70%。

资源性能(CPU、内存、磁盘)行业标准:

  • CPU 利用率要低于业界警戒值范围之内,即小于或者等于75%;
  • CPU sys%小于或者等于30%;
  • CPU wait%小于或者等于5%
  • SWAP交换空间利用率低于70%
  • 磁盘繁忙率低于70%
  • 网络吞吐不能超过最大传输能力70%

中间件指标

中间件监测指标主要包括JVM、线程池、JDBC连接池,常用的中间件如:Tomcat、Weblogic等。

中间件监控内容及行业标准:

  • 线程数最小设置50和最大设置200比较合适。
  • JDBC最小设置50和最大设置200比较合适。
  • JVM最小堆大小和最大堆大小分别设置1024M比较合适。

数据库性能指标

  • SQL:执行SQL耗时
  • 吞吐量:每秒事务次数(TPS),每秒查询次数(QPS)
  • 锁:锁等待次数和锁等待时间
  • 命中率:索引缓冲区命中率、线程缓存命中率、表缓存命中率、查询缓存命中率等。

数据库监控内容及行业标准:

  • SQL耗时越小越好,一般情况下微秒级别。
  • 命中率越高越好,一般情况下不能低于95%。
  • 锁等待次数越低越好,等待时间越短越好。

操作系统内核参数主要包括信号量、进程、文件句柄。

性能测试流程

首先要制定测试计划,明确目的、策略等。以测试计划为依据,逐步开展性能测试工作。

性能测试流程

明确性能测试目标

确定本次性能测试的目标,包括性能测试对象、需求范围,以及性能指标达标要求,即测试退出条件。

制定性能测试计划

确定了测试对象和测试需求之后,需要制定一份性能测试计划,指导性能测试工作的进行。包括:简介、测试环境、测试场景、测试数据、测试策略、测试时间与人员安排。

  • 测试环境
    描述性能测试环境的物理架构。

  • 测试场景
    针对各业务功能模块,设计不同测试类型(稳定性测试、负载测试、压力测试)等的单场景、组合场景测试。

  • 测试数据
    描述各性能测试场景下的数据量要求,加压多大数据量需要提前与业务侧对齐目标,系统现存数据体量以及每年增长幅度也可以通过与业务人员(产品经理)确定,当然也可以一些经验方法或公式来估算。比如:有并发用户数与峰值公式,以及二八原理估算方法。
    【并发用户数公式】:C = nL/T。C:平均的并发用户数;n:平均每天访问用户数(login session的数量);L:一天内用户从登录到退出的平均时间(login session的平均长度);T:考察的时间段长度(一天内多长时间有用户使用系统);
    【并发用户数峰值公式】:C’≈C+3*根号C。其中:C:公式1中的平均并发用户数;
    【二八原理估算测试强度】:每个工作日中80%的业务在20%的时间内完成。例如:每年业务集中在8个月,每个月20个工作日,每个工作日8小时,即每天80%的业务的在1.6小时完成。去年全年处理业务约100万笔,其中15%的业务处理中每笔业务需对应用服务器提交7次请求;其中70%的业务处理中每笔业务需对服务器提交5次请求;其余15%的业务处理中每笔业务需对应用服务器提交3次请求。(根据以往统计结果,每年的业务增量为15%,考虑到今后3年业务发展的需要,测试需按现有业务量的两倍进行。)

  • 性能测试策略
    描述性能测试方法和流程与工具等。需要进行哪几种类型的测试。

  • 测试时间与人员安排
    描述参与性能测试的人员,以及性能测试时间计划。

执行性能测试

依据性能测试计划进行实施测试,准备测试环境、构造测试数据 、执行测试用例 、记录测试结果。在此过程中,如发现性能问题,提交Bug,修正Bug。

性能测试报告

完成性能测试之后,编写性能测试报告,整理总结本次性能测试的背景、目的、测试范围、测试指标需求、测试环境与工具、测试内容、测试结果与分析等。

其中测试结果与分析主要是罗列测试指标结果数据及图表,并且对测试的结果及发现的性能问题进行总结、分析。性能测试报告样例参见下图:

性能测试工具

为了更高效的进行性能测试,选用适合的测试工具非常关键,下面列举了一些常用的性能测试工具供参考。

常用的性能测试工具


文/Thoughtworks 李春辉
原文链接:性能测试指南

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

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

相关文章

JAVA 基础语法——(HelloWorld案例编写,Notepad软件的安装和使用,注释,关键字,常量,变量,计算机存储单元,数据类型,标识符,类型转换)

目录 HelloWorld案例的编写 Notepad软件的安装和使用 注释 关键字 常量 变量 计算机存储单元 数据类型概述 标识符 类型转换 HelloWorld案例的编写 首先定义一个类——–public class 类名在类定义后加上一对大括号 {}在大括号中间添加一个主(main)方法/函数——–publi…

详解Curl各参数的含义

详解Curl各参数的含义1. Introduction2. Detail2.1 参数-k2.2 参数-X2.3 参数-x2.4 参数-w %{http_code}2.5 参数-d2.6 参数-H2.7 参数-F2.8 参数-O2.9 参数-o2.10 参数-u2.11 参数-b2.12 参数-G3. Awakening1. Introduction [rootnolan ~]# curl -h Usage: curl [options...]…

如何快速部署一款小程序

小程序现在大家都不陌生,微信,qq,抖音,支付宝等等都有小程序,今天给的大家带有通用的小程序,如何快速部署两种方式:自己纯手工开发,或者找别人开发不管哪种方式,今天我带…

【数据结构与算法】选择排序

文章目录选择排序什么是选择排序?选择排序实例分析算法分析代码部分选择排序 什么是选择排序? 选择排序是一种简单直观的排序算法。 它的工作原理是:每一轮从待排序列中选取一个值最小的元素,将它和当前序列的第一个元素互换。 可…

【GD32F427开发板试用】4. ADC采集摇杆模块移动量

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:hehung 之前发帖 【GD32F427开发板试用】1. 串口实现scanf输入控制LED 【GD32F427开发板试用】2. RT-Thread标准版移植 【GD32F427开发板试用…

vue利用provide和inject做套娃组件设计

provide和inject原来用的不多,只是见人引用axios的时候在main.js里使用provide来注入 app.provide(axios, axios) 这样,在所有的vue文件里都可以使用inject来获取这个注入的axios const axios inject("axios"); 这种利用provide和inject做…

(考研湖科大教书匠计算机网络)第一章概述-第五节3:计算机网络体系结构之相关专业术语

文章目录一:实体二:协议三:服务四:协议数据单元本节对应视频 【计算机网络微课堂(有字幕无背景音乐版)】:1.6 计算机网络体系结构(4)—专用术语 注意:本节内容…

2023MyBatis精选面试题2(8道)

一. MyBatis的框架架构设计是怎么样的这张图从上往下看。MyBatis的初始化,会从mybatis-config.xml配置文件,解析构造成Configuration这个类,就是图中的红框。1. 加载配置:配置来源于两个地方,一处是配置文件&#xff0…

【阅读笔记】《重构》 第一二章

第一章 重构,第一个案例 编译器不会在乎代码好不好看,都是正常运行的。但人在乎,差劲的系统很难修改,因为很难找到修改点,导致程序员很有可能犯错,从而引入bug 重构的第一步 得为即将修改的代码建立一组…

自动化测试Selenium【基础篇一】

自动化测试Selenium【基础篇一】🍎一.什么是自动化测试🍒1.1 自动化测试介绍🍒1.2 单元测试🍒1.3 接口自动化🍒1.4 UI自动化🍒1.5 为什么选择selenium作为我们的web自动化工具?🍒1.6什么是驱动…

DaVinci:限定器 - RGB

调色页面:限定器Color:Qualifier限定器 - RGB Qualifier - RGB根据像素的三原色通道(红、绿、蓝)的值来选择画面上的对应区域,从而限制节点调色的范围。限定器 - RGB 根据指定的各个原色通道的色阶范围来选择连续的近似…

Java 对象处理流(ObjectOutputStream\ObjectInputStream)

文章目录前言什么是对象流?基本介绍ObjectOutputStreamObjectInputStream对象处理流的使用细节前言 处理流:是对一个已存在的流进行处理和封装,通过所封装的流的功能调用实现对数据的操作。而处理流中也有不同的分类,此片介绍的是…

C规范编辑笔记(十一)

往期文章: C规范编辑笔记(一) C规范编辑笔记(二) C规范编辑笔记(三) C规范编辑笔记(四) C规范编辑笔记(五) C规范编辑笔记(六) C规范编辑笔记(七) C规范编辑笔记(八) C规范编辑笔记(九) C规则编辑笔记(十) 正文: 因为太久没有更新了,今天就…

Elasticsearch7.8.0版本高级查询—— 多关键字精确查询文档

目录一、初始化文档数据二、多关键字精确查询文档2.1、概述2.2、示例一、初始化文档数据 在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/1,请求体内容为: {"name":"张三","…

干货 | 算力网络节点可信度评估和安全管控方案

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分:算力网络第二部分:可信度评估一、可信度评估在整个算力网络处理任务的实施流程中,不同部分有不同可信度评估的方法,具体包括:…

忙活了一年的开源社区,终于赶上了春节前的末班车!

随着春节的临近,忙碌了一年的小伙伴们,是不是都已经踏上了回乡的列车?我呢也终于在春节前,完成了 HelloGitHub.com 的重构。HelloGitHub.com 是我在 2017 年的时候用 FlaskjQuery 开发的网站,最初的想法很简单就是为了…

MySQL34道练习题

1、取得每个部门最高薪水的人员名称(要求显示部门编号、人员名称和薪资) 第一步:查询每个部门的最高薪资 SELECT deptno,max(sal) as maxsal FROM emp GROUP BY deptno; 第二步:把上面查询结果当做临时表t&#xff0…

Pagoda panel宝塔面板

宝塔面板是干什么的?有哪些典型的功能作用?宝塔面板是开发的服务器管理工具,是一家专业从事服务器相关软件和服务研发的公司。宝塔的愿景是让用户更容易使用服务器。宝塔面板是一款服务器管理软件,支持Windows和Linux系统,服务器…

【SpringCloud18】SpringCloud Alibaba Nacos服务注册和配置中心

1.Nacos简介 1.1为什么叫Nacos 前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service 1.2 是什么 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台Nacos:Dynamic Naming and Configuration ServiceNacos就是注册中心 配置中心…

简单双向LSTM模型实战项目

前言 数据来自于kaggle比赛Ventilator Pressure Prediction,数据背景介绍请看官方说明代码来自于当前排名第一的团队Shujun, Kha, Zidmie, Gilles, B,他们在获得第一名的成绩以后发了一篇博客,提供了他们在比赛中使用的模型,包括…