# 🧪 FFOA 测试模块

> 统一测试入口（**三层全覆盖：契约 / 集成 / 端到端**）：L0a/L0b/L0c 契约 → L1（L1a+L1b）/ L1c 集成 → L2 E2E（AI + Playwright MCP）/ L3 人工验收
> 详细分层模型见 `docs/standards/05-development-workflow.md`

---

## ⚠️ 重要说明

- 测试模块已独立，所有测试命令在 `testing/` 目录中运行
- 测试总规范以 `.agents/skills/test-backend/references/testing-standards.md` 为准
- API 变更必须先通过 L0a/L0b/L0c 契约校验，再执行 L1 集成测试
- L1 集成测试默认通过 Docker 拉起独立 PostgreSQL 测试库，不复用开发数据库
- 前端连通性验证通过 **AI + Playwright MCP** 执行
- 人工验收清单放在 `testing/checklists/`

---

## 🔗 技能与规范对齐

- 测试规范入口：`.agents/skills/test-backend/references/testing-standards.md`
- 技能入口：`.agents/skills/test-main/SKILL.md`
- 前端 E2E：`.agents/skills/test-frontend/SKILL.md`
- 后端测试：`.agents/skills/test-backend/SKILL.md`

---

## 📁 目录结构

```
testing/
├── Jenkinsfile                   # Jenkins CI/CD Pipeline 配置
├── package.json                  # 测试依赖和脚本
├── README.md                     # 本文档
│
├── config/                       # 测试工具配置
│   ├── jest-backend-unit.json   # Jest 配置（后端单元测试）
│   └── jest-backend-integration.json # Jest 配置（后端集成测试）
│
├── backend/                      # 后端测试
│   ├── unit/                     # 单元测试（历史遗留/纯逻辑按需保留，不是默认路径）
│   ├── integration/              # 集成测试（默认主路径）
│   ├── helpers/                  # 通用辅助函数
│   └── fixtures/                 # 测试数据
│
├── scripts/                      # 契约校验 / 数据质量脚本
├── e2e/                          # 前端 UI E2E（AI + Playwright MCP）
├── checklists/                   # 人工验收清单
├── reports/                      # 测试报告与计划
└── docs/                        # 详细文档
```

---

## 🚀 快速开始

```bash
cd testing
npm install
```

### L0 / L1 / L1c 常用命令

```bash
# 契约校验（L0a + L0b）
npm run test:contract

# 数据质量（L1c）
npm run test:data-quality

# 后端集成测试（L1，会自动拉起测试库、重建 schema、初始化 seed）
npm run test:backend:integration

# 停止并删除测试数据库容器
npm run test:backend:integration:down
```

### 前端 E2E（AI + Playwright MCP）

```bash
# 本地启动服务后执行（必须指定模块）
npm run test:e2e -- --module <module>
```

---

## 🎯 常用命令

```bash
# L0 / L1
npm run test:contract
npm run test:data-quality
npm run test:backend:integration
npm run test:backend:integration:down

# 前端 E2E
npm run test:e2e -- --module <module>

# 汇总
npm run test:all:quality
```

---

## 📊 技术栈

- 后端：Jest + Supertest
- 契约校验：TypeScript 静态分析脚本
- 集成测试数据库：Docker PostgreSQL（测试专用）
- 前端 E2E：AI + Playwright MCP

---

## 📮 报告与规范

- 报告目录：`testing/reports/`
- 命名规则：`{module}-{YYYY-MM-DD}-{type}-report.md`

---

## ✅ 约束复核

- 契约校验先于集成测试执行
- 后端以集成测试为主
- 后端单元测试视为历史遗留资产，仅纯逻辑场景按需保留
- 集成测试禁止直连开发数据库
- 前端只保留 E2E（AI + Playwright MCP）
