初始化

This commit is contained in:
2026-03-05 21:27:11 +08:00
commit 130de0fd5d
140 changed files with 21972 additions and 0 deletions

View File

@@ -0,0 +1,125 @@
# 🧪 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*