应对 618、双十一等大促期间的高负载,API 性能测试应该怎么做?负载测试、基线测试、冒烟测试、浸泡测试、峰值测试和尖峰测试详解

news2024/11/28 16:42:16

随着应用程序和服务交付速度的不断提高,在按时交付应用程序的竞赛中,性能测试往往会退居其次。但是,在节假日期间,购物额都会大幅增长。在这种一年中的成败时刻,公司是无法接受他们的应用程序在高负载下变得不可靠的。

企业需要优先考虑其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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/763784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第四章 云原生架构之Kubernetes基础知识

1、K8S整体架构 1.1、概述 ​ Kubernetes是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,简称 K8S。K8S的本质是一组服务器集群,可以在对应服务器集群的每个节点上运行程序,来对节点中的容器进行管理。类似Mas…

Pytest+Jenkins+Allure的接口自动化测试

目录 生成Allure 两种形式 一 项目内直接生成不依赖Jenkins 1.先安装好allure 将allure\bin配置到环境变量中 cmd 命令行输入:allure 校验是否安装成功 2. 将json文件生成html文件 执行 allure generate report/ -o report/html其中的report/ 为生成的json路径&a…

OCPM和CPM有什么区别?

CPM和OCPM这两种收费模式的对比 Cpm:表示千次展示费用,是数据指标,也是一种出价方式。代表展现一千次的消费,也就是你展现1000次要给媒体多少钱 例如某企业广告曝光量是50万,总广告价格为10000元,那么千人…

matplotlib 笔记:marker 款式

1 ec 边缘颜色 marker 边缘的颜色 import numpy as np import matplotlib.pyplot as pltxnp.linspace(0,10) ynp.sin(x)1.5 plt.figure(figsize(10,10)) plt.scatter(x,y,ecC9) plt.show() 2 fc 填充颜色 face color 填充颜色 3 lw 边缘宽度 4 s 点的大小 5 marker 点款式 i…

设计模式 ~ 工厂模式

工厂模式 工厂模式是一种设计模式,指在通过使用工厂函数或构造函数来创建对象; 它提供了一种灵活的方式来创建对象实例,而无需直接调用构造函数或使用new关键字; 可以分类,解耦; 可以扩展多个类&#xff0…

Baidu——基于大模型的优质Prompt开发课-写代码

软件开发产业趋势与技术革新 大模型驱动的软件开发 代码辅助开发模型 实际操作 你是一名非常专业的产品经理,请问如果我要做一个图片字符画的工具的调研,需要哪些步骤 你是一名编程大牛,目前我想做一个图像字符画的工具,这个工具要…

前缀、中缀、后缀表达式及简易运算实现总结

title: 前缀、中缀、后缀表达式及简易运算实现总结 date: 2023-06-30 10:25:50 tags: 表达式 categories:开发知识及其他 cover: https://cover.png feature: false 1. 概念 1.1 什么是前缀、中缀、后缀表达式? 前缀表达式:又称波兰式(Pol…

代码随想录day5 | 242.有效的字母异位词 349. 两个数组的交集 202.快乐数

文章目录 一、有效的字母异位词二、两个数组的交集三、快乐数 一、有效的字母异位词 242.有效的字母异位词 代码随想录知识点 哈西法可以选取的三种数据结构: 数组setmap class Solution { public:bool isAnagram(string s, string t){int hash[26] {0};// 1f…

CMS系统访问权限限制

创建一些全局的通用方法 const USER_KEY "USER_KEY" const TOKEN_KEY "JWT_TOKEN_KEY"class Auth {constructor() {this.token nullthis.user nullthis.token localStorage.getItem(TOKEN_KEY)const userJson localStorage.getItem(USER_KEY)if (use…

Redis连接报错:ERR Client sent AUTH, but no password is set

如果在redis.windows.conf或者redis.conf(我的是这个配置文件) 文件夹中设置了密码,但是会报错 ERR Client sent AUTH, but no password is set 用记事本打开redis.windows.conf或者redis.conf (我的是这个配置文件)…

一次性讲清楚常考面试题:进程和线程的区别

进程是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命周期。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成…

今天实习第三天,vue(vue-cli部分,webpack部分,vue-router部分,elementUI部分)

01.创建第一个vue-cli。这里用的是node.js。早上的时候,就需要把node.js安装上去 02.node.js安装 第一步.去官网下载node.js https://nodejs.org/en 第二步.运行官网下载的node.js的msi文件(记住所有的node.js文件的安装包都是msi文件的形式&#xff0…

(学习笔记-TCP连接建立)IP层会分片,为什么TCP层还需要MSS呢?

前提知识: 网络层最常用的是IP协议,IP协议会将传输层的报文作为数据部分,再加上IP包头组装成IP报文,如果IP报文大小超过了MTU(1500字节)就会再次分片,得到一个即将发送到网络的IP报文 MTU和MSS: MTU:一个网…

如何在 Excel 中快速生成随机密码?

有时,我们可能想创建随机密码来保护某些重要内容。 但是,您有什么技巧可以在Excel中快速生成随机密码? 在这里,我有一些可以在Excel工作表中处理的方法。 用公式生成随机密码 使用插入随机数据生成随机密码​编辑 用公式生成随机…

普通人的姓名可以注册为商标吗?

商标是商品的生产者、经营者在其生产、制造、加工或者经销的商品上或者服务使用的标志,用于区别商品或服务来源。商标由文字、图形、字母、数字、三维标志、颜色组合和声音等组合而成,以姓名注册商标属于文字商标,因此,个人的名字…

第十二章:MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS——通过膨胀卷积的多尺度上下文聚合

0.摘要 目前用于语义分割的先进模型是基于最初设计用于图像分类的卷积网络的改进。然而,像语义分割这样的密集预测问题在结构上与图像分类不同。在这项工作中,我们开发了一个专门为密集预测设计的新的卷积网络模块。所提出的模块使用膨胀卷积来系统地聚合…

QQ号码3个月未登陆真的要回收?

7月17日消息,微信号长期未使用会被回收的消息引起热议。 腾讯微信团队微博发文称:为保障用户的微信账号安全,注册后不活跃,长期未登录,并且没有零钱的微信账号,会被系统注销,无法使用。 不过也有…

B. The BOSS Can Count Pairs

Problem - 1830B - Codeforces 思路&#xff1a;因为ai*ajbibj&#xff0c;bibj<2*n&#xff0c;那么会有ai*aj<2*n&#xff0c;那么会有min(ai,aj)<sqrt(2*n)&#xff0c;我们能够发现我们只要枚举ai&#xff08;假设ai<aj&#xff09;那么只要在这种情况下求得所…

Kubernetes(K8s)常用命令大全:熟练编排更完美

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

提升效率,打通万里牛ERP与下游用友U8财务软件的无缝对接

一、对接流程 1.1 销售/售后流程 在万里牛订单出库后&#xff0c;通过轻易云数据集成平台将数据推送至用友U8销售订单和销售出库单&#xff0c;这些单据可以进行关联操作。 当万里牛售后单完成退货入库后&#xff0c;通过数据集成平台将数据推送至用友U8销售退货单和红字销售…