四种性能测试类型

4 Types of Load Tests That Give You Useful Data 翻译

Posted by John Mactavish on March 20, 2022

原文来自 k6(一个用于自动化性能测试的工具)的开发者博客,我认为文章中 对于不同种性能测试的介绍有学习价值,特此翻译。

对于任何使用过 Perl 编程语言的人来说,你可能都熟悉这句格言:“解决方法不止一种。”

不过,这不仅适用于 Perl!

根据配置性能测试的方式不同,你会看到你的网站/应用程序和硬件的反应不同。这意味着运行多种测试会产生多种结果,而更多的数据几乎总是一件好事。

以下是四种类型的性能测试配置,它们将从不同的侧面显示系统的性能,并提示你如何进一步优化。

负载测试(Load test)

当你想了解自己是否达到了性能目标时,这就是你要运行的测试类型。

你可能已经对你的系统通常会遭遇多少流量有了基本的了解,因此你可以运行负载测试以确保系统在你对它进行了更新后仍能满足性能要求(译者注:即作为回归测试)。

假设你的系统日常工作时会遇到大约 1,000 个并发用户。类似于下图所示的配置是了解你的应用程序和硬件能否经受住的好方法。

1 - 负载测试

你应该设立过一些性能目标,Load Impact 用户最喜欢的功能之一可以帮助你确保你的网站或应用程序符合这些标准 -性能阈值。

只需为 VU 加载时间、页面加载时间、失败率或任何自定义指标设置阈值,你就会看到每个测试的通过/失败指标,因此你会立即知道它什么时候不符合要求。

如果这是你第一次运行负载测试,请记住你的应用程序和基础设施可能不像你想象的那么坚如磐石。我们已经让成千上万的用户运行负载测试,这些测试很快使他们的应用程序(或暂存环境)崩溃。

但没关系!这只是意味着你的负载测试已演变为压力测试,这是我们要介绍的下一种测试配置。

压力测试

这是我们超过 200,000 名 k6 用户常用的另一个测试。

压力测试回答这样的问题:你的应用程序可以处理多少用户,什么时候会崩溃?

在此配置中,你将编写测试以产生比你的应用程序通常面临的更多的并发用户,甚至比你估计它能够处理的更多。

需要注意的是,压力测试并不意味着你会直接注入大量并发用户————这是我们接下来将介绍的另一种类型的测试。

如下例所示,压力测试可以只有几个台阶,也可以有很多台阶。无论你包含多少台阶,只要记住这种类型的测试就是要找出在推动应用程序到性能极限时会发生什么————所以不要担心过于激进。

你可能听过别人叫它“升压测试”(step up test)。这些术语本质上是一样的,所以在你和一群朋友闲谈一些正经的负载测试业务时,请记住这一点。

2 - 压力测试

尖峰测试(Spike test)

运行尖峰测试时,测试流量会短暂保持在正常水平内,然后快速上升到“尖峰”水平。请注意下面的示例中, 从 1,000 个并发用户跃升至 10,000 个并发用户的速度有多快。

3 - 尖峰测试

一个流行的例子是,你购买了大型电视活动的广告,例如超级碗或流行的歌唱比赛 (译者注:然后你的系统就会在广告播放时遭遇突发流量;中国的例子可以是春晚红包)。

你希望人们看到你的产品或网站就立即前往那里,但如果你没有针对这种情况进行测试并提前进行性能优化,这可能会导致灾难性的结果。

浸泡测试(Soak test)

如果你预期用户的平均会话持续时间较长,或者你想在短短几个小时内模拟几天的流量,那么在你的性能测试生命周期中必须要进行浸泡测试。

浸泡测试能揭露系统由于长时间处于压力下而出现的性能问题。

通过浸泡测试,你可以发现内存泄漏、资源泄漏或偶发的故障、降级等长期问题。

行业标准是按最大容量的约 80% 配置测试的并发用户数。

4 - 浸泡测试