在 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

相关文章

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu