mirror of
https://devops.lemonos.cn/lawson/FendxPHP.git
synced 2026-06-15 23:12:49 +08:00
feat(database): 添加用户角色权限系统及相关监控功能
- 创建用户表(users)包含基本信息和认证字段 - 创建角色表(roles)用于权限控制 - 创建权限表(permissions)定义系统权限 - 创建用户角色关联表(user_roles)建立用户与角色关系 - 创建角色权限关联表(role_permissions)建立角色与权限关系 - 创建迁移记录表(migrations)追踪数据库变更 - 添加AdminController提供管理员面板功能 - 实现系统监控、配置管理、缓存清理等功能 - 添加AOP切面编程支持的各种通知类型 - 实现告警管理AlertManager支持多渠道告警 - 添加文档注解接口规范
This commit is contained in:
398
docs/快速测试指南.md
Normal file
398
docs/快速测试指南.md
Normal file
@@ -0,0 +1,398 @@
|
||||
# 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 开发团队**
|
||||
Reference in New Issue
Block a user