Files
vibe_coding/docs/guides/testing-strategy.md
2026-03-05 21:27:11 +08:00

126 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🧪 Testing Strategy
> 测试策略指南AI 在编写测试时参考 (PHP Hyperf + Vue 3 双栈)
---
## 前端测试框架
| 类型 | 框架 | 配置文件 |
|------|------|----------|
| 单元测试 | Vitest | `vitest.config.ts` |
| 集成测试 | Vitest + MSW | — |
| E2E 测试 | Playwright | `playwright.config.ts` |
## 后端测试框架
| 类型 | 框架 | 配置文件 |
|------|------|----------|
| 单元测试 | PHPUnit | `phpunit.xml` |
| 功能测试 | PHPUnit (HTTP) | `phpunit.xml` |
| 静态分析 | PHPStan | `phpstan.neon` |
| 代码规范 | PHP CS Fixer | `.php-cs-fixer.php` |
---
## 测试金字塔目标
### 前端
- Unit: 70% (快速、大量)
- Integration: 20% (模块协作)
- E2E: 10% (关键用户路径)
### 后端
- Unit: 60% (Service、Repository、工具类)
- Integration: 30% (API 端点、数据库交互)
- Static Analysis: 持续 (PHPStan Level max)
---
## 覆盖率目标
| 维度 | 前端 | 后端 |
|------|------|------|
| 行覆盖 | ≥ 80% | ≥ 75% |
| 分支覆盖 | ≥ 75% | ≥ 70% |
| 关键路径 | 100% | 100% |
| Service 层 | — | 100% |
---
## 运行命令
### 前端
```bash
npm run test # 运行所有单元测试
npm run test:watch # 监听模式
npm run test:coverage # 覆盖率报告
npm run test:e2e # E2E 测试 (Playwright)
```
### 后端
```bash
composer test # PHPUnit 所有测试
composer test:unit # 仅单元测试
composer test:feature # 仅功能测试 (API)
composer test:coverage # PHPUnit + 覆盖率报告
composer analyse # PHPStan 静态分析
composer cs-fix # PHP CS Fixer 格式化
```
---
## 后端测试目录结构
```
tests/
├── Unit/ # 纯单元测试(不依赖框架)
│ ├── Service/
│ │ ├── OrderServiceTest.php
│ │ └── PaymentServiceTest.php
│ ├── Repository/
│ └── Utils/
├── Feature/ # 功能测试HTTP API 级别)
│ ├── Auth/
│ │ ├── LoginTest.php
│ │ └── PermissionTest.php
│ ├── Production/
│ │ └── OrderApiTest.php
│ └── System/
│ └── HealthCheckTest.php
├── bootstrap.php
└── phpunit.xml
```
---
## CI/CD 中的测试
```yaml
# .github/workflows/ci.yml 中双栈测试
jobs:
frontend-test:
steps:
- npm ci
- npm run lint
- npm run type-check
- npm run test:coverage
backend-test:
services:
mysql:
image: mysql:8
redis:
image: redis:7-alpine
steps:
- composer install
- composer analyse # PHPStan
- composer test # PHPUnit
```
---
*最后更新: 2026-02-24*