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

7.6 KiB
Raw Blame History

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

结论: 框架运行正常,可以投入使用。

🚨 测试失败处理

如果测试失败,按以下步骤排查:

  1. 检查错误日志: runtime/logs/fendx.log
  2. 验证配置文件: 确保所有配置正确
  3. 检查环境依赖: 确保PHP版本和扩展满足要求
  4. 逐步测试: 从最简单的功能开始测试
  5. 查看详细错误: 使用 php -f 运行文件查看具体错误

完成所有测试后,框架即可投入生产使用!