mirror of
https://devops.lemonos.cn/lawson/FendxPHP.git
synced 2026-06-15 23:12:49 +08:00
- 创建用户表(users)包含基本信息和认证字段 - 创建角色表(roles)用于权限控制 - 创建权限表(permissions)定义系统权限 - 创建用户角色关联表(user_roles)建立用户与角色关系 - 创建角色权限关联表(role_permissions)建立角色与权限关系 - 创建迁移记录表(migrations)追踪数据库变更 - 添加AdminController提供管理员面板功能 - 实现系统监控、配置管理、缓存清理等功能 - 添加AOP切面编程支持的各种通知类型 - 实现告警管理AlertManager支持多渠道告警 - 添加文档注解接口规范
7.6 KiB
7.6 KiB
FendxPHP 冒烟测试指南
🎯 测试目标
验证FendxPHP框架核心功能是否正常工作,确保框架可以正常运行。
📋 测试环境要求
- PHP >= 8.1
- MySQL >= 5.7
- Redis >= 5.0
- Composer
🚀 快速启动测试
1. 环境准备
# 克隆项目
git clone <repository-url>
cd FendxPHP
# 安装依赖(如果有)
composer install
# 创建数据库
mysql -u root -p -e "CREATE DATABASE fendx CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 配置数据库连接
# 编辑 config/database.php 文件
2. 启动Web服务
# 启动PHP内置服务器
php -S localhost:8000 -t public
# 或使用其他Web服务器指向 public 目录
3. 基础冒烟测试
3.1 健康检查测试
# 测试基础路由
curl -X GET http://localhost:8000/health
# 预期响应
{
"code": 200,
"message": "OK",
"data": {
"status": "healthy",
"timestamp": "2024-01-01 12:00:00"
},
"traceId": "trace_xxx"
}
3.2 用户API测试
# 1. 创建用户
curl -X POST http://localhost:8000/api/users \
-H "Content-Type: application/json" \
-d '{
"username": "testuser",
"email": "test@example.com",
"password": "password123"
}'
# 预期响应
{
"code": 200,
"message": "User created successfully",
"data": {
"id": 1,
"username": "testuser",
"email": "test@example.com",
"status": 1,
"created_at": "2024-01-01 12:00:00",
"updated_at": "2024-01-01 12:00:00"
},
"traceId": "trace_xxx"
}
# 2. 获取用户列表
curl -X GET http://localhost:8000/api/users
# 3. 获取用户详情
curl -X GET http://localhost:8000/api/users/1
# 4. 更新用户
curl -X PUT http://localhost:8000/api/users/1 \
-H "Content-Type: application/json" \
-d '{
"username": "updateduser"
}'
# 5. 删除用户
curl -X DELETE http://localhost:8000/api/users/1
3.3 缓存功能测试
# 测试缓存接口(需要先创建用户)
curl -X GET http://localhost:8000/api/users/1
# 第二次请求应该从缓存返回
curl -X GET http://localhost:8000/api/users/1
3.4 错误处理测试
# 测试404错误
curl -X GET http://localhost:8000/api/nonexistent
# 预期响应
{
"code": 404,
"message": "Route not found",
"data": null,
"traceId": "trace_xxx"
}
# 测试参数验证错误
curl -X POST http://localhost:8000/api/users \
-H "Content-Type: application/json" \
-d '{
"username": "",
"email": "invalid-email"
}'
# 预期响应
{
"code": 422,
"message": "Validation failed",
"data": {
"username": ["The username field is required."],
"email": ["The email must be a valid email address."]
},
"traceId": "trace_xxx"
}
🔧 详细功能测试
1. 核心组件测试
1.1 IOC容器测试
// 创建测试文件 test_container.php
<?php
require_once 'fendx-framework/fendx-starter/src/Bootstrap.php';
use Fendx\Core\Container\Container;
use App\Service\UserService;
$container = new Container();
$container->singleton(UserService::class);
$userService = $container->make(UserService::class);
echo "IOC Container Test: " . ($userService instanceof UserService ? "PASS" : "FAIL") . "\n";
1.2 路由系统测试
// 创建测试文件 test_router.php
<?php
require_once 'fendx-framework/fendx-starter/src/Bootstrap.php';
use Fendx\Web\Route\Router;
use Fendx\Web\Request\Request;
$router = new Router();
$router->get('/test', function() { return 'test'; });
$request = new Request();
// 模拟请求测试
echo "Router Test: PASS\n";
1.3 数据库连接测试
// 创建测试文件 test_database.php
<?php
require_once 'fendx-framework/fendx-starter/src/Bootstrap.php';
use Fendx\Db\DB;
try {
$pdo = DB::pdo();
$result = $pdo->query('SELECT 1')->fetch();
echo "Database Test: " . ($result ? "PASS" : "FAIL") . "\n";
} catch (Exception $e) {
echo "Database Test: FAIL - " . $e->getMessage() . "\n";
}
1.4 缓存连接测试
// 创建测试文件 test_cache.php
<?php
require_once 'fendx-framework/fendx-starter/src/Bootstrap.php';
use Fendx\Cache\Cache;
try {
Cache::set('test_key', 'test_value', 60);
$value = Cache::get('test_key');
echo "Cache Test: " . ($value === 'test_value' ? "PASS" : "FAIL") . "\n";
} catch (Exception $e) {
echo "Cache Test: FAIL - " . $e->getMessage() . "\n";
}
2. 注解功能测试
2.1 控制器注解测试
# 测试注解路由是否正常工作
curl -X GET http://localhost:8000/api/users/stats
# 预期响应包含用户统计信息
{
"code": 200,
"message": "Success",
"data": {
"total_users": 0,
"active_users": 0,
"inactive_users": 0
},
"traceId": "trace_xxx"
}
2.2 缓存注解测试
# 第一次请求
time curl -X GET http://localhost:8000/api/users/active
# 第二次请求(应该更快,从缓存返回)
time curl -X GET http://localhost:8000/api/users/active
3. 拦截器测试
3.1 认证拦截器测试
# 测试需要认证的接口(不携带token)
curl -X GET http://localhost:8000/api/users/protected
# 预期响应
{
"code": 401,
"message": "Unauthorized",
"data": null,
"traceId": "trace_xxx"
}
# 测试携带token的请求
curl -X GET http://localhost:8000/api/users/protected \
-H "Authorization: Bearer your_token_here"
📊 性能基准测试
1. 简单性能测试
# 使用ab工具进行压力测试
ab -n 1000 -c 10 http://localhost:8000/health
# 预期结果
# Requests per second: > 1000
# Time per request: < 10ms
2. 内存使用测试
# 监控内存使用
php -d memory_limit=128M -S localhost:8000 -t public
# 在另一个终端执行
curl -X GET http://localhost:8000/api/users
🐛 常见问题排查
1. 启动失败
# 检查PHP版本
php --version
# 检查必需扩展
php -m | grep -E "(pdo|redis|json|mbstring)"
# 检查文件权限
ls -la runtime/
chmod -R 755 runtime/
2. 数据库连接失败
# 测试数据库连接
mysql -h 127.0.0.1 -u root -p fendx -e "SELECT 1;"
# 检查配置文件
cat config/database.php
3. 缓存连接失败
# 测试Redis连接
redis-cli ping
# 检查Redis配置
cat config/cache.php
4. 路由不工作
# 检查路由配置
cat config/routes.php
# 检查控制器文件
ls -la app/Controller/
# 查看错误日志
tail -f runtime/logs/fendx.log
✅ 测试检查清单
- Web服务正常启动
- 健康检查接口返回200
- 用户CRUD接口正常工作
- 数据库连接正常
- 缓存功能正常
- 错误处理正确
- 日志记录正常
- 性能指标达标
- 注解功能正常
- 拦截器工作正常
📝 测试报告模板
FendxPHP 冒烟测试报告
=====================
测试时间: 2024-01-01 12:00:00
测试环境: PHP 8.1, MySQL 8.0, Redis 6.0
测试结果:
✅ 基础路由 - PASS
✅ 用户API - PASS
✅ 数据库连接 - PASS
✅ 缓存功能 - PASS
✅ 错误处理 - PASS
✅ 性能测试 - PASS
发现问题:
- 无
性能指标:
- QPS: 1500
- 响应时间: 5ms
- 内存使用: 8MB
结论: 框架运行正常,可以投入使用。
🚨 测试失败处理
如果测试失败,按以下步骤排查:
- 检查错误日志:
runtime/logs/fendx.log - 验证配置文件: 确保所有配置正确
- 检查环境依赖: 确保PHP版本和扩展满足要求
- 逐步测试: 从最简单的功能开始测试
- 查看详细错误: 使用
php -f运行文件查看具体错误
完成所有测试后,框架即可投入生产使用!