Help us learn about your current experience with the documentation. Take the survey.
测试 AI 功能
本文档重点介绍了 AI 特定的测试注意事项,这些注意事项补充了 GitLab 标准测试指南。它侧重于 AI 功能为测试带来的挑战,例如来自第三方提供商的非确定性响应。每个测试级别都包含示例。
AI 驱动的功能依赖于 GitLab 单体之外的系统组件,例如 AI Gateway 和 IDE 扩展。 除了这些指南外,请查阅每个组件项目中记录的任何测试指南。
单元测试
遵循标准的单元测试指南。对于 AI 功能,始终模拟第三方 AI 提供商的调用,以确保快速、可靠的测试。
单元测试示例
- GitLab:
ee/spec/lib/code_suggestions/tasks/code_completion_spec.rb - VS Code 扩展:
code_suggestions/code_suggestions.test.ts
集成测试
使用集成测试来验证 AI 提供商的请求构建和响应处理。模拟 AI 提供商的响应,以确保能够处理各种响应、错误和状态代码的可预测、快速的测试。
集成测试示例
- GitLab:
ee/spec/requests/api/code_suggestions_spec.rb - VS Code 扩展:
main/test/integration/chat.test.js
前端功能测试
使用前端功能测试从最终用户的角度验证 AI 功能。模拟 AI 提供商以保持速度和可靠性。重点关注正常路径,并对高风险场景进行选择性负面路径测试。
前端功能测试示例
- GitLab Duo Chat:
ee/spec/features/duo_chat_spec.rb
端到端测试
谨慎使用端到端测试来验证 AI 功能是否能与真实的提供商响应协同工作。关键注意事项:
- 由于执行速度较慢且可能发生提供商故障,请保持测试最少。
- 在测试设计中考虑 AI 的非确定性响应。例如,对聊天机器人名称等受控元素使用确定性断言,而不是 AI 生成的内容。
E2E 测试示例
- GitLab:
specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb - JetBrains:
test/kotlin/com/gitlab/plugin/e2eTest/tests/CodeSuggestionTest.kt
实时环境测试
- GitLab.com: 我们针对暂存和生产环境持续运行最少的 E2E 测试。例如,代码建议冒烟测试。
- GitLab 自托管: 我们使用
gitlab-qa编排器和 AI Gateway 场景 来测试 GitLab 自托管实例上的 AI 功能。
探索性测试
在重要里程碑之前进行探索性测试,以发现预期工作流程之外的错误和 UX 问题。这对于 AI 功能特别重要,因为它们会经历实验、测试版和正式发布阶段。