响应时间测试:如何衡量 API 性能

⚡ 智能摘要

响应时间测试衡量系统响应请求所需的时间,从用户发送请求到应用程序报告完成响应所需的时间。本指南涵盖了相关指标、三个关键阈值以及用于捕获这些指标的工具。

  • ⏱️ 核心定义: 响应时间涵盖从发送请求到处理完成的整个往返过程。
  • 📊 三个指标: 平均响应时间、峰值响应时间和错误率共同描述了系统行为。
  • 🟢 0.1秒: 感觉是瞬间完成的,用户感觉不到任何中断。
  • 🟡 1秒: 思维不间断的上限。
  • ???? 10 秒: 注意力是有限的,但实际上用户往往在此之前就放弃了。
  • 🧪 测量方法: 在负载测试工具中,将业务流程封装成开始和结束事务。

响应时间测试

什么是响应时间测试?

响应时间测试 响应时间衡量的是一个系统节点响应另一个节点的请求所需的时间。它是指请求到达到相应处理完成之间的时间间隔。例如,您有一个 API,您想确切地知道执行该 API 并以 JSON 格式返回数据需要多长时间。响应时间衡量的是服务器对每个事务或查询的响应时间。

响应时间从用户发送请求时开始,到应用程序声明请求已完成时结束。

如何测量响应时间

测量响应时间,我们可以通过用开始和结束事务包围重要的业务流程来使用测试工具。业务流程可能是用户在应用程序中执行的一个操作或一组操作,以完成业务任务,如登录应用程序或购买书籍 Amazon.com

响应时间测试
响应时间测试

对于测量 API 响应时间的相同过程,不同工具的响应会略有不同。原因如下

  • 步骤1) 每个 API 响应时间测试工具收集的指标的计算方法
  • 步骤2) 工具模拟加载和捕获速度,这可能会对响应时间产生影响
  • 步骤3) 监控用户负载时记录的额外项目
  • 步骤4) 由于资源消耗大,每个工具收集的计算指标会增加响应时间。
  • 步骤5) 两种工具的架构可能不同

响应指标的类型

响应时间指标 说明
平均响应时间 平均响应时间是每次往返请求所需的平均时间。平均响应时间包括 HTML、CSS、XML、图像的加载时间, Java脚本文件等。因此,当系统中存在缓慢的组件时,平均值会受到影响。
峰值响应时间 峰值响应时间有助于我们找到可能存在问题的组件。它有助于我们找到网站或系统中所有未正确处理某个请求的异常情况。例如,可能执行了会影响响应时间的大型数据库查询。此查询不允许页面在所需的时间加载。
错误率 错误率是一个数学计算结果,它显示了问题请求占所有请求的百分比。该百分比统计了所有在服务器上显示错误的 HTTP 状态码,以及超时请求。

三个重要的响应时间阈值

在任何响应时间报告中,有两个数字最为重要:

  • 平均响应时间
  • 最大响应时间或峰值响应时间

它们共同显示了用户通常需要等待的时间,以及最倒霉的用户需要等待的时间。

以下是关键响应时间测试示例值

响应时效 意义
0.1二 这是最优选的响应时间。如果响应时间为0.1,则用户始终会感觉到应用程序或系统正在即时响应,并且不会感觉到任何中断。
1.0二 这是公认的流畅体验上限。用户不太可能感觉到任何中断,但可能会遇到一些延迟。响应时间超过 1 秒可能会影响用户体验。
10秒 这是响应时间超出可接受限度的最大限制。然而,在当今时代,如果响应时间超过 6 秒,用户将离开该网站或退出应用程序。

尽可能将响应时间控制在 0.1 到 1 秒之间。用户能够适应较慢的系统,但超过 2 秒后满意度会急剧下降,每增加一秒,放弃率都会上升。

响应时间测试工具

有很多响应时间测试工具可供选择。其中两种最常用的工具是:

1) JMeter

Apache JMeter 是一个开源负载测试工具。它旨在衡量网站的性能。此负载测试工具可用于 DevOps 方法。

JMeter

特色:

  • JMeter 允许对各种服务器类型执行负载和性能测试。
  • 该负载测试工具以 XML 格式存储其测试计划,允许用户使用文本编辑器生成测试计划。
  • 该工具可用于执行自动化和 功能测试 应用程序。

下载链接: Apache JMeter 下载


2)负载运行器

Loadrunner Micro Focus 出品的这款负载测试工具被广泛使用,它是最佳替代方案之一。 JMeter 它提供了带有彩色图表和图形的用户友好的监控和分析界面。

负载运行器

特色:

  • 支持连续测试
  • LoadRunner 可以在多种企业环境中有效运行
  • 可以同时运行多个协议脚本 Loadrunner
  • 与各种开发工具集成 Visual Studio中, Jenkins, Selenium等等。

下载链接: LoadRunner 专业版

此测试如何融入性能测试系列

性能测试是一个统称。以下列出的各种测试方法仅在施加的载荷形式和保持时间上有所不同,因此它们经常被混淆。

测试类型 负载模式 它解答的问题
负载测试 预计峰值负荷,持续时间短 在正常高峰交通流量下,该系统能否达到其目标?
压力测试 超出负荷直至失效 它会在哪里出现故障?故障发生时是否体面?
尖峰测试 突然的极端激增,然后是撤退 它能否在交通冲击后幸存并恢复?
耐力测试 正常负荷持续数小时 性能会随着时间推移而下降吗?
浸泡测试 长时间持续负荷 是否存在内存泄漏或资源耗尽?
稳定性测试 不同条件下的负载变化 随着环境变化,系统是否仍能保持可靠性?
容量测试 普通用户,数据量非常大 随着数据库的增长,它能否应对?

耐久性测试和浸泡测试经常被视为同义词。 通常来说,耐久性测试和负载测试都是长时间持续高负载运行的测试。如果团队确实区分这两者,耐久性测试侧重于响应时间是否会逐渐延长,而负载测试则侧重于内存、文件句柄和连接池等资源消耗。运行其中一项测试通常就能提供这两项测试的结果。

响应时间测试:主要结论

  • 响应时间是指一个系统节点响应另一个系统节点的请求所需的时间。
  • 平均响应时间 性能测试 是每次往返请求所需的平均时间。
  • 峰值响应时间可以揭示哪些组件可能存在问题。
  • 错误率是一种数学计算,显示问题请求的百分比。
  • 三个关键的响应时间值是:0.1 秒、1.0 秒和 10 秒。
  • 两种最常用的响应时间测试工具是 JMeter加载程序.

常见问题

延迟是指请求在网络上传输所需的时间。响应时间包括延迟以及所有服务器处理和渲染所需的时间。即使网络速度很快,如果服务器速度慢,仍然可能导致响应时间过长。

平均值会掩盖异常值。一个平均响应时间为 800 毫秒、第 95 百分位数为 9 秒的系统,意味着每 20 个用户中就有 1 个会遇到响应失败的情况,而只有百分位数才能揭示这一点。

交互操作的加载时间应控制在 1 秒以内,页面完整加载时间应控制在 2 秒以内。超过 3 秒后,无论理论上的 10 秒限制如何,用户放弃率都会急剧上升。

基于人工智能的监控可以为每个端点建立正常基线,并自动标记偏差,从而取代在预期交通高峰期间产生噪声的固定阈值。

是的。基于历史性能运行数据训练的模型可以标记出哪些代码更改可能会导致端点速度变慢。务必通过实际测量运行来验证每个预测结果。

总结一下这篇文章: