Files
FendxPHP/docs/快速测试指南.md
Lawson 2782d765fb feat(database): 添加用户角色权限系统及相关监控功能
- 创建用户表(users)包含基本信息和认证字段
- 创建角色表(roles)用于权限控制
- 创建权限表(permissions)定义系统权限
- 创建用户角色关联表(user_roles)建立用户与角色关系
- 创建角色权限关联表(role_permissions)建立角色与权限关系
- 创建迁移记录表(migrations)追踪数据库变更
- 添加AdminController提供管理员面板功能
- 实现系统监控、配置管理、缓存清理等功能
- 添加AOP切面编程支持的各种通知类型
- 实现告警管理AlertManager支持多渠道告警
- 添加文档注解接口规范
2026-04-08 17:00:28 +08:00

399 lines
7.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.
# FendxPHP 快速测试指南
## 🚀 快速开始
### 1. 环境准备
```bash
# 克隆项目
git clone https://github.com/your-org/fendx-php.git
cd fendx-php
# 安装依赖
composer install
# 复制环境配置
cp .env.example .env
```
### 2. 运行测试
#### Windows 环境
```powershell
# 运行所有测试
.\scripts\run-tests.ps1
# 运行单元测试
.\scripts\run-tests.ps1 unit --coverage
# 运行集成测试
.\scripts\run-tests.ps1 integration
# 运行API测试
.\scripts\run-tests.ps1 api
# 运行性能测试
.\scripts\run-tests.ps1 performance
```
#### Linux/Mac 环境
```bash
# 设置执行权限
chmod +x scripts/run-tests.sh
# 运行所有测试
./scripts/run-tests.sh
# 运行单元测试
./scripts/run-tests.sh unit --coverage
# 运行集成测试
./scripts/run-tests.sh integration
# 运行API测试
./scripts/run-tests.sh api
# 运行性能测试
./scripts/run-tests.sh performance
```
### 3. 使用控制台命令
```bash
# 运行单元测试
php bin/console test:unit
# 运行集成测试
php bin/console test:integration
# 运行API测试
php bin/console test:api
# 运行性能测试
php bin/console test:performance
# 运行所有测试
php bin/console test:all --coverage
```
## 📊 测试类型说明
### 单元测试 (Unit Tests)
- **位置**: `tests/Unit/`
- **用途**: 测试单个类和方法
- **运行时间**: 快速 (< 1分钟)
- **覆盖率**: 代码覆盖率分析
```bash
# 运行单元测试
php bin/console test:unit --coverage
# 过滤特定测试
php bin/console test:unit --filter=UserTest
```
### 集成测试 (Integration Tests)
- **位置**: `tests/Integration/`
- **用途**: 测试组件间交互
- **运行时间**: 中等 (2-5分钟)
- **环境**: 需要数据库和缓存
```bash
# 运行集成测试
php bin/console test:integration
# 使用Docker环境
./scripts/run-tests.sh integration --no-docker=false
```
### API测试 (API Tests)
- **位置**: `tests/API/`
- **用途**: 测试HTTP接口
- **运行时间**: 中等 (3-8分钟)
- **环境**: 需要完整应用服务
```bash
# 运行API测试
php bin/console test:api
# 启动服务器进行测试
php -S localhost:8000 -t public/
vendor/bin/codecept run api
```
### 性能测试 (Performance Tests)
- **位置**: `tests/Performance/`
- **用途**: 性能基准测试
- **运行时间**: 较长 (5-15分钟)
- **指标**: 响应时间、吞吐量、内存使用
```bash
# 运行性能测试
php bin/console test:performance
# 并发测试
ab -n 1000 -c 10 http://localhost:8000/api/users
```
### 安全测试 (Security Tests)
- **位置**: `tests/Security/`
- **用途**: 安全漏洞扫描
- **运行时间**: 中等 (2-5分钟)
- **检查**: 依赖漏洞、代码安全
```bash
# 运行安全测试
php bin/console test:security
# 依赖审计
composer audit
```
## 🐳 Docker测试环境
### 启动测试环境
```bash
# 启动所有测试服务
docker-compose -f docker-compose.test.yml up -d
# 查看服务状态
docker-compose -f docker-compose.test.yml ps
# 查看日志
docker-compose -f docker-compose.test.yml logs -f app
```
### 测试服务说明
| 服务 | 端口 | 用途 |
|------|------|------|
| **app** | - | PHP应用 |
| **mysql-test** | 3307 | 测试数据库 |
| **redis-test** | 6380 | 测试缓存 |
| **nginx-test** | 8080 | Web服务器 |
| **selenium-hub** | 4444 | 浏览器自动化 |
| **mailhog** | 8025 | 邮件测试 |
| **minio** | 9000 | 对象存储测试 |
### 停止测试环境
```bash
# 停止并清理
docker-compose -f docker-compose.test.yml down --volumes
# 清理所有测试数据
docker-compose -f docker-compose.test.yml down --volumes --remove-orphans
```
## 📈 测试报告
### 查看覆盖率报告
```bash
# HTML报告
open reports/coverage/index.html
# XML报告用于CI/CD
cat reports/coverage.xml
```
### 查看测试结果
```bash
# JUnit格式报告
cat reports/junit.xml
# 完整测试报告
open reports/test-report.html
```
### 性能测试结果
```bash
# 查看并发测试结果
cat reports/performance/ab-results.txt
# 查看内存测试结果
cat reports/performance/memory-test.txt
# 查看数据库性能
cat reports/performance/database-test.txt
```
## 🔧 故障排查
### 常见问题
#### 1. 依赖安装失败
```bash
# 清理并重新安装
rm -rf vendor/
composer install --no-cache
# 更新Composer
composer self-update
```
#### 2. 数据库连接失败
```bash
# 检查MySQL服务
docker-compose -f docker-compose.test.yml logs mysql-test
# 重启数据库
docker-compose -f docker-compose.test.yml restart mysql-test
```
#### 3. 测试超时
```bash
# 增加超时时间
php -d max_execution_time=300 bin/console test:integration
# 并行运行
./scripts/run-tests.sh all --parallel=4
```
#### 4. 内存不足
```bash
# 增加内存限制
php -d memory_limit=1G bin/console test:unit
# 检查内存使用
php -d memory_limit=1G -r "echo memory_get_usage(true) / 1024 / 1024 . ' MB\n';"
```
### 调试技巧
#### 1. 详细输出
```bash
# 详细模式
php bin/console test:unit --verbose
# 调试模式
XDEBUG_MODE=debug php bin/console test:unit
```
#### 2. 单个测试
```bash
# 运行单个测试类
vendor/bin/phpunit tests/Unit/UserServiceTest.php
# 运行单个测试方法
vendor/bin/phpunit --filter testRegisterSuccess tests/Unit/UserServiceTest.php
```
#### 3. 停止在失败处
```bash
# 遇到失败停止
vendor/bin/phpunit --stop-on-failure
# 遇到错误停止
vendor/bin/phpunit --stop-on-error
```
## 🎯 测试最佳实践
### 1. 编写测试
```php
// 测试命名规范
class UserServiceTest extends TestCase
{
public function testRegisterSuccess(): void
{
// Given - 准备测试数据
$userData = ['username' => 'test', 'email' => 'test@example.com'];
// When - 执行操作
$result = $this->userService->register($userData);
// Then - 验证结果
$this->assertTrue($result['success']);
$this->assertArrayHasKey('user_id', $result);
}
}
```
### 2. Mock对象
```php
// 创建Mock对象
$userDao = $this->createMock(UserDao::class);
$userDao->method('findById')->willReturn($testUser);
// 设置期望
$userDao->expects($this->once())
->method('create')
->with($this->isInstanceOf(UserDto::class));
```
### 3. 数据库测试
```php
// 使用事务回滚
protected function setUp(): void
{
$this->app['db']->beginTransaction();
}
protected function tearDown(): void
{
$this->app['db']->rollback();
}
```
### 4. API测试
```php
// 发送HTTP请求
$response = $this->client->post('/api/users', [
'json' => ['username' => 'test', 'email' => 'test@example.com']
]);
$this->assertEquals(201, $response->getStatusCode());
$this->assertJson($response->getContent());
```
## 📋 测试检查清单
### 提交前检查
- [ ] 所有单元测试通过
- [ ] 代码覆盖率 > 80%
- [ ] 集成测试通过
- [ ] API测试通过
- [ ] 无安全漏洞
### 发布前检查
- [ ] 性能测试达标
- [ ] E2E测试通过
- [ ] 压力测试通过
- [ ] 兼容性测试通过
### 持续集成
```yaml
# .github/workflows/test.yml
name: Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
- name: Install dependencies
run: composer install
- name: Run tests
run: ./scripts/run-tests.sh
```
## 📞 获取帮助
### 文档资源
- [完整部署指南](./部署测试指南.md)
- [API文档](http://localhost:8000/docs)
- [PHPUnit文档](https://phpunit.de/documentation.html)
### 社区支持
- GitHub Issues: 报告问题和建议
- 讨论区: 技术讨论和问答
- Wiki: 详细文档和教程
---
**最后更新2024-01-15**
**版本v1.0**
**维护FendxPHP 开发团队**