本文档为希望测试 AutoGPT 系统或为项目贡献新测试的开发人员提供指导。它涵盖了 AutoGPT 不同组件所使用的测试方法、框架和技术。
有关 CI/CD 工作流程的信息,请参阅 CI/CD 工作流程。有关贡献流程的详细信息,请参阅 贡献。
AutoGPT 在其组件中采用了全面的测试策略,包括现代平台和经典实现。测试对于确保可靠性至关重要,尤其是在处理复杂的 AI 代理行为和与外部服务的集成时。
测试方法包括:
来源:.gitmodules
AutoGPT 的测试架构遵循存储库的主要组件结构,并根据正在测试的系统组织测试。
图表:测试组织
来源:.gitmodules
AutoGPT 根据被测组件使用不同的测试框架。
图表:测试框架
来源:.gitmodules
经典 AutoGPT 系统具有成熟的测试模式,尤其是在 Forge 组件方面。
Forge 组件使用 VCR Cassettes 来记录和回放测试中的 HTTP 交互。这使得测试无需实际进行外部 API 调用即可运行,从而提高了测试的速度和可靠性。
测试 Cassettes 存储在另一个存储库中,该存储库作为子模块链接到 classic/forge/tests/vcr_cassettes,从而保持主存储库的大小可控。
来源:.gitmodules
Agent Builder 平台的前端组件使用 Jest 和 React Testing Library 进行测试。测试侧重于组件渲染、用户交互和状态管理。
组件测试通常验证:
后端测试侧重于 API 端点、数据处理以及与外部服务的集成。关键领域包括:
由于 AutoGPT 与各种外部服务(尤其是 LLM 提供商)进行交互,因此适当的模拟对于可靠的测试至关重要。
编写 AutoGPT 组件的单元测试时:
def test_component_specific_behavior():
# Arrange: Set up test prerequisites
test_input = "sample input"
expected_output = "expected result"
# Act: Execute the functionality being tested
actual_result = component_function(test_input)
# Assert: Verify the output matches expectations
assert actual_result == expected_output
测试可以在开发过程中本地运行,也可以作为 CI 管道的一部分运行。
对于基于 Python 的组件(后端、经典 AutoGPT)
pytest path/to/tests
对于基于 JavaScript 的组件(前端)
npm test
在创建或更新拉取请求时,测试会自动作为 CI/CD 管道的一部分运行。CI 系统会运行完整的测试套件,以确保所有组件协同工作正常。
基准测试系统作为一种专门的测试形式,专注于衡量代理的性能和行为。基准测试有助于识别功能回归并验证改进。
基准测试中跟踪的关键指标包括:
有关基准测试系统的更多详细信息,请参阅 Benchmark。
测试是 AutoGPT 开发过程的关键部分。通过遵循本文档中概述的测试实践,贡献者可以确保他们的更改能够保持或提高系统的稳定性和功能性。
在为 AutoGPT 贡献新功能、错误修复或改进时,请务必包含适当的测试来验证更改。这有助于维护代码库的整体质量并防止回归。