🤖 MBE Desktop 注册功能自动化测试指南

创建日期: 2026-02-08
测试脚本: scripts\test-registration-simple.ps1


📋 快速开始

1. 启动后端服务

选项 A: 使用 Docker(推荐)

cd d:\Mises
docker-compose up -d

选项 B: 使用 PowerShell 脚本

cd d:\Mises\mbe-desktop
.\scripts\start-backend.ps1

验证后端运行:

Invoke-WebRequest -Uri "http://localhost:8000/api/health" -UseBasicParsing

应该返回: {"status":"healthy","service":"mises-behavior-engine"}


2. 运行自动化测试

cd d:\Mises\mbe-desktop
powershell -ExecutionPolicy Bypass -File scripts\test-registration-simple.ps1

🧪 测试用例说明

✅ 测试 1: 后端健康检查

  • 目的: 验证后端服务是否运行
  • 预期: 返回 200 OK,状态为 healthy

✅ 测试 2: 新用户注册

  • 目的: 验证注册功能正常工作
  • 检查项:
    • ✅ 返回 access_token
    • ✅ 返回 refresh_token(修复重点)
    • ✅ 返回 user_id
    • ✅ 状态码为 200201

✅ 测试 3: 重复邮箱注册

  • 目的: 验证错误处理
  • 预期: 返回 400 Bad Request,错误信息包含"邮箱已注册"

✅ 测试 4: 必填字段验证

  • 目的: 验证前端和后端验证
  • 测试项:
    • 缺少邮箱 → 应返回 400422
    • 缺少密码 → 应返回 400422

📊 测试结果示例

✅ 成功示例

============================================================
MBE Desktop Registration Test
============================================================

Test 1: Backend Health Check
PASS: Backend is running

Test 2: New User Registration
PASS: Registration successful
  User ID: 12345678-1234-1234-1234-123456789abc
  Access Token: Present
  Refresh Token: Present

Test 3: Duplicate Email Registration
PASS: Duplicate email returns 400

Test 4: Required Fields Validation
PASS: Missing email validation works
PASS: Missing password validation works

============================================================
Test Summary
============================================================
Total: 5
Passed: 5
Failed: 0
Success Rate: 100.0%

All tests passed! Registration fix is working!

❌ 失败示例

Test 2: New User Registration
FAIL: Missing required fields in response
  (缺少 refresh_token)

Test Summary
Total: 5
Passed: 3
Failed: 2
Success Rate: 60.0%

Some tests failed. Please check the errors above.

🔍 故障排查

问题 1: 后端服务无法访问

错误信息:

FAIL: Backend not accessible: 无法连接到远程服务器

解决方法:

  1. 检查后端服务是否运行:
    docker ps | Select-String "mbe"
    
  2. 检查端口是否被占用:
    Get-NetTCPConnection | Where-Object {$_.LocalPort -eq 8000}
    
  3. 查看后端日志:
    docker logs mbe-api-dev --tail 50
    

问题 2: 注册返回 500 错误

可能原因: 数据库表缺少 nickname

解决方法:

-- 连接到 PostgreSQL 数据库
ALTER TABLE users ADD COLUMN IF NOT EXISTS nickname TEXT DEFAULT 'user';

问题 3: 测试脚本执行失败

错误: PowerShell 执行策略限制

解决方法:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

或使用:

powershell -ExecutionPolicy Bypass -File scripts\test-registration-simple.ps1

📝 手动测试步骤

如果自动化测试无法运行,可以手动测试:

1. 使用 Postman 或 curl

注册新用户:

$body = @{
    email = "test@mbe-dev.com"
    password = "Test@123456"
    username = "TestUser"
} | ConvertTo-Json

Invoke-RestMethod -Uri "http://localhost:8000/api/v1/users/register" `
    -Method Post `
    -Body $body `
    -ContentType "application/json"

检查响应:

  • ✅ 应包含 access_token
  • ✅ 应包含 refresh_token(修复重点)
  • ✅ 应包含 user_id

2. 在 MBE Desktop 应用中测试

  1. 启动 Desktop 应用:

    cd d:\Mises\mbe-desktop
    npm run dev:electron
    
  2. 在 Electron 窗口中:

    • 点击"免费注册"
    • 填写注册信息
    • 点击"创建账号"
    • F12 打开开发者工具查看 Network 请求
  3. 验证:

    • ✅ 注册成功后自动跳转到 Dashboard
    • ✅ Console 显示 Token 已保存
    • ✅ Network 显示 refresh_token 在响应中

✅ 测试通过标准

所有以下条件满足时,注册功能修复成功:

  1. ✅ 新用户可以成功注册
  2. ✅ 注册响应包含 refresh_token
  3. ✅ 重复邮箱返回正确的错误信息
  4. ✅ 必填字段验证正常工作
  5. ✅ 数据库操作成功(无 nickname 列错误)

📞 支持

如果测试失败,请检查:

  1. 后端服务日志
  2. 数据库连接状态
  3. API 响应内容
  4. 网络连接

相关文档:

  • docs\TEST_REGISTRATION.md - 详细测试指南
  • docs\FIX_REGISTRATION_ERROR.md - 修复说明
  • docs\TROUBLESHOOTING.md - 故障排查

最后更新: 2026-02-08