负载测试、压力测试和性能测试——有什么区别?

如果您是开发人员、QA 工程师或从事 DevOps 工作,您就会知道运行各种性能测试以确保每次代码更新或功能添加 (a) 不会破坏系统并且 (b) 正常工作是多么重要.

但是您应该运行哪些类型的性能测试,如何区分负载测试和其他类型的测试,以及哪种测试最适合每种场景?我们将在这篇博文中讨论这些问题的答案以及更多内容。

性能测试的定义是什么?

术语“性能测试”是指检查系统行为和操作方式的测试。您的软件和基础架构的响应能力、稳定性、可扩展性、可靠性、速度和资源利用率都会在性能测试期间进行检查。正如我们稍后将看到的,不同类型的性能测试为您提供不同类型的数据。

在开始性能测试之前,您需要弄清楚系统的业务目标是什么,以便判断它是否满足消费者的需求。性能测试结束后,您可以评估许多关键性能指标 (KPI),例如虚拟用户数、每秒点击数、每秒错误数、响应时间、延迟和每秒字节数(吞吐量),以及它们之间的相关性。您可以使用报告检测瓶颈、故障和错误,然后决定需要做什么。

什么时候适合使用性能测试?

当您想要检查您的网站或应用程序的速度时,请运行性能测试,其中可能包括测试服务器、数据库、网络和其他系统。如果您使用瀑布流程,您应该至少在每次发布新版本时进行测试。如果您要敏捷并左移,则应经常进行测试。

下图提供了 Blaze Meter 性能测试报告的示例。这是一个成功的测试,因为响应时间不会随着用户数量的增加而改变,错误率仍然很低,每秒的点击次数随着用户数量的增加而增加但保持一致。

负载测试的定义是什么?

负载测试是一种性能测试,它检查当大量虚拟用户在一段时间内同时进行事务时系统的性能。换句话说,该测试评估系统处理高负载量的能力。有几种不同类型的开源负载测试工具,其中最突出的是 JMeter。

什么时候应该使用负载测试?

当您需要知道您的系统可以容纳多少用户时,请运行负载测试。您可以设置测试来模拟各种用户场景,每个场景都侧重于系统的不同方面(例如,结帐页面)。您可以看到负载来自不同地理位置时的行为方式,或者负载如何增长然后稳定到一致的水平。负载测试应该经常执行,以确保您的系统始终是最新的,并且它们应该包含在您的持续集成周期中(使用 Jenkins 和 Taurus 等工具)。

在 JMeter 中,可以将负载测试可视化,如下图所示。此测试检查每 30 秒添加 100 个用户,直到成员总数达到 1,000。完成步进过程需要 300 秒。当线程数达到 1000 时,它们将在接下来的 5 分钟内全部继续运行并同时命中服务器。

压力测试究竟是什么?

压力测试是一种性能测试,它通过对系统的过度要求来检查系统的上限。压力测试着眼于系统在高负载下的反应以及在恢复正常运行后如何恢复。吞吐量和反应时间等关键性能指标 (KPI) 是否与负载峰值之前相同?内存泄漏、减速、安全问题和数据损坏都在压力测试期间进行调查。

通过定义具有大量并发虚拟用户的测试用例,可以使用负载测试工具进行压力测试。有几种负载测试,就像有不同类型的性能测试一样。峰值测试是指您的压力测试包括虚拟用户数量的快速、高增长。浸泡测试是指您进行长时间的压力测试,以使用缓慢的加速来评估系统的长期生存能力。

以下示例说明了如何使用 JMeter 的“终极线程组”组件来产生流量峰值。测试开始三分钟后,我们预计系统会堵塞。使用“初始延迟”参数,我们指定要在特定时间间隔内引入的额外线程。

什么时候应该使用压力测试?

在大型活动(例如黑色星期五)、需求量大的热门表演的门票销售或选举之前,请在您的网站或应用程序上运行压力测试。我们建议定期对您的系统进行压力测试,以确保您了解其耐用性。这为您提供了更多时间和资源来修复瓶颈,并确保您始终为不可预见的流量增加做好准备。

结论

性能测试是一种确定计算机、网络或设备速度的方法。

负载测试是一种在网站或应用程序上模拟真实负载的技术。

压力测试决定了系统的稳定性和弹性。

网站服务器、数据库和网络都可以从性能测试中受益。

客户端/服务器和基于 Web 的应用程序经过负载测试。

压力测试涉及让您的网站通过意想不到的流量。

性能测试负载测试压力测试
Performance Testing is a superset of load and stress testing它是性能测试的一个子集。It is a subset of performance testing.
协助建立应用程序的基准和标准。设置应用的 SLA,看看系统如何处理重负载来确定系统的上限。To see how the system reacts to high loads and how it rebounds from failure.
性能测试的目标是查看应用程序在正常条件下的性能。负载测试的主要目标是增加 Web 应用程序的负载。Stress testing ensures that servers do not crash when they are suddenly subjected to a high load for an extended period of time.
该测试验证产品的资源利用率、可用性和可靠性。峰值性能、服务器数量和响应时间是负载测试中检查的属性。This type of testing examines stability,response time, and other factors.
在性能测试中,可以在低于和高于中断阈值的情况下找到负载限制。在负载测试中,负载限制是一个断点。The load limit in stress testing is higher than the break threshold.
检查并发用户、HTTP 连接或合适的响应时间是性能测试的示例。负载测试示例包括通过更改大量数据对文字处理器进行测试。通过发送大量数据,您可以测试打印机。检查具有数万用户的邮件服务器。Casually shutting down and restarting ports on a big network is an example of stress testing.
性能测试的目的是什么?
 - 确保应用程序正常运行。
- 验证以确保满足业务的绩效要求。
- 识别、评估和解决性能问题 验证硬件是否能够处理预期负载。
 -针对应用程序的未来需求进行容量规划。
负载测试的目的是什么?- 找到任何其他测试方法都无法找到的错误。例如,内存泄漏、缺陷、缓冲区溢出和其他问题。
- 确保应用程序可以达到在性能期间确定的性能点testing.To确定应用程序的运行能力
- 确定当前的基础设施是否足以运行应用程序。
- 一个应用程序可以容纳的最大并发用户数,以及它的可扩展性,允许更多用户访问它。
压力测试的目的是什么?
- 它帮助测试单元在发生故障时使系统通过其步伐。
- 验证系统是否在崩溃前存储了数据。-查看是否有任何意外故障对系统安全构成威胁。