性能测试入门知识总结

目录

1.什么是性能测试?

2.为什么要进行性能测试?

3.性能测试的常见术语

4.性能测试的分类

5.性能测试如何展开?


1.什么是性能测试?

性能测试是一种测试类型,旨在确定系统的性能以衡量性能,验证或验证系统的质量属性,例如在各种负载条件下的响应性,速度,可伸缩性,稳定性。在混合负载条件下对系统进行了测试,并检查了系统在各种工作负载下响应所需的时间。软件性能测试涉及对被测应用程序的测试,以确保应用程序在各种负载条件下都能按预期工作。性能测试的目标不仅是发现系统中的错误,而且还要消除系统中的性能瓶颈

总结来说的话:测试人员借助性能测试工具,模拟系统在不同情况下性能指标是否正常

2.为什么要进行性能测试?

主要是为了验证该软件系统是否达到预期的性能指标,以及在测试过程中,软件性能是否有瓶颈,有即进行优化。

1、评估系统的能力:软件系统能力主要是看系统能承载的负荷和对应的响应时间,并发用户等数据验证系统的各项指标是否达到用户需求和预期目标。

2、识别体系中的弱点:根据测试过程中的负荷或代码走差方式找出系统的极端或繁琐的代码逻辑,从而找到系统中的瓶颈或薄弱地方

3、系统调优:重复进行性能测试,验证系统活动是否达到预期结果,从而进行改进

4、检测软件中的问题:通过大量的重复测试验证来查找一些隐含的漏洞问题或者硬件引发的问题。

5、验证稳定性和可靠性:在验证时不仅要考虑系统的稳定性和可靠性,还要考虑人为因素这方面。

3.性能测试的常见术语

   3.1并发用户数

并发用户数是指同一时刻与服务器进行数据交互的所有用户数量。概念中有两点需要注意。第一:同一时刻,因为并发强调的是用户同时对服务器进行施压。例如:一个人同时挑两件东西,这时表示两件东西同时被这个人挑起来,而如果是先挑一件,再挑另外一件,那么就无法表现出同时的概念,这两件东西也就没有同时施压在这个人身上。第二:强调要与服务器进行数据交互,如果未和服务器进行数据的交互,这样的用户是没给服务器带来压力的。同样是上面的例子,这个人虽然同时挑了两件东西,但其中有一件东西是没重量的,那就是说只有一件东西对这个人造成压力。

因此对于并发用户这个概念的理解经常会出现以下两种误区一是认为系统所有的用户都叫并发用户;二是认为所有在线的用户都是并发用户。在线用户不一定是并发用户,原因是在线用户不一定就与系统进行了数据的交互,例如:如果一些在线用户只是查看系统上的一些消息,那么这些在线用户不能作为并发用户计算,因为这些用户并没有与系统进行数据交互,不会给服务器带来任何压力。

   3.2并发请求数  

在并发用户的基础上,这些用户请求系统,此时服务器接受的请求的数量

   3.3用户数

系统用户数:就是系统数据库中维护的用户数据对应的数量
在线用户数:就是同时登陆系统在线的用户数量
并发用户数:是对系统同时发起请求的用户数量

   3.4响应时间

 

 

响应时间一般是秒或者毫秒,如果响应时间过长,说明性能不够好,需要很长的等待时长。如果一个响应时间极短,那么可以采取一个请求操作重复执行一万次, 测试一万次执行需要的总响应时间之和,除以一万, 得到单次平均请求的响应时间。

   3.5事务

为一个流程中某个或某些环节的称谓,一个流程可称为一个大的事务,在这个大的事务中可包含许多小的事务。 

   3.6事务响应时间

服务器处理一个事务所花费的时间

   3.7TPS

TPS(Transaction Per Second)表示服务器每秒处理的事务数,它是衡量系统处理能力的重要指标。如果每个事务对应的为一笔业务,那么TPS即表示服务器处理每秒钟的业务笔数,处理业务数的值越大说明服务器的处理能力越强,如银行业务,一些银行业务在性能测试时使用的是Windows Sockets的协议,这样每个事务其对应的就为一笔业务。

   3.8点击率

点击率(Hit Per Second)是指每秒钟用户向服务器提交的HTTP数量。用户每点击一次,服务器端就要对用户提交的请求进行一次处理,从事务的角度来说,如果把每次点击作为一次提交事务来对待,那么点击率与TPS的概念是等同的。对于Web系统来说,“点击率”是服务器处理的最小单位,点击率的值越大,说明服务器端所需要承受的压力越大(如果服务器正确的处理客户端的请求)。因此通常情况下,Web服务器都具有防刷新的机制,因为客户每刷新一次系统就要响应一次点击,如果不对服务器进行防刷新处理,当用户不停地点击刷新按钮,此时服务器将承受巨大的压力。

需要注意的是,点击一次并不代表客户端只向服务器端发送一个HTTP请求,客户每点击一次,都会向服务器端发出多个HTTP请求,并且点击率仅仅反应的是客户端提交的请求数,不能表现服务器端当前承受的压力,因为客户端提交的请求,服务器不一定会全部处理,有可能出现服务器拒绝客户端请求的情况,所以点击率不能直接反应服务器处理请求的能力。

   3.9吞吐量

在性能测试过程中,吞吐量是指单位时间内服务器处理的字节数,吞吐量的单位为字节/秒,吞吐量的大小直接体现服务器的承载能力。

吞吐量作为性能测试过程中主要关注的指标之一,它与虚拟用户数之间存在一定的联系,当系统没有遇到性能瓶颈时,可以采用下面这个公式来计算。

其中,F表示吞吐量;Nvu表示VU(Virtual User,虚拟用户数)的个数;R表示在T时间内每个VU(虚拟用户数)发出的请求字节数;T表示性能测试所用的时间。但是如果系统遇到性能瓶颈,这个公式就不再适用。吞吐量与VU之间的关联图如图1-4所示。从图中可以看出,吞吐量在VU增长到一定数量时,软件系统出现性能瓶颈,此时,吞吐量的值并不会随着VU数量的增加而增大,而是趋于平衡。

但在实际测试过程中,测试前吞吐量是不知道的,必须通过不断添加虚拟用户来不断的测试,才能找到吞吐量的捌点,也即服务器吞吐量的最大值。

实例:假设向一个水池注水,每根小管注入的水量为0.1立方米每秒,而水池的出水量为1立方每秒(假设这个值在测试之前是不知道),如图

 

当只放一根注水管时,水池的流出的水量为0.1立方米每秒,也即当前水池的吞吐量为0.1立方米每秒,依此类推当放入10根注水管时,水池的流出的水量为1立方米每秒,当放入11(或大于10根)根注水管时,水池的流出的水量也为1立方米每秒,此时水池都会开始积水,因为每秒排出的水比注入的水少,这说明水池的吞吐量为1立方米每秒,不管注入的水量为多少,这个值都不再改变。服务器也是一样的,客户端不断的请求,当服务器能正确的处理时,测试出来服务器的吞吐量就会不断的增加的,但当服务器无法处理时,吞吐量的值就不再变化,此时即找到服务器最大吞吐量的值。

   3.10吞吐率 

吞吐率(Throughout)是指单位时间内从服务器返回的字节数,也可以指单位时间内服务器处理客户提交的请求数。它是衡量网络性能的一个重要指标。吞吐率=吞吐量/测试时间,通常情况下吞吐量的值越大,吞吐率的值也越大,吞吐率的值越大系统的负载能力越强。也意味着系统的性能降低。

   3.11思考时间 

思考时间(Think Time),也称为“休眠时间”,是指用户在进行操作时,每个请求之间的时间间隔。对于交互系统来说,用户不可能持续不断地发出请求,一般情况下,用户在向服务器端发送一个请求后,会等待一段时间再发送下一个请求,在性能测试过程中使用思考时间来描述这段时间。

   3.12资源利用率

资源利用率是指服务器系统中不同硬件资源被使用的程度,资源使用率=资源实际使用量/总的可用资源量。主要包括CPU利用率、内存利用率、磁盘利用率、网络等。资源利用率是分析系统性能指标进而改善性能的主要依据,在配置调优测试的过程中,通过比较配置调优前后系统资源的利用率来判断调优的效果。

4.性能测试的分类

    4.1基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考

    4.2负载测试:是通过逐渐增加系统的负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能承受的最大负载量的测试。简而言之,负载测试是通过逐步加压的方式来确定系统的处理能力和能够承受的各项阈值

    4.3压力测试:是通过逐步增加系统的负载,测试系统性能的变化,并最终确定在什么负载条件下,系统性能处于失效状态,并获得系统能提供的最大服务级别的测试。压力测试是逐步增加负载,使系统某些资源达到饱和甚至失效

    4.4并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,几乎所有的性能测试都会涉及一些并发测试。

    4.5容量测试:在一定的软、硬件条件下,在数据库中构造不同数量级的记录数量,通过运行一种或多种业务场景在一定虚拟用户数量的情况下,获取不同数量级别的性能指标,从而得到数据库能够处理的最大会话能力,最大容量等。系统可处理同时在线的最大用户数,通常和数据库有关。

    4.6可靠性测试(稳定性测试):通过给系统加载一定的业务压力(如CPU资源在70%~90%的使用率)的情况下,运行一段时间,检查系统是否稳定因为运行时间较长,通常可以测试出系统是否有内存泄漏等问题。

    4.7配置测试:主要是通过对被测试软件的软硬件配置进行测试,找到系统各项资源的最优分配原则。配置测试能充分利用有限的软硬件资源,发挥系统的最佳处理能力,同时可以将其与其他性能测试类型联合应用,从而为系统提供重要依据。

    4.8失败测试:对于有冗余备份和负载均衡的系统,通过失败测试来检验如果系统局部发生故障,用户能否继续使用系统,用户受到多大的影响,如几台机器做均衡负载,一台或几台机器垮掉后系统能够承受的压力。

 

5.性能测试如何展开?

性能测试首先是基于功能测试的,必须了解其功能需求才能开展性能测试。

性能测试步骤大体如下:

  • 确认测试目标;
  • 分析被测系统业务需求;
  • 分析被测系统的系统结构;
  • 分析被测系统的性能测试点;
  • 设计测试方案、检测方案和测试案例;
  • 选择测试工具;
  • 测试开发;
  • 测试执行;
  • 测试结果分析;
  • 测试调优、测试验证、测试分析;
  • 输出测试报告;

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

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

相关文章

8.15锁的优化

1.锁升级(锁膨胀) 无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁 偏向锁:不是真的加锁,而是做了一个标记,如果有别的线程来竞争才会真的加锁,如果没有别的线程竞争就不会加锁. 轻量级锁:一个线程占领锁资源后,另一个线程通过自旋的方式反复确认锁是否被是否(这个过程比较…

RabbitMQ安装说明文档-v2.0

rabbitmq安装 说明:请使用资料里提供的CentOS-7-x86_64-DVD-1810.iso 安装虚拟机. 1. 安装依赖环境 在线安装依赖环境: yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel …

【并发专题】单例模式的线程安全(进阶理解篇)

目录 背景前置知识类加载运行全过程 单例模式的实现方式一、饿汉式基本介绍源码分析 二、懒汉式基本介绍源码分析改进 三、懒汉式单例终极解决方案(静态内部类)(推荐使用方案)基本介绍源码分析 感谢 背景 最近学习了JVM之后&…

面试题:JS如何最快的执行垃圾回收机制

因为没看见答案,所以也不知道对不对。 JavaScript 的垃圾回收机制是由 JavaScript 引擎自动管理的,通常情况下我们无法控制垃圾回收机制的执行时间和频率。 然而,我们可以采取一些优化策略来减少垃圾回收的性能开销,从而提高代码…

golang函数传参——值传递理解

做了五年的go开发,却并没有什么成长,都停留在了业务层面了。一直以为golang中函数传参,如果传的是引用类型,则是以引用传递,造成这样的误解,实在也不能怪我。我们来看一个例子,众所周知&#xf…

uniapp发布插件显示components/xxx文件没找到,插件格式不正确

uniapp发布插件显示components/xxx文件没找到,插件格式不正确 将插件文件这样一起选中,然后右键压缩成zip文件,而不是外层文件压缩

记一次 .NET某医疗器械清洗系统 卡死分析

一:背景 1. 讲故事 前段时间协助训练营里的一位朋友分析了一个程序卡死的问题,回过头来看这个案例比较经典,这篇稍微整理一下供后来者少踩坑吧。 二:WinDbg 分析 1. 为什么会卡死 因为是窗体程序,理所当然就是看主…

SQL ASNI where from group order 顺序

SQL语句执行顺序: from–>where–>group by -->having — >select --> order 第一步:from语句,选择要操作的表。 第二步:where语句,在from后的表中设置筛选条件,筛选出符合条件的记录。 …

PyTorch深度学习实战(9)——学习率优化

PyTorch深度学习实战(9)——学习率优化 0. 前言1. 学习率简介2. 梯度值、学习率和权重之间的相互作用3. 学习率优化实战3.1 学习率对缩放后的数据集的影响3.2 学习率对未缩放数据集的影响 小结系列链接 0. 前言 学习率( learning rate )是神经网络训练中…

从0到1开发go-tcp框架【4实战片— — 开发MMO之玩家聊天篇】

从0到1开发go-tcp框架【实战片— — 开发MMO】 MMO(MassiveMultiplayerOnlineGame):大型多人在线游戏(多人在线网游) 1 AOI兴趣点的算法 游戏中的坐标模型: 场景相关数值计算 ● 场景大小: 250…

解密爬虫ip是如何被识别屏蔽的

在当今信息化的时代,网络爬虫已经成为许多企业、学术机构和个人不可或缺的工具。然而,随着网站安全防护的升级,爬虫ip往往容易被识别并屏蔽,给爬虫工作增加了许多困扰。在这里,作为一家专业的爬虫ip供应商,…

2023上半年手机及数码行业分析报告(京东销售数据分析)

2023年上半年,手机市场迎来复苏,同环比来看,销量销额纷纷上涨。 而数码市场中,各个热门品类表现不一。微单相机及智能手表同比去年呈现增长态势,而笔记本电脑市场则出现下滑。 基于此现状,鲸参谋发布了20…

谈一谈Python中的装饰器

1、装饰器基础介绍 1.1 何为Python中的装饰器? Python中装饰器的定义以及用途: 装饰器是一种特殊的函数,它可以接受一个函数作为参数,并返回一个新的函数。装饰器可以用来修改或增强函数的行为,而不需要修改函数本身…

JVM深入 —— JVM的体系架构

前言 能否真正理解JVM的底层实现原理是进阶Java技术的必由之路,Java通过JVM虚拟机的设计使得Java的延拓性更好,平台无关性是其同时兼顾移动端和服务器端开发的重要特性。在本篇文章中,荔枝将会仔细梳理JVM的体系架构和理论知识,希…

Dubbo+Zookeeper使用

说明:Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。 本文介绍Dubbo的简单使用及一些Dubbo功能特性,注册中心使用的是ZooKeeper,可在…

驱动工作原理

驱动原理 在Linux操作系统中,硬件驱动程序中实现对硬件直接操作,而用户空间,通过通用的系统调用接口(open() 打开相应的驱动设备,ioctl()控制相应的功能等),实现对硬件操作,应用程序没有直接操作…

树的层次遍历

层次遍历简介 广度优先在面试里出现的频率非常高,整体属于简单题。而广度优先遍历又叫做层次遍历,基本过程如下: 层次遍历就是从根节点开始,先访问根节点下面一层全部元素,再访问之后的层次,类似金字塔一样…

【Uniapp 的APP热更新】

Uniapp 的APP热更新功能依赖于其打包工具 HBuilder,具体步骤如下: 1. 在 HBuilder 中构建并打包出应用程序 具体步骤: 1.点击发行,点击制作wgt包 2.根据需求修改文件储存路径和其他配置,点击确定 3.等待打包完成&a…

Rust中的高吞吐量流处理

本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序。 最后,作者介绍了如何通过测量空闲和阻塞时间来优化流处理程序的性能,并将这些内容同步至…

Android 实现账号诊断动画效果,逐条检测对应的项目

Dialog中的项目 逐条检测效果&#xff1a; 依赖库&#xff1a; implementation com.github.li-xiaojun:XPopup:2.9.19 implementation com.blankj:utilcodex:1.31.1 implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.101、item_account_check.xml <…