应对 618、双十一等大促期间的高负载,API 性能测试应该怎么做?负载测试、基线测试、冒烟测试、浸泡测试、峰值测试和尖峰测试详解
随着应用程序和服务交付速度的不断提高,在按时交付应用程序的竞赛中,性能测试往往会退居其次。但是,在节假日期间,购物额都会大幅增长。在这种一年中的成败时刻,公司是无法接受他们的应用程序在高负载下变得不可靠的。
企业需要优先考虑其 API 的性能。Web 应用程序的性能会直接影响到在线销售。如果一个网站在假期(例如圣诞节)期间无法处理巨大的订单量,将导致惊人的收入损失。性能,尤其是客户感知的加载时长,也是良好用户体验的关键。53%的人会放弃加载时间超 3 秒的页面,而一秒钟的延迟都可能让网店损失每年数百万美元的销售额。Gartner 曾经估计,网络宕机的平均成本为每分钟 5,600 美元。最糟糕的情况是,您的网站直接在双十一或 618 崩溃了。
谁也不想看到这种情况发生。在本篇文章中,我们将介绍不同类型的 API 性能测试,以及如何使用ReadyAPI Performance 来构建它们,让您为节假日做好准备。
什么是 API 性能测试?
性能测试是指在应用程序或系统内,创建产品级的负载模拟,该模拟要尽可能地接近要部署的成品,或已被客户使用的现有应用程序。
让我们追溯到业务案例……性能测试是为了了解在负载下的用户体验,并确保应用程序能够满足其 SLA。
不同类型的性能测试
除了功能测试以外,还有六种类型的性能测试:负载测试、基线测试、冒烟测试、浸泡测试、峰值测试和尖峰测试。
负载测试
“负载测试”这个术语指的是性能测试的标准版本。您可以指定 VU 的数量、测试脚本和运行测试的时间,所有 VU 在指定时间内连续访问您的 API,同时测试工具会记录性能。然后,您就可以将性能指标与服务级别协议(SLA)进行比较了。
您可以使用 ReadyAPI 进行负载测试。ReadyAPI 使用功能测试用例来模拟被测的网站或 Web 服务上的大量负载。它可以帮助您检查服务器在负载下是如何工作的,并估计它的极限。
对于负载模拟,ReadyAPI使用的是虚拟用户。在您的本地计算机上运行负载测试只能够使用几个虚拟用户。您可以同时模拟的最大虚拟用户数取决于您拥有的许可证。如果需要同时模拟大量用户,您可以运行分布式的负载测试,或是分布式的云测试。
下面是 ReadyAPI 中负载测试的示例视图:
基线测试
基线测试是一种负载策略,用于评估服务器在 SLA 下的性能。您的测试应该帮助您确定服务器的正常响应状态。您可以使用这些数值来设置其他测试中的断言。您还可能会发现服务器或目标测试用例问题,这些问题可能会导致较长的负载测试运行出错。这也是检查服务器是否按照 SLA 要求运行的好方法。
在 ReadyAPI 中创建基线测试,我们建议使用基线负载测试模板。在默认情况下,它将创建一个具有以下参数的测试:
如果您使用 VU 负载类型来模拟固定的负载配置文件,您需要指定模拟的虚拟用户数量。如果使用频率负载类型来模拟固定负载配置文件,则需要定义新用户访问到服务器的恒定速度。
如果想要评估服务器的性能,你需要添加断言和服务器监控,以检查响应时间、传输数据大小以及其他与 SLA 相关的数值。
以下是您的测试结果可能的样子:
冒烟测试
冒烟测试是一种负载测试策略,用于确保服务器和测试都能正常工作。这是您进行后续负载测试前运行的负载测试。与基线测试不同,您并不打算达到 SLA(服务级别协议),只是确保没有错误发生。
在确认一切正常后,您可以创建其他负载测试。
若要在 ReadyAPI 中创建冒烟测试,我们建议使用冒烟负载测试模板。在默认情况下,它将创建一个具有以下参数的测试:
如果断言失败,负载测试将停止。
下面是测试结果可能的样子:
压力测试
压力测试是对服务器施加大量负载的模拟测试,是为了找到服务器能够处理的最大用户数。这个数量也被称为崩溃点。崩溃点并不一定意味着服务器崩溃或挂起。它可能意味着错误开始发生,或者服务器的性能或响应时间低于 SLA 定义的级别。
要在 ReadyAPI 中创建压力测试,请使用针对大量用户的 Ramp Up 负载配置文件。
此外,还需要创建断言和服务器监控,以便将服务器响应与 SLA 中指定的限制进行对比。当响应时间超过了 SLA 指定的时间、服务器耗尽了处理能力,或是错误开始发生时,就说明您已经达到了服务器的最大容量。
您可以使用压力负载测试模板快速地创建一个压力负载测试。在默认情况下,它将创建一个具有以下参数的测试:
浸泡测试
浸泡测试是一种负载测试,它会长时间运行高但非关键数量的虚拟用户数,测试时间会持续几小时到几天不等。浸泡测试的理念是,有时系统在特定负载下的表现是符合预期的,但是突然间,在没有流量变化的情况下,系统会停止工作。在理想情况下,测试结束时,服务器的性能应该与测试开始时相同。性能下降的话就说明服务器代码存在一些问题。
使用 ReadyAPI 创建浸泡测试,我们建议使用基线负载测试模板。在默认情况下,它将创建一个具有以下参数的测试:
作为选项,您可以配置服务器监控。ReadyAPI 将创建两个统计图表,一个用于负载测试,另一个用于服务器监控。
或者,您也可以手动创建具有类似参数的负载测试。
使用 ReadyAPI,您可以跟踪各种服务器端指标,例如内存和 CPU 使用率、每秒数据库请求数等。为此,您需要在负载测试中配置服务器监控。
峰值测试
峰值测试将检查服务器在最繁忙时段的运行情况。峰值测试类似于浸泡测试,但负载更重,持续时间更短。这些测试用例对于测试 API 的可扩展性非常有帮助,尤其是在无服务器或自动扩展的基础结构上运行它时。
您可以使用峰值负载测试模板在 ReadyAPI 中创建峰值测试。默认情况下,它将创建一个具有以下参数的测试:
作为选项,您可以配置服务器监控。ReadyAPI 将为负载创建一个统计图表。您也可以手动创建一个具有类似参数的负载测试。
尖峰测试
尖峰测试可帮助您检查在用户数激增的情况下被测试的服务器的响应情况。在尖峰过去后,服务器应该能够稳定下来并恢复正常运行。
要在 ReadyAPI 中创建尖峰测试,请使用突发负载配置文件。它可以帮助您模拟短时间用户数激增的情况,将远远高于预期的最大负载。在此之后或是同时,运行另一个负载测试以检查服务器如何处理这种峰值。如果使用频率负载类型来模拟突发负载配置,那么,测试将创建大量的虚拟用户访问服务器。这种模拟出来的突发峰值很容易让服务器不堪重负。如果使用 VU 负载类型来模拟突发负载配置,则可以指定使用服务器的确切的最大用户数。然后测试将模拟指定的用户数,即使服务器响应变慢也是如此。
我们建议使用尖峰负载测试模板。在默认情况下,它将创建一个具有以下参数的测试:
您的测试结果可能如下所示:
文章来源:https://smartbear.com/blog/api-performance-testing-for-success/
评论