性能测试理论

性能测试

什么是软件性能

互联网的技术基本已全面的进行普及,所以对于用户而言软件的用户体验是非常重要的。在软件的角度而言,性能它首先是一种指标,具体可以说就是软件系统或构件对于其及时性要求的符合程度,另外一种就是软件产品的一种特性,其实就是响应时间。所以对一个产品而言,性能的及时性是用响应时间或者吞吐量来进行衡量,一个用户操作行为,或者说是事务,比如单个的事务,响应时间就是完成事务所需要的时间,对用户而言,响应时间就是端到端的用户基本体验。比如登录打开抖音,视频显示播放,这个过程总共耗时是3秒,那么就是抖音的响应时间。下面具体说下不同视角下对性能这部分的理解。

用户视角

在用户的角度而言,软件性能就是用户操作的响应时间。一般而言关于响应时间业界的说法具体如下: 1-3秒,属于优的表现 3-5秒,可以接受,属于中间的表现 5秒以上,无法接受 所以各位特别注意,如果在实际的工作里面,如果响应时间是大于5秒,那么就需要提单程序员,让程序员来进行具体的优化。

运维视角

运维除了关注响应时间外,也会关注更多底层的资源信息,这些资源信息具体可以汇总为如下: 系统资源(CPU和内存) 数据库资源(IOPS资源) JVM内存是否够用 系统的最大容量

开发视角

开发的关注度会更加的全面,毕竞代码都是程序员来编写的,具体可以汇总为如下:前后交互的响应时间·中间件的参数设置

内存释放泄露 连接数泄露 是否存在不合理的内存使用方式 是否存在不合理的线程同步方式 系统中是否存在不合理的资源竞争 系统架构&代码结构

测试视角

用户关注的视角属于全栈性的,需要考虑用户视角的产品体验,也要监控以及关注运维视角和开发视角,所以性能测试中测试的具体工作职责可以总结为: 设计合理的场景和测试用例来得到系统的资源数据 验证在高并发的情况下架构是否满足 给架构师以及开发人员提供中间件配置参数的合理值范围 使用技术手段监控系统,DB,中间件,全链路监控的方式来监控系统资源情况

WEB前端

所谓前端的性能目前也是性能测试中比较热门的技术之一,关注的点具体汇总为如下: 浏览器的资源加载(HTML解析,图片资源加载,CSS文件资源加载) 前端缓存技在的优化是否合理性 前端与后端的交互性耗时

软件性能的的常用术语

响应时间

一次操作完成的时间,也就是客户端发送请求到服务端后,服务端返回到客户端的响应数据的时间。包含了用于等待和服务的时间,也包括用来返回结果的时间。响应时间(Response Time)=网络时间+应用程序的处理时间,具体如下图所示:

 

 

 

并发用户数

性能测试的核心是验证当前系统能否支持现有用户的访问**,也就是说系统可以承受在同一时间段多少用户来访问系统,比如王者荣耀的游戏,是否可以承受同时在线人数一个亿的人同时进行玩游戏?所以同时可以形象的如下所示:

 

 

如上所示,同一时间,所有用户访问同一个系统。 并发用户数秒,可以说:不论从业务视角出发,还是服务端承受压力而言,描述的是同一时间同时向客户端发出请求的客户,某些时候也称为“并发测试"。这中间主要体现的是服务端承受的最大并发访问数。

并发用户数:N个用户向服务发送请求 在线用户数:仅仅在线,但是并不代表发送了请求,僵尸用户

吞吐量

主要用于数据传输方面,也就是被测试系统的执行效率。该术语用于描述数据传输速度(字节/秒或者比特/秒),在某些情况下(如DB层面),吞吐量指的是操作的速度,也就是每秒操作墩或者每秒业务数。或者也可以说单位时间内客户端请求的数量,直接体现系统的性能承载能力

性能计数器

主要指的是性能测试过程中操作系统以及其他组件的一些数据指标。

WebServer:HTTP连接数 应用Server:服务被部署的系统的CPU和内存资源 DataServe:IOPS

IOPS

该术语主要是针对数据库的,也就是每秒发⽣的输⼊/输出操作的次数,是数据传输的⼀个度量⽅法。⽤于磁盘的 读写,IOPS值的是每秒读和写的次数。IOPS衡量的是读写的速度

使用率(75%)

对于服务所请求的资源,使用率描述的是所给定的时间区间内资源的繁忙程度。对于存储资源来说,使用率指的就是所消耗的存储容量。如一个业务中,会使用大量的内存资源,总的内存资源是4G,在一定数据量的情况下执行该业务形态,内存使用率从100M一直占用到3G,然后随着业务形态内存资源得到释放呈下降的趋势,那么可以说内存使用率最高为75%,可能会存在OOM的错误信息,也可能会存在内存泄露的情况。所以使用率分两个维度,一个是系统资源的使用率,另外一个是系统内部署服务对系统资源的使用率。

out of memory(OOM)内存泄漏

思考时间

思考时间英文名称是Think Time,也称为休眠时间,在业务视角,思考时间指的是用户在进行操作时,每个请求之间的间隔时间。

TPS/QPS

事务指的是某个操作或者是一组操作的组合,如登录的事务那么就是输入账户和密码,点击登录按钮跳转到登录成功的页面并且信息都加载出来。TPS统计的是每秒处理的事务数,即系统每秒能够处理的事务的数量。QPS指的是每秒查询率,如DB服务器在规定时间内处理流量多少的衡量标准。

软件性能测试理论

资源调度

不管是操作系统级别还是在微服务的架构下,高并发的请求如果都允许进入到执行阶段,必然带来的是灾难,因为系统以及集群的计算资源以及可承载的能力是有限的。那么就需要调度策略来解决这个事情,解决的思路即使有很多的任务过来,但是先做资源的check检查,在资源允许的情况下,会做任务的下发和执行。在操作系统级别,专业的来说,调度器可以理解为:CPU时间划分给活跃的进程和线程,而且维护一套优先级的机制,这样更重要的工作可以更快的执行,调度器会跟踪所有ready-to-run状态的进程。调度器(调度策略)可以动态的调优先级以来提升工作负载的性能,工作负载可以做如下的区分: CPU密集型:应用程序执行繁重的计算,通常运行时间比较长,会占用大量的CPU IO密集型:应用程序执行I/O,计算不多,会占用大量的内存资源系统的最小粒度是线程,也就是说系统调度中粒度最细的就是对线程的调度。

线程优先级:

等级:1-10

优先级高优先处理

默认优先级5

执行速度

等待队列

在程序中,都会涉及到等待队列的,不管是同步交互还是异步的交互中,都会涉及它的最大队列,这样设计的核心思想是防止在客户端高并发的情况下服务端在没有队列的情况下出现雪崩以及最终导致服务端出现瘫疾,因此队列等待是非常核心并且是非常有必要的。 在等待队列中,测试需要得出如下几个性能数据:

1、队列设置的值是多少?最大可以运行的任务是多少? 2、需要测试到排队的策略机制,也就是说模拟大批量的程序进行排队,然后一个任务执行结束后,队列位置释放一个,等待中的可以立刻进入然后执行,这中间就设计到先进先出还是先进后出,以及线程优先级的设计策略

posted @ 2022-02-14 16:06  晨^O^黎  阅读(102)  评论(0编辑  收藏  举报