在 Apifox 中开展 API 性能测试的全面指南

2024-04-02 04:20

本文主要是介绍在 Apifox 中开展 API 性能测试的全面指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在构建和维护 API 时,性能和稳定性是至关重要的考量因素,API 的性能直接影响着用户体验和系统的可用性,因此对其进行全面的性能测试是不可或缺的一环。

针对 API 的性能测试,一般通过模拟实际用户行为、压力测试和负载测试等方式来评估系统的稳定性和性能指标。在进行性能测试之前,建议先对 API 实施功能测试,确保所有接口按预期正确运行。功能测试帮助识别和修正功能性问题,而性能测试专注于评估 API 在高负荷下的表现。只有功能正常的 API,其性能测试结果才具有实际意义,进而可以为进一步的性能优化提供可靠依据。

那么,如何利用 Apifox 的「性能测试」功能来检验你的 API 性能是否达标呢?以下是操作步骤的详细讲解。

步骤 1

编排性能测试场景

在启动性能测试前,首先需要编写测试用例,可以从接口或接口用例导入,也可以自定义请求。当测试步骤准备完毕,建议先执行功能测试以确保接口按预期工作,然后再进行性能测试。

图片

步骤 2

设置性能测试运行配置

接下来,在「自动化测试」功能界面,你会找到一个专为「性能测试」设计的模块。在这个模块里,你可以根据需要设置各种配置项,为即将执行的性能测试做好准备。

图片

运行环境

指定「性能测试」运行期间请求的后台服务环境,默认自动采用当前项目设定的环境配置

图片

测试数据(可选)

测试数据指的是性能测试过程中用来发起请求的数据集,通过使用测试数据,让每个并发用户能够使用不同的参数进行请求,用以更好的模拟现实世界的流量。

图片

如果你要使用测试数据,你可以在界面上点击「测试数据」标签,然后新建一个测试数据。

图片

接着在相应的环境中配置数据集,你可以手动添加,也可以通过 JSON 或 CSV 格式导入,编辑完毕后保存即可。

图片

最后,在测试步骤详情页中通过变量与测试数据关联。

图片

若你在性能测试中选择关联测试数据,那么并发用户将使用测试数据中定义的变量进行请求,你可以选择「随机匹配」或者「顺序匹配」这两种模式进行测试

图片

  • 「随机匹配」模式:在此模式下,每个并发用户将从测试数据中随机选择一行数据进行操作。这确保了每个并发用户都能获取到一条测试数据,从而保证性能测试的广覆盖性。

  • 「顺序匹配」模式:此模式下,每个并发用户将按照测试数据的顺序选取下一行数据进行操作。需要注意的是,如果执行测试的并发用户数超过了提供的测试数据行数,那么超出部分的并发用户将无法参与测试。因此,在使用此模式时,请确保你有足够多的测试数据以支持所有并发用户的测试需求

并发用户数(虚拟用户数)

目前性能测试最多支持同时模拟 100 名并发用户,这些并发用户会在你指定的测试时间内,并行地模拟真实在线用户行为,以重复执行测试场景。通过这种方式,你可以有效地模拟高并发场景,以评估 API 在面对大量用户请求时的性能和稳定性。

运行时间

运行时间定义了性能测试的总时长,即在此设定时间内,每个并发用户将持续不断地循环执行测试场景中定义的所有接口请求。当前,性能测试支持的最长测试时长为 60 分钟。

爬坡时间

在一些情况下,大量用户并非瞬时访问服务,而是随着时间推移,请求越来越多。

爬坡时间就是用于模拟用户访问量随时间增长的情况,即在测试的初期并不是立即使用所有并发用户,而是在设定的 X 分钟内(X 为你设定的时间),用户数量会线性增加直到达到所设定的并发用户总数。如果将 X 值设置为 0,意味着测试一开始就会启用全部并发用户进行压力测试。

以上的「可配置项」配置完成后,保存设置,然后点击「运行」按钮,即可开始执行性能测试。

步骤 3

运行性能测试

性能测点击「运行」后,性能测试就会启动。Apifox 的性能测试是从用户电脑(而不是 Apifox 服务器)发起的,会使用当前电脑的硬件资源来执行你已经配置好的测试步骤、测试数据和并发请求。

需要注意,Apifox 的性能测试能够测到的性能上限会受到当前电脑硬件性能和网络连接状况的限制。比如,假设你当前的电脑的配置只能支撑 50 个并发请求,此时即使你把 Apifox 的并发用户数调到 100 ,Apifox 实际上能发起的并发请求数也最多只能达到 50。因此,你需要结合自己电脑的性能和其他接口的表现来判断,到底性能问题出在你要测试的接口,还是你发起测试的电脑。如果你发现无论哪个服务器的哪个接口,实际发起的请求数都上不去,那可能你需要换一台性能更强的电脑来发起性能测试。

启动性能测试后,Apifox 将会提供一个直观的可视化面板,用以实时监测,并展现关键性能指标,包括各个接口的总请求数、每秒接口请求数、平均响应时间、最大/最小响应时间,以及请求的失败率等信息。

图片

在性能测试的运行页面上,可视化面板呈现了整个测试场景的综合数据。

图片

以下表列出了可视化面板中整个测试场景的综合数据指标,这些指标反映了覆盖所有接口的整体性能情况:

图片

整个测试场景的综合数据指标解读:

  • 总请求次数:该指标反映了测试期间接口处理的请求总量,要注意,较高的总请求次数在大规模用户使用场景下是合理的,但也应保证接口能有效处理这些请求。

  • 每秒接口请求数:如果每秒的请求数量高,这意味着接口能在短时间内处理大量请求,通常表示出色的性能。如果这个数字较低,可能暗示接口在处理请求时存在性能瓶颈。

  • 平均响应时间:较低的平均响应时间通常表示用户能够迅速获得反馈,反映接口性能优异。较高的响应时间则表明响应过慢,可能会影响用户体验。

  • 请求失败率:理想情况下,失败率应接近于零。较高的失败率说明接口在某些情况下无法正常处理请求,需要进一步进行错误分析和优化。

  • 并发用户数:合理设置并发用户数可以帮助模拟真实世界的用户负载。然而,如果并发用户数设置过高,系统可能会因无法处理如此高的负载而导致性能下降。

在可视化面板下方,列出了测试场景中各个接口的具体数据指标,便于你根据需要进行查看和分析。

图片

以下表格展示了单个接口的性能测试指标,这些指标专门针对每一个接口的性能进行分析:

图片

单个接口的性能测试指标解读:

  • 总请求数:较高的总请求量在大并发场景下是正常的,但应保证接口能有效处理这些请求。

  • 每秒接口请求数:较高值表示接口可在短时间内处理大量请求,反映出良好的性能,反之可能存在性能问题。

  • 平均响应时间(ms):较低的平均响应时间意味着用户经历更快的交互响应,反映出接口性能良好,较高的响应时间可能指示性能问题。

  • 最小和最大响应时间:这两个指标给出了响应时间的波动范围,极端值可能暴露出潜在的性能问题。

  • 90% 响应时间:对于多数请求而言,这个时间应接近平均响应时间。如果 90% 响应时间明显高于平均值,这可能暗示有一部分请求响应时间过长,影响了用户体验。

  • 失败率:理想情况下,失败率应接近于零。较高的失败率说明接口在某些情况下无法正常处理请求,需要进一步调查原因。

需要注意的是,在同一时间段内,一个项目仅能执行一项性能测试。若需进行优先级更高的测试,请点击右上角的「终止」按钮,以终止当前测试。

在执行性能测试的过程中,你可以通过将鼠标悬停在可视化面板上,实时查看不同时间点的测试详情。

在可视化面板上,不同的曲线颜色分别对应于纵轴上的不同性能指标,如下图所示。其中,横轴表示性能测试进行的时间,而纵轴从左至右依次展示了请求失败率、平均响应时间和每秒接口请求数等指标(「并发用户数」默认在纵轴隐藏)。

图片

若需重点关注特定的性能指标,你可以通过点击该指标使其颜色变为灰色,从而临时从图表中隐藏该指标,便于你集中分析其它数据。

图片

若想审查特定的失败请求,可点击「请求失败率」以分析失败的接口请求。此外,你还可以利用筛选功能,专门查看特定接口的表现。

图片

由于性能测试会生成大量接口请求,所以系统仅对发生错误的请求进行分类统计,而不会保留每个请求的详细错误信息和接口请求详情。如果在性能测试中遇到意外的错误,建议你先执行「功能测试」以排查并解决所有问题,然后再进行性能测试。

性能测试结束后,通过点击「测试报告」标签,你能够查看该测试场景的全部历史报告,这些报告详细列出了性能测试执行前你所设置的“配置项”情况。

图片

你可以在这里按报告类型(如功能测试、性能测试)进行筛选。点击任一测试报告可跳转至其详情页面进行查看,报告页面中展示的信息与性能测试执行期间收集的指标保持一致。

图片

Apifox 为 API 性能测试提供了一个易于操作的解决方案,使得设置测试参数、执行测试和查看结果的过程变得简单直观,通过一系列详细的性能指标和清晰的可视化面板,你能够全面了解 API 的性能表现。

这篇关于在 Apifox 中开展 API 性能测试的全面指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/868954

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

macOS彻底卸载Python的超完整指南(推荐!)

《macOS彻底卸载Python的超完整指南(推荐!)》随着python解释器的不断更新升级和项目开发需要,有时候会需要升级或者降级系统中的python的版本,系统中留存的Pytho版本如果没有卸载干... 目录MACOS 彻底卸载 python 的完整指南重要警告卸载前检查卸载方法(按安装方式)1. 卸载

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

使用Go调用第三方API的方法详解

《使用Go调用第三方API的方法详解》在现代应用开发中,调用第三方API是非常常见的场景,比如获取天气预报、翻译文本、发送短信等,Go作为一门高效并发的编程语言,拥有强大的标准库和丰富的第三方库,可以... 目录引言一、准备工作二、案例1:调用天气查询 API1. 注册并获取 API Key2. 代码实现3

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py