|
@@ -0,0 +1,109 @@
|
|
|
|
|
+# Story 004.001: 实际请求测试基础设施
|
|
|
|
|
+
|
|
|
|
|
+## Status
|
|
|
|
|
+Draft
|
|
|
|
|
+
|
|
|
|
|
+## Story
|
|
|
|
|
+**As a** 质量保证工程师
|
|
|
|
|
+**I want** 建立实际HTTP请求测试的基础设施
|
|
|
|
|
+**so that** 我可以在真实数据库环境下验证API端点的行为,确保系统功能的正确性
|
|
|
|
|
+
|
|
|
|
|
+## Acceptance Criteria
|
|
|
|
|
+1. 建立实际请求测试基础设施
|
|
|
|
|
+2. 用户API实际请求测试实现
|
|
|
|
|
+3. CI/CD流水线集成
|
|
|
|
|
+
|
|
|
|
|
+## Tasks / Subtasks
|
|
|
|
|
+- [ ] 配置实际请求测试环境 (AC: 1)
|
|
|
|
|
+ - [ ] 设置测试数据库连接配置
|
|
|
|
|
+ - [ ] 配置测试数据种子和清理机制
|
|
|
|
|
+ - [ ] 建立测试服务器启动和关闭流程
|
|
|
|
|
+- [ ] 创建核心测试工具和工具函数 (AC: 1, 2)
|
|
|
|
|
+ - [ ] 实现认证用户创建工具
|
|
|
|
|
+ - [ ] 创建测试数据工厂函数
|
|
|
|
|
+ - [ ] 开发API请求包装器
|
|
|
|
|
+- [ ] 实现用户API的实际请求测试 (AC: 2)
|
|
|
|
|
+ - [ ] 用户创建和读取测试
|
|
|
|
|
+ - [ ] 用户更新和删除测试
|
|
|
|
|
+ - [ ] 用户搜索和过滤测试
|
|
|
|
|
+- [ ] 集成到CI/CD流水线 (AC: 3)
|
|
|
|
|
+ - [ ] 配置GitHub Actions测试工作流
|
|
|
|
|
+ - [ ] 设置测试报告生成和上传
|
|
|
|
|
+ - [ ] 配置测试失败通知机制
|
|
|
|
|
+
|
|
|
|
|
+## Dev Notes
|
|
|
|
|
+
|
|
|
|
|
+### 技术栈和测试框架 [Source: architecture/tech-stack.md#测试框架]
|
|
|
|
|
+- **测试框架**: Vitest 2.x + Supertest 6.x
|
|
|
|
|
+- **测试位置**: `src/server/api/__integration_tests__/` 目录
|
|
|
|
|
+- **数据库**: 使用真实PostgreSQL数据库连接进行测试
|
|
|
|
|
+- **覆盖率目标**: 核心API端点测试覆盖率100%
|
|
|
|
|
+
|
|
|
|
|
+### 项目结构指导 [Source: architecture/source-tree.md#API测试]
|
|
|
|
|
+- API测试文件应位于对应API端点的 `__tests__` 文件夹中
|
|
|
|
|
+- 集成测试应使用 `__integration_tests__` 目录结构
|
|
|
|
|
+- 测试工具函数位于 `src/server/__test_utils__/`
|
|
|
|
|
+
|
|
|
|
|
+### 现有测试基础设施 [Source: 现有代码分析]
|
|
|
|
|
+- 已有测试工具: `src/server/__test_utils__/api-client.ts`
|
|
|
|
|
+- 已有测试工具: `src/server/__test_utils__/test-db.ts`
|
|
|
|
|
+- 已有集成测试示例: `src/server/api/__integration_tests__/users.integration.test.ts`
|
|
|
|
|
+- 需要增强为实际数据库连接而不是mock
|
|
|
|
|
+
|
|
|
|
|
+### 测试标准要求 [Source: architecture/coding-standards.md#测试标准]
|
|
|
|
|
+- 测试文件命名: `*.integration.test.ts`
|
|
|
|
|
+- 测试组织: 使用describe/it块结构
|
|
|
|
|
+- 断言风格: Expect语法
|
|
|
|
|
+- 测试数据: 使用工厂函数创建测试数据
|
|
|
|
|
+
|
|
|
|
|
+### API端点信息 [Source: architecture/api-design-integration.md]
|
|
|
|
|
+- **认证**: JWT Bearer Token认证机制
|
|
|
|
|
+- **版本控制**: `/api/v1/` 前缀
|
|
|
|
|
+- **用户管理端点**:
|
|
|
|
|
+ - GET `/api/v1/users` - 获取用户列表
|
|
|
|
|
+ - POST `/api/v1/users` - 创建用户
|
|
|
|
|
+ - GET `/api/v1/users/:id` - 获取用户详情
|
|
|
|
|
+ - PUT `/api/v1/users/:id` - 更新用户
|
|
|
|
|
+ - DELETE `/api/v1/users/:id` - 删除用户
|
|
|
|
|
+
|
|
|
|
|
+### 安全考虑 [Source: architecture/security-integration.md]
|
|
|
|
|
+- 测试环境使用独立的测试数据库
|
|
|
|
|
+- 测试数据不包含真实用户信息
|
|
|
|
|
+- 测试完成后清理所有测试数据
|
|
|
|
|
+- 认证token在测试中安全处理
|
|
|
|
|
+
|
|
|
|
|
+## Testing
|
|
|
|
|
+### 测试策略
|
|
|
|
|
+- **测试类型**: 集成测试(实际HTTP请求 + 真实数据库)
|
|
|
|
|
+- **测试范围**: 所有核心用户管理API端点
|
|
|
|
|
+- **测试数据**: 使用工厂模式创建测试用户和数据
|
|
|
|
|
+- **清理机制**: 每个测试用例后清理测试数据
|
|
|
|
|
+
|
|
|
|
|
+### 测试验证点
|
|
|
|
|
+- HTTP状态码验证
|
|
|
|
|
+- 响应数据结构验证
|
|
|
|
|
+- 数据库状态验证
|
|
|
|
|
+- 错误处理验证
|
|
|
|
|
+- 性能基准验证(响应时间 < 200ms)
|
|
|
|
|
+
|
|
|
|
|
+### 测试报告
|
|
|
|
|
+- Vitest测试报告生成
|
|
|
|
|
+- 覆盖率报告集成
|
|
|
|
|
+- CI/CD流水线测试结果展示
|
|
|
|
|
+
|
|
|
|
|
+## Change Log
|
|
|
|
|
+| Date | Version | Description | Author |
|
|
|
|
|
+|------|---------|-------------|--------|
|
|
|
|
|
+| 2025-09-17 | 1.0 | 初始故事创建 | Bob (SM) |
|
|
|
|
|
+
|
|
|
|
|
+## Dev Agent Record
|
|
|
|
|
+
|
|
|
|
|
+### Agent Model Used
|
|
|
|
|
+
|
|
|
|
|
+### Debug Log References
|
|
|
|
|
+
|
|
|
|
|
+### Completion Notes List
|
|
|
|
|
+
|
|
|
|
|
+### File List
|
|
|
|
|
+
|
|
|
|
|
+## QA Results
|