使用 FastAPI 和 Postman 进行负载测试:综合指南
想象一下这样的场景,您的初创公司开始受到关注。用户数突然增加!现在,用户数量不断从 10 个增加到 100 个,并且已经使用您的应用程序相当长一段时间了。单击一些按钮,使用一些功能,向后端服务器发出请求......
在这种情况下你不希望的是毫无准备。您希望确保您的应用程序对用户可靠并且可用。这就是测试的用武之地,我们在这里讨论的是一种适合测试这种场景的特定类型的测试,负载测试。
在本指南中,我们将重点关注使用 FastAPI 及其自动 OpenAPI 规范生成来简化生成用于负载测试的 Postman 集合的过程。最后,您将了解如何利用 FastAPI 的 OpenAPI 规范和 Postman 大规模测试您的应用程序。
?为什么使用 FastAPI 和 Postman 进行负载测试?
FastAPI 具有内置的 OpenAPI 支持,可以轻松记录和测试您的 API。通过将 FastAPI 与 Postman 结合,您可以:
- 从 FastAPI API 的 OpenAPI 文档自动生成 Postman 集合。
- 通过将集合直接导入 Postman 来简化请求设置。
- 利用 Postman 强大的测试和脚本功能进行动态数据生成。
- 以编程方式扩展测试使用 Newman(Postman 的 CLI 工具)进行 CI/CD 集成。
FastAPI 和 Postman 之间的协同作用使开发人员能够快速模拟真实的流量场景并识别应用程序中的瓶颈。
?️ 第 1 步:设置 FastAPI 和 Swagger
1.1 启动您的 FastAPI 应用程序
确保您的 FastAPI 应用程序在本地或服务器上运行。例如:
from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)
服务器启动时,OpenAPI JSON端点将在http://127.0.0.1:8000/openapi.json可用。
1.2 验证 OpenAPI JSON
打开浏览器并导航到 http://127.0.0.1:8000/openapi.json 以确保 OpenAPI JSON 可以访问。
?第 2 步:将 OpenAPI JSON 导出到 Postman
2.1 复制OpenAPI端点
您可以使用浏览器或通过curl在本地保存OpenAPI JSON文件:
curl -o openapi.json http://127.0.0.1:8000/openapi.json
或者只需复制 OpenAPI 端点 URL,http://127.0.0.1:8000/openapi.json。
2.2 将OpenAPI JSON导入Postman
- 打开 Postman,然后点击左上角的导入。
- 选择下载的 openapi.json 文件。
- Postman 将自动生成一个包含 OpenAPI 规范中定义的所有端点的集合。
如果您刚刚复制了端点 URL,则只需将 URL 粘贴到单击 导入
时出现的模式顶部的输入栏即可2.3 组织和测试您的集合
检查导入的集合以确保所有端点均已正确配置。您还可以根据身份验证或数据管理的需要添加环境变量或脚本。
?第 3 步:准备在 Postman 中进行负载测试
3.1 将动态数据添加到您的请求中
要模拟真实场景,请修改您的请求以包含动态数据。例如,使用Postman的内置变量或预请求脚本:
预请求脚本示例:
from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)
负载示例:
curl -o openapi.json http://127.0.0.1:8000/openapi.json
您还可以使用 $randomInt 等内置脚本来生成随机值。
使用内置脚本的示例用例:
pm.variables.set("random_id", Math.floor(Math.random() * 10000));
3.2 配置集合中的变量
在 Postman 中使用集合变量来管理 API 基本 URL、身份验证令牌或动态参数,而无需您的集合。这简化了整个集合的更新和测试。
Postman 现在包含内置性能测试功能,可让您模拟用户流量并评估 API 的性能。
4.1 启动 Collection Runner
- 单击 Postman 中的 Runner 按钮(烧杯图标)。
- 选择从 FastAPI OpenAPI JSON.4.2 导入的集合设置测试参数
4.2 配置性能测试设置
- 虚拟用户:指定模拟并发负载的虚拟用户数量。
- 测试持续时间:设置测试应运行的持续时间。
- 负载配置文件:在固定、上升、尖峰或峰值负载配置文件之间进行选择以模拟不同的流量模式。4.3 执行负载测试
4.3 执行性能测试
单击“运行”开始性能测试。 Postman 将显示实时性能指标,例如平均响应时间、错误率和吞吐量。
?第 5 步:分析测试结果
测试完成后,分析结果以确定性能瓶颈:
- 响应时间:检查响应时间是否满足您的应用程序的性能标准。
- 错误率:识别测试期间发生的任何错误并调查其原因。
- 吞吐量:评估每秒处理的请求数,以确保其与预期负载保持一致。
Postman 提供详细的指标,并允许您比较多个测试运行以跟踪性能随时间的变化。
?使用 FastAPI 和 Postman 进行负载测试的最佳实践
- 保持 OpenAPI 文档更新:确保您的 FastAPI 文档反映 API 的当前状态,以便进行准确的测试。
- 使用动态数据:结合测试数据的可变性来模拟不同的现实场景。
- 监控系统资源:使用监控工具观察测试过程中CPU、内存和网络的使用情况。
- 自动化测试:将性能测试集成到 CI/CD 管道中以进行持续评估。
- 根据发现进行迭代:根据性能测试结果定期更新您的测试和应用程序。
?结论
通过利用FastAPI的OpenAPI规范和Postman的性能测试功能,您可以有效地模拟用户流量并识别潜在的性能问题。这种方法使您能够确保 FastAPI 应用程序在不同的负载条件下保持稳健和响应。
测试愉快!
以上是使用 FastAPI 和 Postman 进行负载测试:综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。
