飞道的博客

性能测试笔记20200229

238人阅读  评论(0)

前言

文章大量采用51testing论坛中性能测试相关的内容做出笔迹,原处请访问:http://www.51testing.com/html/58/category-catid-258.html

1.什么是性能测试

随着软件测试行业的快速发展,现代的软件系统越来越负责,功能越来越多,测试人员除了需要保证基本的功能测试质量,性能也越来越受人们关注了。
软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展现出来的及时性,一般通过实践或者其他指标来衡量。通常使用某些测试工具或手段来模拟生产运行是的业务压力金额用户使用场景,验证系统的性能是否满足预先定义的要求,这就是性能测试。

2.性能测试的特点

性能测试主要包括以下3个特点:

  • 在给定环境和场景中进行的测试活动
  • 根据测试结果评判是否存在性能问题
  • 如果存在性能问题,需要定位瓶颈,并提出改进的建议

从本质上讲和功能测试有诸多相同之处,都是为了找出问题,但是解决问题能力上的要求更高。

3.性能测试测试的对象或性能监控的指标

3.1.响应时间

我们往往用时间的快慢来判断系统当前所处的状态,最直观的感受就是我们向服务器发起了某个请求,在没有缓存的情况下,服务器返回请求所花费的时间总和就等于响应时间。例如,我们向51testing论坛发起登录请求,1秒之后我们进入登录成功页面,那么1秒就是我们所花费的响应时间。
客户感受到的响应时间=客户端响应时间+网络响应时间+服务器响应时间。
如图所示,响应时间= CT+(N1+N2+N3)+(N4+N5+N6)+WT+AT+DT

3.1.1.客户端响应时间

CT=Client Time对于瘦客户端可以忽略不计,对于胖客户端,例如Ajax,HTML5+ AngularJs+Bootstrap,由于客户端内嵌了大量的逻辑处理,消耗的时间可能很长,需要关注。

3.1.2.网络响应时间

指网络传输交易请求和交易结果所消耗的时间,可以分为以下两个部分。
N1+N2+N3=客户端请求的网络延迟
N4+N5+N6=服务器响应的网络延迟

3.1.3.服务器响应时间

服务器完成交易请求执行的时间,服务器端的响应时间可以度量服务器的处理能力。
WT=Web Server Time
AT=App Server Time
DT=Database Time

3.2.并发数

我们可以通过有多少用户在使用系统了解系统的承载能力,客户总是希望越多越好,但系统总是有极限的。这里有三个概念需要加以区分。

3.2.1.系统用户数

当前系统注册用户总数。例如,51testing论坛有超过60万的注册用户,有些用户非常活跃,经常登录并留下“足迹”,而有的用户很少访问,甚至自己都忘记曾经注册过的 账号了。

3.2.2.在线用户数

当前统计时正在访问的用户总数。例如,51testing论坛每天有超过12万的在线用户数,但他们不一定会给网站造成巨大的压力,大多数用户只是浏览网页信息,并没有向服务器发起过多请求。

3.2.3.并发用户数

同一时刻让服务器产生压力的用户数。例如,51testing论坛的12万在线用户中有20%正在论坛发帖讨论,那么服务器将承受这部分用户的压力。

3.3.吞吐量

严格意义上来讲可以把吞吐量分为“吞吐量”和“吞吐率”两个概念讲解。

3.3.1.吞吐量

指在一次性能测试过程中网络上传输的数据量的总和,“吞”进去的是请求,“吐”出来的是结果,吞吐量反应的就是服务器的“饭量”,也就是服务器承受的压力。例如,在51testing论坛浏览帖子比发表评论需要更高的网络吞吐量。

3.3.2.吞吐率

通常指单位时间内网络上传输的数据量,也可以指单位时间内处理的客户端请求数量/服务器返回的数据量。它的定义相对灵活,在数据库层面,吞吐率指的是在单位时间内,不同SQL语句的执行数量;从用户层面来讲,吞吐率也可以用“页面数/秒”、“业务数/小时”、“访问人数/天”等指标来衡量。

【特别说明】:吞吐率=吞吐量/传输时间,例如,访问51testing论坛首页,首页大小按2MB计算,如果每秒有1000个首页访问量,那么吞吐率就约等于2GB/s(1GB=1024MB)。

3.4.每秒通过事务数(TPS:Transaction Per Second)

每秒通过事务数是指每秒钟系统能够处理的交易或事务的数量,它是衡量系统处理能力的重要指标。
交易和事务是人为规定的,一个交易或者事务可能包含多个请求,例如,用户注册可以包含多个字段验证请求,而用户注册的TPS等于每秒钟能够注册的用户数量,如果每秒钟能够注册10个用户,那么TPS=10。
【特别说明】:TPS和吞吐率在性能测试中的曲线呈正相关,以吞吐率的案例来看TPS,如果吞吐率指的就是每秒访问论坛首页的次数,那么TPS=1000次。

3.5.每秒单击数

每秒钟用户向Web服务器提交的HTTP请求数,这是Web应用特有的一个指标。如果把每次单击定义为一次交易,那么单击率和TPS就是一个概念,但事实上一个交易往往由若干请求数组成,请求当中包括页面HTML、css、图片等,甚至可能包括多个页面,也就是说单击数和TPS一般不会一致。

3.6.资源利用率

指的是对不同系统资源的使用程度,主要针对Web服务器、应用服务器、数据库服务器、网络情况等。
常见的资源有CUP占用率、内存使用率、磁盘I/O、网络。

3.6.1.CPU

CPU就像人的大脑,主要进行各种判断和处理,能反应计算机的繁忙程度,如果CPU占用率达到100%,此时用户就无法做任何操作了。

3.6.2.内存

内存就像人的某个记忆区域,将信息收集和存放起来,此区域能够存放的信息量越多,计算机的反应也就越快,但关机后该区域的信息将被清空。(从内存读取数据要比从硬盘上快得多。)

3.6.3.磁盘I/O

I/O是指磁盘的输入和输出(Input和Output的缩写),读IO,就是发指令,从磁盘读取某段扇区的内容。指令一般是通知磁盘开始扇区位置,然后给出需要从这个初始扇区往后读取的连续扇区个数,同时给出动作是读,还是写。磁盘收到这条指令,就会按照指令的要求,读或者写数据。控制器发出的这种指令+数据,就是一次IO,读或者写。重点关注的是IO交换频率和磁盘队列长度。

3.6.4.网络

主要指网络流量,看是否是网络带宽的瓶颈。例如,论坛首页2GB的吞吐量将消耗掉16Gbps的带宽。

4.性能测试的分类

4.1.性能测试(狭义)

性能测试方法是在特定的运行环境下,通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。
这种性能测试方法主要目的是为了验证系统是否具有自己所宣称的能力,这种方法是对系统性能已经有了解的前提,并对需求有明确的目标,在已经确定的环境下进行的。

4.2.基准测试

在一定的软件、硬件和网络环境下,模拟一定数量的用户运行一种或多种业务,将测试结果作为基线数据,供后续测试活动参考。
这种性能测试方法的主要目的是找出系统的基本性能情况,为后续调优做准备。
【特别说明】:性能测试(狭义)在有的公司也被看作是基准测试,但在概念上其实是不同的,前者是知晓性能指标,对比实际和预期的差异,而后者则是通过度量得到性能指标,为调优提供依据。

4.3.负载测试

通过在被测系统上不断加压,直到性能指标达到极限,例如“响应时间”超过预定指标或某种资源已经达到饱和状态。
这种性能测试方法主要目的是找出系统处理能力的极限,这种方法是在不了解系统能力的前提下,在给定的测试环境中进行,看系统在什么时候已经超出“我的要求”或系统崩溃。

举例:找一位同学进行爬楼梯测验,最先要求同学从1楼爬到10楼扛5斤米,发现同学没有问题后接着要求从1楼爬到10楼扛10斤米,逐次增加扛大米的斤数,直至扛不动为止。假设该同学扛40斤米爬楼梯的时候脸已经憋得通红(已经尽全力了),但还是顺利地扛到了10楼,而增加到46斤米的时候彻底累垮,没能到达10楼,我们就可以说扛45斤米爬10层就是该同学的极限了。

4.4.压力测试

压力测试也称为强度测试,主要测试系统在一定饱和状态下,例如CPU、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误。
这种性能测试方法主要目的是检查系统处于压力性能下时,应用的表现。这种性能测试一般通过模拟负载等方法,使得系统的资源使用达到较高的水平。一般用于测试系统的稳定性检查。
举例:我们还是以负载测试中爬楼梯的同学为例,如果扛45斤是该同学的极限,那么扛40斤从1楼到10楼,持续一段时间(4小时),看该同学能不能坚持住,这就是所谓压力性能下的表现。

4.5.并发测试

并发测试方法通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题。
这种性能测试方法主要目的是发现系统中可能隐藏的并发访问时的问题。主要关注系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源争用方面的问题。

4.6.配置测试

配置测试方法通过对被测系统的软/硬件环境的调整,了解各种不同配置对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。
这种性能测试方法的主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作。适合对系统性能状况有初步了解后进行,一般用于性能调优和规划能力

4.7.可靠性测试

在系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
这种性能测试方法的主要目的是验证是否支持长期稳定的运行,需要在压力下持续一段时间,在测试过程中关注系统的运行状况。


转载:https://blog.csdn.net/weixin_44356002/article/details/104575091
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场