性能测试简单介绍

2023-05-16

性能测试介绍

指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试

对性能的认识

从用户的角度:
这里写图片描述
从开发的角度:
这里写图片描述
从系统管理员的角度:
这里写图片描述

那么?测试应该关注哪些呢?
测试人员通常是做为软件质量控制的一个角色,不仅仅是找bug,需要对整个软件的质量负责,性能也属于质量的一部分,因此测试人员眼中的性能应该是全面的,考虑的东西也需要全面:

  1. 测试人员需要考虑全面的性能,包括用户、开发、管理员等各个视角的性能。
  2. 测试人员在做性能测试时除开要关注表面的现象如响应时间,也需要关注本质,比如用户看不到的服务器资料利用率,架构设计是否合理?代码是否合理等方方面面。

性能测试类型

  1. 基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考
  2. 负载测试:是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等 。
  3. 压力测试:压力测试是评估系统处于或超过预期负载时系统的运行情况,关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。
  4. 稳定性测试:在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
  5. 并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题

应用场景

性能测试应用场景(领域)主要有:能力验证、规划能力、性能调优、缺陷发现、性能基准比较。

下表简单介绍和对比了这几个场景的各自用途和特点:

作用主要用途典型场景特点常用性能测试方法
能力验证关注在给定的软硬件条件下,系统能否具有预期的能力表现在要求平均响应时间小于2秒的前提下,如何判断系统是否能够支持50万用户/天的访问量?a)要求在已确定的环境下运行b)需要根据典型场景设计测试方案和用例,包括操作序列和并发用户量,需要明确的性能目标a)负载测试 b)压力测试 c)稳定性能测试
规划能力关注如何使系统具有我们要求的性能能力某某系统计划在一年内获客量在到xxx万,系统到时候是否能支持这么多用户量?如果不能需要如何调整系统的配置?a) 它是一种探索性的测试 b) 常用于了解系统性能和获得扩展性能的方法a) 负载测试 b) 压力测试 c) 配置测试
性能调优主要用于对系统性能进行调优某某系统上线运行一段时间后响应速度越来越慢,此时应该如何办?每次只改变一个配置,切忌无休止的调优a) 并发测试 b) 压力测试 c) 配置测试
缺陷发现发现缺陷或问题重现、定位手段某些缺陷只有在高负载的情况下才能暴露出来,如线程锁、资源竞争或内存泄露做为系统测试的补充,用来发现并发问题,或是对系统已经出现的问题进行重现和定位a) 并发测试 b) 压力测试
性能基准比较常用于敏捷开发过程中,敏捷开发流程的特点是小步快走,快速试错,迭代周期短,需求变化频繁很难定义完善的性能测试目标,也没有时间在每个迭代开展详细的性能测试,可以通过建立性能基线,通过比较每次迭代中的性能表现变化,判断迭代是否达到了目标

性能测试基本概念

1、响应时间
  1. 定义:从用户发送一个请求到用户接收到服务器返回的响应数据这段时间就是响应时间
  2. 关键路径:下图为一次http请求经过的路径,请求会经过网络发送到web服务器进行处理,如果需要操作DB,再由网络转发到数据库进行处理,然后返回值给web服务器,web服务器最后把结果数据通过网络返回给客户端
    这里写图片描述
  3. 计算方法:Response time = (N1+N2+N3+N4)+ (A1+A2+a3),即:(网络时间 + 应用程序处理时间)
  4. 响应时间-负载对应关系:
    这里写图片描述
    图中拐点说明:
    (1)响应时间突然增加
    (2)意味着系统的一种或多种资源利用达到的极限
    (3)通常可以利用拐点来进行性能测试分析与定位
2、吞吐量
  1. 定义:单位时间内系统处理的客户端请求的数量
  2. 计算单位:一般使用请求数/秒做为吞吐量的单位,也可以使用页面数/秒表表示。
    另外,从业务角度来说也可以使用 访问人数 /天 或 页面访问量/天 做为单位。
  3. 计算方法:Throughput = (number of requests) / (total time).
  4. 吞吐量-负载对应关系:
    这里写图片描述
    图中拐点说明:
    (1)吞吐量逐渐达到饱和
    (2)意味着系统的一种或多种资源利用达到的极限
    (3)通常可以利用拐点来进行性能测试分析与定位
3、并发数:

(1)并发用户数:某一物理时刻同时向系统提交请求的用户数,提交的请求可能是同一个场景或功能,也可以是不同场景或功能。
(2)在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求
(3)系统用户数:系统注册的总用户数据
    
三者之间的关系:系统用户数 >= 在线用户数 >= 并发用户数

4、资源利用率
  1. 定义:指的是对不同系统资源的使用程度,通常以占用最大值的百分比来衡量
  2. 通常需要关注的服务器资源如下:
    (1)CPU:就像人的大脑,主要负责相关事情的判断以及实际处理的机制
    (2)内存:大脑中的记忆块区,将眼睛,皮肤等收集到的信息记录起来的地方,以供cpu进行判断,但是是临时的,访问速度快,如果关机或断电这里的数据会消失。
    (3)磁盘IO:大脑中的记忆区块,将重要的数据保存起来(永久保存,关机或断电不会丢失,速度慢),以便将来再次使用这些数据。
    (4)网络:
  3. 资源利用-负载对应关系:
    这里写图片描述
    图中拐点说明:
    (1)服务器某荐资源使用逐渐达到饱和
    (2)通常可以利用拐点来进行性能测试分析与定位
其它常用概念:
  1. TPS:Transactions Per Second,每秒事务数
  2. 思考时间:用户每个操作后的暂停时间,或者叫操作之间的间隔时间,此时间内是不对服务器产生压力的
  3. 点击数:每秒钟用户向WEB服务器提交的HTTP请求数。
    这个指标是WEB应用特有的一个指标:WEB应用是”请求-响应”模式,用户发出一次申请,服务器就要处理一次,所以点击是WEB应用能够处理的交易的最小单位。如果把每次点击定义为一个交易,点击率和TPS就是一个概念。容易看出,点击率越大,对服务器的压力越大。点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个HTTP请求.
  4. PV:访问一个URL,产生一个PV(Page View,页面访问量),每日每个网站的总PV量是形容一个 网站规模的重要指标。
  5. UV:作为一个独立的用户,访问站点的所有页面均算作一个UV(Unique Visitor,用户访问)

性能测试模型

曲线拐点模型

这里写图片描述

  1. X轴代表并发用户数,Y轴代表资源利用率、吞吐量、响应时间。X轴与Y轴区域从左往右分别是轻压力区、重压力区、拐点区。
  2. 随着并发用户数的增加,在轻压力区的响应时间变化不大,比较平缓,进入重压力区后呈现增长的趋势,最后 进入拐点区后倾斜率增大,响应时间急剧增加。
  3. 接着看吞吐量,随着并发用户数的增加,吞吐量增加,进入重压力区后逐步平稳,到达拐点区后急剧下降,说明系统已经达到了处理极限,有点要扛不住的感觉。
  4. 同理,随着并发用户数的增加,资源利用率逐步上升,最后达到饱和状态。
  5. 最后,把所有指标融合到一起来分析,随着并发用户数的增加,吞吐量与资源利用率增加,说明系统在积极处理,所以响应时间增加得并不明显,处于比较好的状态。但随着并发用户数的持续增加,压力也在持续加大,吞吐量与资源利用率都达到了饱和,随后吞吐量急剧下降,造成响应时间急剧增长。轻压力区与重压力区的交界点是系统的最佳并发用户数,因为各种资源都利用充分,响应也很快;而重压力区与拐点区的交界点就是系统的最大并发 用户数,因为超过这个点,系统性能将会急剧下降甚至崩溃。
地铁模型

假设:
某地铁站进站只有3个刷卡机。
人少的情况下,每位乘客很快就可以刷卡进站,假设进站需要1s。
乘客耐心有限,如果等待超过30min,就暴躁、唠叨,甚至放弃。

场景一:只有1名乘客进站时,这名乘客可以在1s的时间内完成进站,且只利用了一台刷卡机,剩余2台等待着。

场景二:只有2名乘客进站时,2名乘客仍都可以在1s的时间内完成进站,且利用了2台刷卡机,剩余1台等待着。

场景三:只有3名乘客进站时,3名乘客还能在1s的时间内完成进站,且利用了3台刷卡机,资源得到充分利用。

场景四:A、B、C三名乘客进站,同时D、E、F乘客也要进站,因为A、B、C先到,所以D、E、F乘客需要排队。
那么,A、B、C乘客进站时间为1s,而D、E、F乘客必须等待1s,所以他们3位在进站的时间是2s。

场景五:假设这次进站一次来了9名乘客,有3名的“响应时间”为1s,有3名的“响应时间”为2s(等待1s+进站1s), 还有3名的“响应时间”为3s(等待2s+进站1s)。

场景六:如果地铁正好在火车站,每名乘客都拿着大小不同的包,包太大导致卡在刷卡机堵塞,每名乘客的进站时 间就会又不一样。刷卡机有加宽的和正常宽度的两种类型,那么拿大包的乘客可以通过加宽的刷卡机快速进站(增 加带宽)。

场景七:进站的乘客越来越多,3台刷卡机已经无法满足需求,为了减少人流的积压,需要再多开几个刷卡机,增 加进站的人流与速度(提升TPS、增大连接数)。

场景八:到了上班高峰时间了,乘客数量上升太快,现有的进站措施已经无法满足,越来越多的人开始抱怨、 拥挤,情况越来越糟。单单增加刷卡机已经不行了,此时的乘客就相当于“请求”,乘客不是在地铁进站排队,就是 在站台排队等车,已经造成严重的“堵塞”,那么增加发车频率(加快应用服务器、数据库的处理速度)、增加车厢数量(增加内存、增大吞吐量)、增加线路(增加服务的线程)、限流、分流等多种措施便应需而生。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

性能测试简单介绍 的相关文章

  • mysql16

    常见面试题 MySQL 中有哪些存储引擎 xff1f InnoDB 存储引擎 InnoDB 是 MySQL 的默认事务型引擎 xff0c 也是最重要 使用最广泛的存储引擎 它被设计用来处理大量的短期 short lived 事务 xff0c
  • CSDN 博客备份工具

    前言 核心 登录模块 备份模块 博文扫描模块 演示 如何使用 效果 总结 前言 近段时间以来 听群友博友都在谈论着一件事 CSDN博客怎么没有备份功能啊 这其实也在一定程度上表征着大家对于文章这种知识性产品的重视度越来越高 也对于数据的安全
  • 如何在 Linux 中查找一个文件

    导读对于新手而言 xff0c 在 Linux 中使用命令行可能会非常不方便 没有图形界面 xff0c 很难在不同文件夹间浏览 xff0c 找到需要的文件 本篇教程中 xff0c 我会展示如何在 Linux 中查找特定的文件 第一步要做的是通
  • [Android 调试] 解决linux系统不识别设备、手机问题方法

    最近在开发过程中linux不识别开发板设备 手机 xff0c 看了下dev guide xff0c 现在把方法提供给大家 1 If you 39 re developing on Ubuntu Linux you need to add a
  • spring开发篇二:@RequestParam和@RequestBody与前端Get和Post请求传参详解附中文乱码解决方法

    1 先入为主 xff1a 1 1 在spring的controller中注解写法规则 xff1a xff08 a xff09 同一个请求中 xff0c 只能有一个 64 RequestBody xff1b xff08 b xff09 同一个
  • ICMP协议详解

    ICMP协议详解 ICMP协议是一个网络层协议 一个新搭建好的网络 xff0c 往往需要先进行一个简单的测试 xff0c 来验证网络是否畅通 xff1b 但是IP协议并不提供可靠传输 如果丢包了 xff0c IP协议并不能通知传输层是否丢包
  • nginx系列之健康检查模块配置安装(nginx_upstream_check_module)

    nginx安装步骤 xff0c 不详述 xff0c 请查看nginx系列篇 xff0c 安装 nginx安装教程 1 下载nginx upstream check module模块 nginx upstream check module m
  • linux系统维护篇:centos6.5 yum无法安装YumRepo Error: All mirror URLs are not using ftp, http[s] or file

    在使用yum安装软件的时候突然提示错误 xff1a root 64 dukeServer softwares yum install tcp Loaded plugins fastestmirror security Setting up
  • linux系统维护篇:网络流量查看及带宽测试

    前提准备 xff1a 由于即将使用的工具包需从第三方开源软件库中在线安装 xff0c 因此需执行以下命令 EPEL 的全称叫 Extra Packages for Enterprise Linux EPEL 是由 Fedora 社区打造 x
  • linux系统维护篇:org.gtk.vfs.Daemon: A connection to the bus can‘t be made

    问题 linux centos7 9安装的GNOME桌面莫名其妙不能使用vnc远程 排查 经过定位 发现服务器上vncserver服务无法启动 日志如下 Feb 3 16 30 01 localhost systemd Started Se
  • linux系统维护篇:centos7.9桌面环境安装百度网盘客户端(libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found)

    1 官网下载linux版本rpm包 https pan baidu com download 2 上传到服务进行安装 root 64 dukeServer rpm ivh baidunetdisk 3 5 0 x86 64 rpm 会遇到需
  • nginx代理ftp端口,实现文件传输

    1 需求背景 2 安装nginx 查看nginx离线安装 这里补充下 xff1a 因为代理ftp端口需要用到nginx的stream模块 xff0c 所以在配置nginx的时候需带上参数 xff1a with stream 核心配置 xff
  • Generic family ‘sans-serif‘ not found because none of the following families

    1背景 python使用matplot绘图标注中文时 xff0c 出现乱码 xff0c 部分python代码如下 xff1a 解决中文显示问题 plt rcParams 39 font sans serif 39 61 39 SimHei
  • 实现阿里云服务器内网互通

    1 首先第一步应该是提交工单 xff0c 告知两台服务器的外网IP xff0c 然后通过工单进行反馈 2 如果地域都是一样那就好办很多 xff0c 比如参考官方的案例 xff1a 安全组应用案例 云服务器 ECS 阿里云帮助中心 官方内容如
  • hydra安装及使用

    说明 xff1a hydra是著名黑客组织thc的一款开源的暴力密码破解工具 xff0c 可以在线破解多种密码 官网 xff1a http www thc org thc hydra xff0c 可支持AFP Cisco AAA Cisco
  • 数据库mysql 主从方案

    双机热备的概念简单说一下 xff0c 就是要保持两个数据库的状态自动同步 对任何一个数据库的操作都自动应用到另外一个数据库 xff0c 始终保持两个数据库数据一致 这样做的好处多 1 可以做灾备 xff0c 其中一个坏了可以切换到另一个 2
  • shell工具--sed和awk详解

    grep grep是一款强大的文本过滤工具 xff0c 按照关键字或者正则表达式进行过滤 具体讲解请看博文 这里写链接内容 sed sed是一种流编辑器 xff0c 它是文本处理中非常中的工具 xff0c 能够完美的配合正则表达式使用 1
  • js实现打字机效果---Day06

    我常想象这样一幅画面 xff1a 素雅的大背景 xff0c 伴着可心的音乐 xff0c 优雅旋转着的芭蕾舞者 xff0c 旁边那不断打出的文字 xff0c 仿佛就这样娓娓道来他们那美美的故事 xff1b 也常想象 xff1a 呼喇啦甩动的大
  • 纯css3实现漂亮的对话框----Day07

    姑且先不来讨论css3跟css的区别 xff0c 也不说html和html5的不同 xff0c 虽然这很关键 xff0c 但是现阶段还真的没整利落了 xff0c 姑且就这些应用先用着 xff0c 等自己有些见解了再来探讨那些深层次的问题 先

随机推荐

  • 纯css3实现饼状图-------Day21

    现代网站在商务应用中比较广泛 xff0c 什么oa xff0c 什么erp xff0c 除了导入导出 xff0c 就是数据统计 xff0c 再不然就来个做个报表 xff0c 而饼状图作为数据的一种直观统计显示 xff0c 应用是非常广泛的
  • 你是如何理解var e=e||window.event的------Day26

    你是如何理解var e 61 e window event的 xff1f 相信很多人都能给我个回答说是 xff1a 为了实现多种浏览器兼容 不错 xff0c 确实是为了实现浏览器兼容 xff0c 但是它又是如何实现浏览器兼容的呢 xff1f
  • js实现回放拖拽轨迹-------Day48

    今天有点小高兴 xff0c csdn博客浏览量过万了 xff0c 在过去还从来没有过这么高的浏览量呢 xff0c 不得不说 xff0c 太多时候还是有些矫情 xff0c 可看到这些鼓励还是忍不住高兴啊 xff0c 至少 xff0c 这样让我
  • js实现动态删除表格的行或者列-------Day57

    昨天记录了动态添加表格的一行 xff0c 当然这个一行是指一行数据 xff0c 也就是说一行多少列也是加上的 xff0c 并且第几列的内容都可以添加上 xff0c 先来回顾下它的实现的关键点 xff1a 1 var row 61 table
  • js实现表格的选中一行-------Day58

    最开始想更多的用js来动态操作表格 xff0c 是因为在应用了easyUI之后 xff0c 发现直接写一个 lt table id 61 34 tt 34 gt lt table gt xff0c 这就够了 xff0c 界面里面就剩下这么一
  • 积跬步,聚小流-------关于UML时序图

    uml时序图的存在 在上一篇中记录了uml类图 xff0c 用类图来描述代码中所需要的类以及相互之间的关系 xff0c 也就立体的将整个程序框架展现在了我们面前 xff0c 像一幅画 xff0c 有山有水有人 一张照片只能定格当时的美好 x
  • 积跬步,聚小流------用smartpaginator来做分页

    网络上的实例 xff08 jquery smarypaginator 例图 xff09 如果说是从 百度 上搜索过 jquery分页插件 的朋友 xff0c 相信对上面的图片不会陌生 xff0c 几乎所有介绍 jquery分页插件 的文章中
  • 我的2017-搭建个人网站,搭建PHP环境(2)

    上周确定了 xff0c 想要应用的后台语言 xff0c 面临的最大问题就是 xff1a php我不会啊 xff0c 哈哈哈哈 xff0c 所以接下来首先要做的就是了解 学习php的相关知识 接下来的第一步 xff1a 环境搭建 1 下载安装
  • 设计一个类:只能在堆上创建对象?只能在栈上创建对象?只能创建一个对象?

    在C 43 43 中 xff0c 类的对象建立分为两种 xff0c 一种是静态建立 xff0c 如A a xff1b 另一种是动态建立 xff0c 如A ptr 61 new A xff1b 这两种方式是有区别的 静态建立一个类对象 xff
  • 我的2017-搭建个人网站,hello PHP(2)

    学习一门语言 xff0c 例行惯例 xff0c 先来个 hello world 搭建好了php环境 xff0c 然后就可以运行php了 xff0c 首先用一种最简单的方法 xff0c 在wamp安装位置 xff08 相应的文件夹 xff09
  • 我的2017-搭建个人网站,自拟定代码根目录

    wampserver集成安装环境安装的php的运行根目录在wamp文件夹中的www文件夹下 xff0c 而为了有效的将代码和服务器进行分离 xff0c 可以采用自拟定代码根目录进行修改 1 确定代码编辑位置 xff0c 修改服务器默认指向
  • 编译原理:求First集与Follow集的方法

    明天就要考试了 xff0c 发现一直理解错了First集与Follow集的解法 xff0c 贴上比较好理解的 文法 xff1a S ABc A a B b First集合求法 能 由非终结符号推出的所有的开头符号或可能的 xff0c 但要求
  • 位运算n & (n-1)的妙用

    本文转自 xff1a http blog csdn net zheng0518 article details 8882394 按位与的知识 n amp n 1 作用 xff1a 将n的二进制表示中的最低位为1的改为0 xff0c 先看一个
  • 二分查找算法(Java版)

    二分查找算法是非常经典且基本的算法 1 二分查找又称折半查找 xff0c 优点是比较次数少 xff0c 查找速度快 xff0c 平均性能好 xff1b 其缺点是要求待查表为有序表 xff0c 且插入删除困难 因此 xff0c 折半查找方法适
  • 电脑眼睛保护色——绿豆沙色

    眼科医生建议电脑屏幕不要用白色 xff0c 因为白色对眼睛的刺激是最大的 xff0c 最损伤视力 xff01 眼科医生推荐的颜色是 柔和的淡绿色 xff0c 也有人叫做绿豆沙色 按HSU 设置为 xff1a 色度 HUE xff1a 85
  • Java中两个数交换的细节问题

    在码代码过程中 xff0c 两个数交换是经常用到的 xff0c 但在Java 中 xff0c 如果忽略了值传递和引用传递就很容易出错 看一下两个整数交换代码 xff1a public void swap int a int b int t
  • 微信 Mars Android Sample 源码分析

    注 xff1a 原文首发地址 零 前言 Mars 是微信官方开源的跨平台跨业务的终端基础组件 xff0c 具有高质量网络连接模块 长短连接 智能心跳机制 高性能日志模块和网络监测组件等 而整个 Android Sample 是基于 Mars
  • Android NDK 开发:实战案例

    0 前言 如果只学理论 xff0c 不做实践 xff0c 不踩踩坑 xff0c 一般很难发现真正实践项目中的问题的 xff0c 也比较难以加深对技术的理解 所以延续上篇 JNI 的实战Android NDK开发 xff1a JNI实战篇 x
  • Android NDK 开发:CMake 使用

    1 前言 当在做 Android NDK 开发时 xff0c 如果不熟悉用 CMake 来构建 xff0c 读不懂 CMakeLists txt 的配置脚本 xff0c 很容易就会踩坑 xff0c 遇到编译失败 xff0c 一个很小的配置问
  • 性能测试简单介绍

    性能测试介绍 指通过自动化的测试工具模拟多种正常 峰值以及异常负载条件来对系统的各项性能指标进行测试 对性能的认识 从用户的角度 xff1a 从开发的角度 xff1a 从系统管理员的角度 xff1a 那么 xff1f 测试应该关注哪些呢 x