# 性能测试

性能测试能够针对 API 发起大规模的服务请求，检测 API 的性能瓶颈和稳定性、暴露压力状态下的可能风险、确保 API 在高负荷情况下能够稳定地运行和响应请求。

:::info[]
目前性能测试功能处于 Beta 阶段，可能存在预期之外的问题。如果您发现任何问题，欢迎加入[技术服务支持群](https://docs.apifox.com/contact-us.md)并提供反馈。
:::


<Background>

![image.png](https://api.apifox.com/api/v1/projects/5097254/resources/481908/image-preview)
</Background>


## 设置配置项

运行性能测试前需指定场景用例的运行环境和测试数据（可选项），以及配置性能测试配置项。

- **运行环境**

  场景用例中的运行环境继承自当前项目中的[环境](https://docs.apifox.com/environments-and-services.md)。

- **测试数据**

  关联测试数据后，虚拟用户会使用测试数据中定义的变量来执行请求。可选择以「随机匹配」或「顺序匹配」模式运行。
    - 随机匹配：每个虚拟用户随机从测试数据中选择一行数据运行。此模式下所有虚拟用户都会选择到一条测试数据并执行性能测试。
    - 顺序匹配：每个虚拟用户按测试数据中的顺序选择一行数据运行。注意：如果 **虚拟用户数 > 测试数据行数**，超出测试数据行数之外的虚拟用户不会开始运行性能测试。 

性能测试模块提供以下三个可调测试项：

- **虚拟用户数（并发用户数）**
  
  目前最高支持 100 个虚拟用户，在指定的测试时间内，模拟在线用户数并行且重复运行场景用例。

- **运行时间**

  执行性能测试的总时长，在此时间段内每个虚拟用户会一直循环执行场景用例中的全部接口。

- **爬坡时间**

  通常情况下，大量用户并非瞬时访问服务，而是随着时间推移，请求越来越多。为了模拟此过程，爬坡时间意味着在前 X 分钟内（X 为预设值）线性逐步添加并行的用户数量，直到达到预设的虚拟用户数（并发用户数）。若将 X 值设为 0，则代表在测试的起始阶段瞬时加满所有的虚拟用户。

## 运行性能测试

触发性能测试后，将会有一个直观的可视化面板展示**各个接口的总请求数**、**每秒接口请求数**、**平均响应时间**、**最大/最小响应时间**以及**请求失败率**等各项关键指标。


<Background>
![image.png](https://api.apifox.com/api/v1/projects/5097254/resources/481909/image-preview)
</Background>

单位时间内，一个项目只能运行一个性能测试，如果有优先级更高的测试项，请点击右上角的“停止”按钮。

## 检视测试过程

在运行性能测试时，你可以将鼠标移至测试图表中实时查看各个时间内的测试详情。

<Background>

![image.png](https://api.apifox.com/api/v1/projects/5097254/resources/481910/image-preview)
</Background>

点击“请求失败率”检查接口的失败请求，分析可能的错误原因。你还可以点击筛选栏中筛选接口。


<Background>

![image.png](https://api.apifox.com/api/v1/projects/5097254/resources/481911/image-preview)
</Background>


在性能测试中，会发出大量的接口请求，因此仅会将错误请求分类统计展示，不会记录详细的错误信息以及每个接口请求详情。如果你发现有预期之外的错误，请先运行「功能测试」，将问题全部解决后再运行「性能测试」。

## 查看测试报告

点击 **“测试报告”** tab 页，查看当前场景用例下的历史测试报告。阅读[此处](https://docs.apifox.com/test-reports.md)了解更多性能测试报告的分析方法。

<Background>

![image.png](https://api.apifox.com/api/v1/projects/5097254/resources/481912/image-preview)
</Background>


