在构建和维护 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% 响应时间明显高于平均值,这可能暗示有一部分请求响应时间过长,影响了用户体验。
- 失败率:理想情况下,失败率应接近于零。较高的失败率说明接口在某些情况下无法正常处理请求,需要进一步调查原因。
需要注意的是,在同一时间段内,一个项目仅能执行一项性能测试。若需进行优先级更高的测试,请点击右上角的「终止」按钮,以终止当前测试。
在执行性能测试的过程中,你可以通过将鼠标悬停在可视化面板上,实时查看不同时间点的测试详情。
在可视化面板上,不同的曲线颜色分别对应于纵轴上的不同性能指标,如下图所示。其中,横轴表示性能测试进行的时间,而纵轴从左至右依次展示了请求失败率、平均响应时间和每秒接口请求数等指标(「并发用户数」默认在纵轴隐藏)。
若需重点关注特定的性能指标,你可以通过点击该指标使其颜色变为灰色,从而临时从图表中隐藏该指标,便于你集中分析其它数据。
若想审查特定的失败请求,可点击「请求失败率」以分析失败的接口请求。此外,你还可以利用筛选功能,专门查看特定接口的表现。
由于性能测试会生成大量接口请求,所以系统仅对发生错误的请求进行分类统计,而不会保留每个请求的详细错误信息和接口请求详情。如果在性能测试中遇到意外的错误,建议你先执行「功能测试」以排查并解决所有问题,然后再进行性能测试。
性能测试结束后,通过点击「测试报告」标签,你能够查看该测试场景的全部历史报告,这些报告详细列出了性能测试执行前你所设置的“配置项”情况。
你可以在这里按报告类型(如功能测试、性能测试)进行筛选。点击任一测试报告可跳转至其详情页面进行查看,报告页面中展示的信息与性能测试执行期间收集的指标保持一致。