负载、性能测试和容量测试的关系和区别

性能测试:

举例说明:

针对一个网站进行测试,模拟10到50个用户就是在进行常规性能测试,用户增加到1000乃至上万就变成了压力/负载测试。如果同时对系统进行大量的数据查询操作,就包含了强度测试。

负载测试:负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。

强度测试:强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况。

容量测试:确定系统可处理同时在线的最大用户数.

性能测试(Performance Test):通常收集所有和测试有关的所有性能,通常被不同人在不同场合下进行使用。

关注点:how much和how fast

负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。

关注点:how much

强度测试(Stress Test): 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方。包括

Spike testing:短时间的极端负载测试

Extreme testing:在过量用户下的负载测试

Hammer testing:连续执行所有能做的操作

容量测试(Volume Test):确定系统可处理同时在线的最大用户数

关注点:how much(而不是how fast)

容量测试,通常和数据库有关,容量和负载的区别在于:容量关注的是大容量,而不需要表现实际的使用。

其中,容量测试、负载测试、强度测试的英文解释为:

Volume Testing = Large amounts of data

Load Testing = Large amount of users

Stress Testing = Too many users, too much data, too little time and too little room

性能测试,表示在一个给定的基准下,能执行的最好情况。例如,在没有负重的情况下,你跑100米需要花多少时间(这边,没有负重是基准)?

负载测试,也是性能测试,但是他是在不同的负载下的。对于刚才那个例子,如果扩展为:在50公斤、100公斤……等情况下,你跑100米需要花多少时间?

强度测试,是在强度情况下的性能测试。对于刚才那个例子,如果改为:在一阵强风的情况下,你在负重或没有负重的情况下,跑100米需要花多少时间?

压力测试是为了发现系统能支持的最大负载,他的前提是要求系统性能处在可以接受的范围内,比如经常规定的叶面3秒钟内响应;

所以一句话概括就是:在性能可以接受的前提下,测试系统可以支持的最大负载。

性能测试是为了检查系统的反映,运行速度等性能指标,他的前提是要求在一定负载下,如检查一个网站在100人同时在线的情况下的性能指标,每个用户是否都还可以正常的完成操作等。

概括就是:在不同负载下(负载一定)时,通过一些系统参数(如反应时间等)检查系统的运行情况;

比如我们说某个网站的性能差,严格上应该说‘在N人同时在线情况下,这个站点性能很差)

1.强度测试或压力测试

强度或压力测试是在一种需要异常数量、频率或资源的方式下,执行可重复的负载测试,以检查程序对异常情况的抵抗能力,找出性能瓶颈。异常情况,主要指那些峰值、极限值、大量数据的长时间处理等,包括:

连接或模拟了最大(实际或实际允许)数量的客户机;

所有客户机在长时间内执行相同的、性能可能最不稳定的重要业务功能;

已达到最大的数据库大小,而且同时执行多个查询或报表事务

当中断的正常频率为每秒一至两个时,运行每秒产生十个中断的测试用例;

运行可能导致虚存操作系统崩溃或大量数据对磁盘进行存取操作的测试用例等。

压力测试可以分为稳定性测试和破坏性测试:

稳定性压力测试。在选定的压力值下,持续运行24小时以上的测试。通过压力测试,可以考察各项性能指标是否在指定范围内,有无内存泄漏、有无功能性故障等。

破坏性压力测试。在压力稳定性测试中可能会出现一些问题,如系统性能明显降低,但很难暴露出其真实的原因。通过破坏性不断加压的手段,往往能快速造成系统的崩溃或让问题明显的暴露出来.

在压力测试中,会给程序加上一些跟踪机制(如log、日志等),然后查看监视系统、服务器等性能的日志文件是必要的,找出问题出现的关键时间或检查测试运行参数,通过分析问题或参数从而有目的地调整测试策略或测试环境,使压力测试结果真实地反映出软件的性能。

2.性能测试

系统的性能指标,一般赢在产品需求文档中有明确定义,有三种形式描述软件系统的性能指标:

给出产品性能的主要指标,如在100000记录中查询一个特定数据的时间为0.5秒。

以某个已发布的版本为基线,如比上一个版本的性能提高30-50%。和竞争对手的同类产品比较。

性能测试,根据其目的分为:产品性能质量测试,通过测试,决定产品是否达到产品规格书所要求的性能指标(非功能性需求)

基准值测试,通过对当前产品的性能测试,确定产品具体的性能指标,建立性能指标基准。基准值, 作为后继产品发布的性能参考(在新版本中,性能指标要求只升不降)或和竞争对手产品比较的参考。性能规划测试,通过不断的测试,确定所需要的硬件配置(内 存、CPU、网络等)、软件配置,以满足实现定义的性能指标要求。这种测试,对于软件系统的部署是非常有意义的。同时,也可以进一步了解硬件参数、软件参 数对系统性能的影响程度,从而保证系统具有很好的扩充性或事先制定较好的系统增容的计划。

性能测试的方法,主要有:

稳定压力加载,一次性将负载加到某个水平,持续一段时间,也称为flat测试。逐渐加载或交替加载到某个负载水平,也称为“ramp-up”测试。

性能测试,一般都通过测试工具来模拟人为的操作而进行。性能测试的重点在于测试环境的建立、前 期数据的设计与后期数据的分析。因为性能测试需要获得一定特定条件下(如100、200、500、1000个实时的连接)的系统占用资源(CPU、内存 等)数据或系统行为表现,而且还要依靠测试工具或软件系统记录下这些指标变化的数据结果。例如,如果对一个Browser/Server结构的网络实时在 线的培训系统软件进行测试,系统性能焦点是在不同数量的并发连接下,服务器的CPU、内存的占用率、客户端的响应时间等,如表1所示。

表1 HTTP连接性能表


HTTP


1´5


1´50


1´100


1´300


1´500


1´600


1´700


1´800


1´900


……


10´5


60´5


CPU (%)


1.2


2.5


4.5


11


20


20


28


23


25


… 


4


24


物理内存(M)


55


45


38


38


32


48


75


46


37


… 


178


232


虚拟内存(M)


836


841


831


855


865


858


867


874


884


… 


871


1,472


加入时间(s)


12.04


12.14


11.6


15.48


126.1


104.76


168.1


123.7


218.11


… 


12.01


9.17


建会时间(s)


12.01


11.35


12.38


13.32


13.63


14.06


16.35


14.98


17.68


… 


10.9


11.39


延时(s)

…….














断开时间(s)


8.58


9.11


7.94


9.09


8.26


8.35


8.46


11.41


11.1


… 


8.79


8.22

测试过程中,并发连接的不断增加(负载的增加)在系统性能上的表现越来越明显。在系统性能测试 时,加载过程中,每到一个测试点时须让系统平稳运行一段时间后再获取数据,以消除不同测试点的相互影响。从表中可以看出,同样是300个用户,1´300 与60´5的性能表现差别很大,加载的方式对系统性能影响也较大,所以,尽量模拟不同的加载方式来进行系统的性能测试。除此之外,还可以测试TCP、 HTTPS等不同连接方式下的数据,进行比较。通过比较和分析,可以清楚知道系统的性能状况,以及什么样的条件下系统性能达到最佳状况、什么地方是性能的 瓶颈。性能测试要求测试环境应尽量与产品运行环境保持一致,应单独运行,尽量避免与其他软件同时使用。

通过性能测试,如果找到了系统的极限或苛刻的环境中系统的性能表现,在一定的程度上,我们完成 了负载测试和容量测试。容量可以看作系统性能指标中一个特定环境下的一个特定性能指标,即设定的界限或极限值。容量测试目的是通过测试预先分析出反映软件 系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),

如某个电子商务网站所能承受的、同时进行交易或结算的在线用户数。知道了系统的实际容量,压力测试、容量测试和性能测试的关系

压力测试可以看作是容量测试、性能测试和可靠性测试的一种手段,不是直接的测试目标。压力测试 的重点在于发现功能性测试所不易发现的系统方面的缺陷。而容量测试和性能测试是系统测试的主要目标内容,也就是确定软件产品或系统的非功能性方面的质量特 征,包括具体的特征值。容量测试和性能测试更着力于提供性能与容量方面的数据,为软件系统部署、维护、质量改进服务,并可以帮助市场定位、销售人员对客户 的解释、广告宣传等服务。

压力测试、容量测试、性能测试,测试的方法相似、相通,在实际测试工作中,往往结合起来进行,以提高测试效率。一般会设置专门的性能测试实验室,完成这些工作。即使用虚拟的手段模拟实际操作,所需要的客户端有时还是很大的,所以性能测试实验室的投资较大。

性能测试指标-中英对照

1、SQL数据库:

1 User 0 Connections (用户连接数,也就是数据库的连接数量);

2 Number of deadlocks/Sec/-Total (数据库死锁)

3 Memory\ Availalle Mbyte 内存监控 (可用内存)

4 Physicsdisk \disk time \-Total(磁盘读写总时间)(出现瓶颈时检查读磁盘的时间长还是写磁盘的时间长)

5 Butter Caile hit(数据库缓存的选取命中率)

6 数据库的命中率不能低于92%

2、Web Server:

1 Processor \ Processon time \ Tatol cpu时间

2 Memory \ Availalle MbyteAvai 应用服务器的内存

3 Requst Quened 进入HTTP队列的时间;队列/每秒

4 Total request 总请求数时间

5 Avg Rps 平均每秒钟响应次数= 总请求时间 / 秒数

6 Avg time to last byte per terstion (mstes)平均每秒迭代次数;上一个页面到下一个页面的时间是你录入角本的一个过程的执行

7 Http Error 无效请求次数

8 Send 发送请求次数字节数

3、Webload的压力参数:

1 Load Size(压力规模大小)

2 Round Time(请求时间)

3 Rounds (请求数)

4 Successful Rounds(成功的请求)

5 Failed Rounds (失败的请求)

6 Rounds Per Second (每秒请求次数)(是指你录入角本的任务在一秒中执行的次数,类似Avg time to last byte per terstion (mstes))

7 Successful Rounds Per Second(每秒成功的请求次数)

8 Failed Rounds Per Second(每秒失败的请求次数)

9 Page Time 页面响应时间

10 Pages (页面数)

l1 Pages Per Second (每秒页面响应数)

l2 H it Time(点击时间)

l3 Hits(点击次数,也可以是请求次数,不过有一些不一样)

l4 Successful Hits (成功的点击次数)

l5 Failed Hits (失败的点击次数)

l6 Hits Per Second (每秒点击数)

l7 Successful Hits Per Second (每秒成功的点击次数)

l8 Failed Hits Per Second (每秒失败的点击次数)

l9 Attempted Connections (尝试链接数)

20 Successful Connections(成功的连接数)

2l Failed Connections(失败的连接数)

22 Connect Time(连接时间)

23 Process Time(系统执行时间,一般用来显示CPU的运算量,服务器端与客户端都要记录)

24 Receive Time(接受时间)

25 Send Time(请求时间)

26 Time To First Byte ()

27 Throughput (Bytes Per Second)()

28 Response Time(回应时间)

29 Response Data Size()

30 Responses()

31 Transactions per second(每秒处理事务数) http连接Get or Post方法的事务数

32 Rounds per second(每秒完成数) 每秒完全执行Agenda〔代理〕的数量

33 Throughput(吞吐量)(bytes per second〔每秒字节数〕) 测试服务器每秒传送的字节数

34 Round Time 完成一次事务所用的必要时间,单位是秒

35 Transaction Time是完成一次事务的必须时间。事务:包括连接时间,发送、响应和处理时间。

36 Connect Time 客户端到测试服务器的一个连接完成的时间,单位秒(包括建立和收到的TCP/IP时间)

37 Send Time 是将事务写入测试服务器的缓冲必要时间 ,单位秒

38 Response Time 是客户端请求接受测试服务器响应的必要时间,单位秒

39 Process Time 处理数据的必要时间

40 Load Size 负载测试时开启的虚拟客户数量〕

41 Rounds 在测试会话期间执行议程脚本的时间数

42 Attempted Connections 尝试连接测试服务器的数量

43 HTTP Response Status 每一个http响应被结束的时间数量

44 Response Data Size 由测试服务器发送的响应大小,单位字节。

网站压力测试指标

1. 响应时间

2.点击数

3.吞吐量(任一秒上从服务器获得的数据量)

4.并发用户.

5.资源利用率(内存.CPU的利用率)

6.每秒连接数(每秒打开的新的TCP/IP连接数)

时间: 2024-07-30 10:19:00

负载、性能测试和容量测试的关系和区别的相关文章

性能测试、压力测试和负载测试的关系

一.性能测试和压力测试是什么关系?压力测试和负载测试什么关系? 1)压力测试是性能测试的一部分 2)负载测试是逐步增加系统的负载,测试系统性能的变化,最终确定满足性能指标的情况下,系统所能承受的最大负载量,其目的是找出系统的极限在哪,找出系统能承担多少并发,承担多少数据.是极限测试.找到极限就停.   压力测试也是逐步增加系统负载,测试系统性能的变化,最终确定在什么条件下,系统性能属于失效状态,找出系统在什么情况下会崩溃,获得系统能提供最大服务级别的测试.是破坏性测试.找到极限后越过极限继续测试

负载测试丶容量测试丶强度测试的区别 ?

性能测试(或称多用户并发性能测试).负载测试.强度测试.容量测试是性能测试领域里的几个方面,但是概念很容易混淆.下面将几个概念进行介绍. 性能测试(Performance Test):通常收集所有和测试有关的所有性能,通常被不同人在不同场合下进行使用. 关注点:how much和how fast 负载测试(逐渐增加模拟用户的数量):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担. 关注点:how much 强度测试(大数据量.大量并发用户): 强度测试是一种性能测试,他在系统

Jmeter性能测试2-性能测试常见分类

性能测试包括:负载测试.强度测试和容量测试等. 负载测试(Load Testing): 负载测试是指通过测试系统在资源超负荷情况下的表现,来发现设计上的错误或验证系统的负载能力.在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力.负载测试的目标是确保系统在超出最大预期工作量的情况下仍能正常运行.此外,负载测试还要评估性能特征,如响应时长,事物处理速率和其他与时间相关的性能指标. 压力测试(Stress Testing): 在软件工

压力/负载/性能测试之间的区别

压力测试(StressTesting),也称为强度测试,通过模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能.可靠性.稳定性等.压力测试需要确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别.通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受. 负载测试(Load Testing)通常被定义为给被测系统加上它所能操作的最大任务数的过程,负载测试有时也会被称为"容量测试"或者"耐久

浅谈容量测试与容量规划

在性能测试中,需要根据具体的性能需求和系统架构等情况,采用不同的测试策略,其中最常见的策略就有容量测试. 这篇博客,就来聊聊容量测试以及容量规划的一些内容... 一.什么是容量?如何理解? 在开始之前,有一点需要知道:系统的处理能力是有限的! 1.容量定义 所谓容量,即系统处于最大负载状态或某项指标达到所能接受的最大阈值下对请求的最大处理能力. 2.如何理解 ①.系统的容量(处理能力)是有限的: ②.容量是可度量的: 二.如何统计容量指标? 1.统计维度 一般来说,可以从如下两个维度来定量系统的

LTP--linux稳定性测试 linux性能测试 ltp压力测试 ltp-pan

LTP--linux稳定性测试 linux性能测试 ltp压力测试 zhangzj1030关注14人评论33710人阅读2011-12-09 12:07:45 说明:在写这篇文章之前,本人也不曾了解LTP是干嘛的,直到参加一次技术沙龙才了解到它是用来对linux系统进行稳定性测试的一个开源工具,演讲人是世纪佳缘运维部门的技术老总!平时我们这些做运维朋友们都很少涉及到系统的测试,因为觉得linux本生就很稳定,因此就没有必要去做测试,但是系统是更新的,同样linux的内核是也在更新的,那新系统是否

对于软件开发中开发人员与测试人员关系的理解

在软件开发中都会有开发人员(以下简称开发)和测试人员(以下简称测试),在一些小型公司可能并没有测试,仅仅是开发兼任测试.在这里我仅针对于有专业的测试和专业的开发的项目. 每个公司应该都有考核机制,对于开发和测试的考核实际上很难量化,通常来讲大的方向就是开发所负责模块的bug数,对于测试来讲就是测出来的bug数,但这真的有效吗?这也许对开发有约束力,理论上开发是能够自己控制bug数的,如果从产生的bug数来评判开发的绩效还算有效,这样开发自然就会把代码写得更加认真.但如果根据测试测出来的bug数来

答读者问(7):有关实习、毕业论文及软件开发和测试的关系等问题

最近收到一位研究生朋友的邮件,让我想到自己研究生毕业之前,也曾有过很多的疑惑,希望得到过来人的解答.互联网不仅是我们最好的老师,同时也是最好的桥梁.我们都要感谢并善于利用它. 闲话不说,言归正传.邮件原文如下: 周前辈,您好 我是XXX研究生,我叫XXX.专业是信息与通信工程.现在研二,过了暑假马上就研三了.我在CSDN上无意间看到您的一些文章,写的很好,感触很多.所以就一直在关注您! 下面我简单说下我的情况,我本科和研究生到目前,还没有工作过,也没有实习过.这个暑假,我找了一个实习,是XXX公

数组与ArrayList的关系与区别

数组与ArrayList的关系与区别 一.数组与ArrayList的主要区别:效率.类型识别和primitive type.数组([]):最高效:但是其容量固定且无法动态改变:ArrayList:容量可动态增长:但牺牲效率:建议:首先使用数组,无法确定数组大小时才使用ArrayList! 1.效率:数组扩容是对ArrayList效率影响比较大的一个因素.每当执行Add.AddRange.Insert.InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容