负载测试 vs 压力测试

81

负载测试和压力测试有什么区别?


1
我发现自己也在问同样的问题,并意识到性能测试类型有许多定义,但没有标准的“官方”定义。 - Dominik Antal
6
我建议关闭这个问题,因为它不属于编程范畴。它涉及到测试类型的问题,而这个主题在sqa.stackexchange.com上已经有很多问答了。 - AdrianHHH
你可以在这里找到关于以下问题的答案:性能测试 vs 负载测试 vs 压力测试 - Jerome L
3
一道被关闭的问题有72票和110K次浏览。这应该让那些关闭它的人重新思考一下... - brain storm
我同意,谢谢 @brainstorm - Neeta
8个回答

111

维基百科关于负载测试(粗体为我的强调):

[...]负载测试通常用于了解系统在特定预期负载下的行为。这个负载可以是应用程序上执行特定数量交易的预期并发用户数,在设置的持续时间内。此测试将提供所有重要业务关键事务的响应时间[...]

以及关于压力测试

了解系统容量的上限。这种测试是为了确定系统在极端负载方面的健壮性,并帮助应用程序管理员确定如果当前负载远高于预期最大值,系统是否能够足够地运行。

所以,最重要的是:如果您正在测试正常、预期的负载(您知道系统将同时被多达100个用户使用),这就是{负载测试}。但当您想确定系统在极端负载(DoS、Slashdot效应)下的行为方式以及什么时候会瘫痪,这就是{压力测试}。

3
所以它们基本上是相同的东西,但是负载是在正常负载下,而压力超过了正常负载?它们不是用来测试系统不同方面的吗? - Neeta
11
@Neeta:负载测试通过在请求之间插入随机暂停来模拟真实用户。压力测试只需尽可能执行多个请求。但测试场景可以相同。 - Tomasz Nurkiewicz
@Neeta,用户2197712的回答更为恰当。我的理解是:压力测试是在异常环境下查看系统在正常输入下的行为,而负载测试是在正常环境下查看系统在异常输入下的行为。 - ADTC

19
术语“压力测试”和“负载测试”经常被软件测试工程师交替使用,但它们实际上是非常不同的。 压力测试 在压力测试中,我们试图通过超负荷使用系统资源或剥夺其资源(在这种情况下有时称为负面测试)来破坏被测试的系统。这种疯狂的主要目的是确保系统失败并恢复正常 - 这种质量被称为可恢复性。 或 压力测试是通过将您的程序/系统(SUT)暴露于减少的资源并运行标准功能测试来检查SUT的行为的过程。这样做的想法是暴露在正常条件下不会出现的问题。例如,多线程程序在正常条件下可能工作正常,但在CPU可用性降低的情况下,时间问题会不同,SUT会崩溃。在压力测试中最常见的减少系统资源的类型是CPU,内存和外部磁盘空间。在执行压力测试时,通常称减少这三个资源的工具分别为EatCPU,EatMem和EatDisk。
而另一方面负载测试 在负载测试中,将你的SUT置于重负载下,通常是通过模拟多个用户(使用Load runner),其中“用户”可以是人类用户或虚拟/编程用户。负载测试最常见的例子涉及将基于Web或网络的应用程序同时命中数千个用户。这通常是通过模拟用户的程序来实现的。负载测试有两个主要目的:确定SUT的性能特征,以及确定SUT是否会“优雅地”损坏。 在Web站点的情况下,您将使用负载测试来确定系统可以处理多少用户并仍然具有足够的性能,并确定在极端负载的情况下会发生什么 - Web站点是否为用户生成“过忙”消息,还是Web服务器会崩溃。

10

负载测试: 负载测试旨在通过不断增加系统的负载,直到达到阈值限制来测试系统。

示例: 例如,为了检查应用程序的电子邮件功能,可以同时向其洪水般地涌入1000个用户。现在,1000个用户可以以多种不同的方式触发电子邮件交易(读取、发送、删除、转发、回复)。如果我们每个用户每小时进行一次交易,那么每小时将有1000次交易。通过模拟每个用户10次交易,我们可以占用10000次交易/小时的电子邮件服务器进行负载测试。

压力测试: 在压力测试中,会进行各种任务以过载现有资源,试图使系统崩溃。

示例: 例如,像OpenOffice.org的Writer1.1.0这样的文字处理器用于开发信函、演示文稿、电子表格等等。我们进行压力测试的目的是通过超量的字符来测试它。

为了做到这一点,我们将反复粘贴一行数据,直到它达到处理大量文本的阈值限制。一旦字符大小达到65535个字符,它将拒绝接受更多数据。对Writer 1.1.0进行压力测试的结果表明,它在压力下不会崩溃,并且能够优雅地处理这种情况,这确保了应用程序即使在严格的压力条件下也能正常工作。


3

->将应用程序测试的最大用户数和输入定义为负载测试。而将应用程序测试的用户数和输入超过最大值时,被定义为压力测试

->在负载测试中,我们根据用户数量来衡量系统性能。而在压力测试中,我们衡量系统的断点。

->负载测试是针对给定负载要求测试应用程序,可能包括以下任何一个标准:

 .Total number of users.

 .Response Time

 .Through Put

以下是一些检查服务器/应用程序状态的参数。

-> 压力测试是测试应用程序是否能够承受意外负载。它包括:

 .Vusers

 .Think-Time

例子:

如果一个应用程序是为500个用户构建的,则在负载测试中,我们会检查最多500个用户,并且在压力测试中,我们会检查大于500个用户。


2

负载测试 = 在服务器上放置指定数量的负载,持续一定时间。例如100个同时用户持续10分钟。确保软件的稳定性。 压力测试 = 逐渐增加负载量,直到软件崩溃。例如10个同时用户,每2分钟增加一个用户,直到服务器崩溃。

举个比喻来说,这就像举重:你“最大化”你的重量,看看你能做多少次(压力测试),然后在常规锻炼中,你会选择你最大值的85%进行3组10次的训练(负载测试)。


1

负载测试:负载测试旨在通过不断稳定地增加系统的负载,直到达到阈值的时间来测试系统。

压力测试:在压力测试下,会进行各种活动以超载现有资源并试图使系统崩溃。

基本区别如下:

点击此处查看确切的区别


0

负载测试:大量用户 压力测试:太多用户,太多数据,时间太少,空间太小


-1

以最大负载测试软件。 超出软件负载的压力。或者确定软件的破坏点。


4
与之前的回答相比,你的回答有什么新的内容? - Stepan Novikov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接