126 lines
2.7 KiB
Markdown
126 lines
2.7 KiB
Markdown
# 🧪 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*
|