性能测试

一.性能测试概述

性能测试概念:

性能测试是指通过特定方式,对被测系统按照一定策略施加压力,获取系响应时间、TPS、资源利用率等性能指标,以期保证生产系统的性能能够满足用户需求的过程。

从不同角度来看性能:

用户角度:

响应时间,稳定性

开发角度:

架构设计,数据库设计,代码设计

系统管理员角度:

性能测试的价值:

提前发现系统高峰运行故障 指导制定突发流量承载方案 确保系统运行平稳

性能测试的目的:

优化性能 最小化成本 最小化风险 交付高质量的系统

性能测试的目标:

  • 评价当前系统性能
  • 寻找瓶颈,优化性能
  • 验证系统稳定性与可靠性

性能测试常用术语

并发数:

某一物理时刻同时向系统提交请求的用户数。 最佳并发用户数:通常反映系统的容量,即系统的处理能力情况。

响应时间:

响应时间指的是从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间。(网络时间 + 应用程序处理时间)

吞吐量:

单位时间内系统处理的客户请求的数量,体现系统的性能承载能力

TPS:应用系统每秒钟处理完成的交易数量。

QPS:应用系统每秒钟处理完成的请求数量。

资源利用率:

系统在负载运行期间,数据库服务器、应用服务器、web服务器的CPU、内存、硬盘、外置存储,网络带宽的使用率。

二.性能测试的主要类型

解释:

负载测试:

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

压力测试:

通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并以此来获得系统能够提供的最大服务级别的测试。 目标:压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。

大数据量测试:

  • 主要针对数据库有特殊要求的系统进行的测试。
  • 实时大数据量,测试用户较多或者某些业务产生较大数据量时,系统能否稳定运行。
  • 历史大数据量,测试系统使用一段时间即系统累计一定量的数据时能否正常的运行业务。
  • 前面两种的结合,测试系统已经累计了较大数据量时,一些实时产生较大数据量的模块能否稳定。

单交易负载测试:

单交易在系统一定负载压力下,采用梯度增加并发的方式,获得单交易系统处理最优时的并发用户数、响应时间和系统处理能力。目的是获取单日交易业务处理性能峰值,并且检查和排除该交易自身可能存在的性能问题。

混合交易测试(数据库可能会产生大量的死锁):

根据混合场景设计,采用梯度增加并发的方式,直到出现性能拐点,获得混合交易系统处理最优时的并发用户数、响应时间及系统处理能力。混合交易的目的是获取系统整体在不同负载级别下性能表现,检查和排除交易与交易之间可能存在的并发问题。

三.性能测试的流程

1.测试设计(性能需求调研,方案设计,计划制定)

方案设计:

选取原则:

  • 测试交易要覆盖各个渠道;

  • 选取交易量较大的高频交易;

  • 选取重要程度高的交易;

  • 选取占用资源较高的交易;

  • 选取业务逻辑复杂的交易;

  • 选取交易路径较长的交易;

  • 选取处理时间较长的交易;

  • 选取生产上曾经出现或者容易出现问题的交易;

设计方法:

1.分析业务系统各种正常日和特殊日的业务量运营情况

2.分析实际业务分布、交易类型及交易发生量、交易占比情况,根据业务分布比例及交易比例,确定测试模型所选交易的配比,构建测试模型。

常见测试场景分类:

正常业务日交易场景 特殊日交易场景 高峰交易场景 日终批处理场景

性能指标:

TPS、ART、并发用户数:非功能性能需求 TPS估算:首先获取被选交易生产高峰时段TPS,若获取有困难采用二八原则核算: TPS= n80% m20%*3600 (n:日交易量 m:每日工作时长) 交易成功率:99.99% 各应用服务器和数据库服务器系统资源使用情况:CPU、内存、IO、networke

2.测试准备

测试环境:重要系统以及新系统需要和生产环境一样,其他优化系统要保持1:2配比

测试数据:开发人员准备存量数据,测试人员准备参数化数据(脚本)

测试工具:LoadRunner,JMeter等

3.测试开发

4.测试执行

常见的性能测试问题:

TPS不达标,响应时间慢

交易大量超时或失败报错,交易成功率低于指标

TPS大幅波动不稳定

系统长时间运行不平稳

内存泄露

数据库有大量死锁生成

5.分析报告

Original: https://www.cnblogs.com/xiuercui/p/13953945.html
Author: 程序界第一佳丽
Title: 性能测试

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/577539/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • centos7安装zabbix-agent客户端

    1.官方下载zabbix-agent安装包链接:wget https://cdn.zabbix.com/zabbix/binaries/stable/5.4/5.4.6/zabbi…

    Linux 2023年6月13日
    0128
  • Spring事务管理

    事务的特性:一致性、原子性、隔离性、持久性 Spring事务管理相关接口:PlatformTransactionManager(事务管理器)、TransactionDefiniti…

    Linux 2023年6月7日
    0116
  • 配置免密登陆服务器

    前言 原来自己学习的时候在阿里云买自己的学习机,一台主机自己瞎折腾。但是参加工作以后管理的主机越来越多了,上服务器看的频率也越来越频繁,虽然有时候shell管理工具可以很方便的保存…

    Linux 2023年5月27日
    0145
  • centos 8及以上安装mysql 8.0

    本文适用于centos 8及以上安装mysql 8.0,整体耗时20分钟内,不需要FQ 1.环境先搞好 systemctl stop firewalld //关闭防火墙 syste…

    Linux 2023年6月7日
    0113
  • 计算机系统实验

    实验三 一 实验目的 理解堆栈结构,利用缓冲区进行代码攻击 二 准备工作 配置实验环境(IDA、gcc),阅读实验指导书 三 实验过程 0x01第一关 首先理解堆栈的结构 /* 第…

    Linux 2023年6月8日
    0105
  • 006 Linux 命令三剑客之-grep

    01 一起来认识 grep! Linux 命令三剑客,sed、grep、awk。 sed:擅长数据修改。 grep:擅长数据查找定位。 awk:擅长数据切片,数据格式化,功能最复杂…

    Linux 2023年5月27日
    0110
  • 苹果手机使用altstore免越狱安装第三方应用

    转自52pojie 开发人员Riley Testut推&#x5…

    Linux 2023年6月7日
    0278
  • SWAP交换分区扩容

    第一章 扩容当前swap 交换分区 注:这种需要停止当前业务,否则会产生影响 [17:09:31 root@libin3 ~]# free -h total used free s…

    Linux 2023年6月13日
    098
  • SpringSecurity

    1、环境搭建 1、导包,使用maven搭建项目 2、关闭thymeleaf缓存 3、导入静态资源和相应页面代码 4、建立controller层 2、权限与认证 运用了 Aop 切面…

    Linux 2023年6月14日
    095
  • 关于《我们做了一个操作系统,不是Windows,也不是Linux》几点补充说明

    前几天发的一个贴子:《我们做了一个操作系统,不是Windows,也不是Linux》,在几个平台引起巨大反响,各种评论都有。我们理解各位网友对国产高新技术产品的热忱,在此感谢大家关心…

    Linux 2023年6月6日
    0101
  • linux配置密钥登录

    一、前言: ssh远程登录密码认证的方式有三种,password、Keyboard Interactive、Public Key前面两种方式就是密码认证,含义都是一样大同小异。第三…

    Linux 2023年6月8日
    0102
  • mysql二进制安装脚本部署

    mysql二进制安装脚本部署 mysql二进制安装脚本部署 单实例 使用函数的单实例 使用函数的单实例或者多实例 单实例 [root@localhost ~]# mkdir mys…

    Linux 2023年6月6日
    0124
  • linux学习相关资料整理

    Posted on2022-09-08 13:09 brad1208 阅读(20 ) 评论() 编辑 linux常用指令记录 Python3.9.9安装 supervisor安装与…

    Linux 2023年6月6日
    0102
  • 你有想过在同一台服务器中,同时多开几个tomcat吗

    tomcat作为许多java项目的运行的环境,常用来跑java项目。而一台服务器只跑一个tomcat服务又太浪费资源了,so,我们可以在同一台服务器上,同时跑多个tomcat服务进…

    Linux 2023年6月8日
    0100
  • Linux系统编程之进程控制(进程创建、终止、等待及替换)

    进程创建 在上一节讲解进程概念时,我们提到fork函数是从已经存在的进程中创建一个新进程。那么,系统是如何创建一个新进程的呢?这就需要我们更深入的剖析fork函数。 1.1 for…

    Linux 2023年6月8日
    0118
  • 快速掌握 Base 64 | Java JS 密码系列

    Java 密码系列 – Java 和 JS Base 64 Base 64 不属于密码技术,仅是编码方式。但由于在 Java、JavaScript、区块链等出现的频率较…

    Linux 2023年6月7日
    0103
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球