Files
user-system/docs/guides/TESTING.md

163 lines
4.0 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.
# 测试指南
更新日期2026-03-24
本文档只描述当前项目已落地、已验证的测试路径。
## 1. 环境要求
- Go 1.25+
- Node.js 20+
- Windows PowerShell 环境下,如 `npm.ps1` 被策略拦截,请使用 `npm.cmd`
如果本机 Go 全局缓存目录受限,建议在执行 Go 命令前显式指定本地缓存目录:
```powershell
$env:GOMODCACHE = "D:\project\.cache\gomod"
$env:GOPATH = "D:\project\.cache\gopath"
$env:GOCACHE = "D:\project\.cache\go-build"
```
## 2. 后端验证
### 单元与集成测试
```powershell
go test ./... -count=1
```
如需执行默认回归之外的大并发压力测试,请显式开启:
```powershell
$env:RUN_STRESS_TESTS = "1"
go test ./... -count=1
```
### 静态检查
```powershell
go vet ./...
```
### 构建验证
```powershell
go build ./cmd/server
```
### 健康检查验证
启动服务后可验证:
```powershell
curl http://localhost:8080/health
curl http://localhost:8080/health/live
curl http://localhost:8080/health/ready
```
说明:
- `/health` 兼容历史探针,语义等同 readiness
- `/health/live` 只验证进程存活
- `/health/ready` 会检查数据库可用性
## 3. 前端验证
在 [`frontend/admin`](/D:/project/frontend/admin) 下执行:
```powershell
npm.cmd run test:run
npm.cmd run lint
npm.cmd run build
```
当前已补充并验证的前端重点包括:
- 认证服务契约测试
- 登录页按 `auth/capabilities` 动态展示登录方式
- 忘记密码入口按 `password_reset` 能力显隐
## 4. 真实浏览器验证
当前环境下 `playwright test` runner 会因 `spawn EPERM` 受限,因此真实浏览器验证主路径不是 runner而是“外部启动真实浏览器 + Playwright 库经 CDP 接管”。
当前 CDP 验证脚本会把以下信号视为失败:
- console error
- native dialog
- popup page
- page error
- request failure
- `401` 响应
- 被前端 `window` guard 拦截的 `alert/confirm/prompt/open`
Windows 下 `e2e:full:win``e2e:auth-smoke:win` 都会自动把 Go 缓存写到 `%TEMP%\\ums-e2e-cache`,避免工作区权限问题。
### 全量真实浏览器 E2E
```powershell
cd D:\project\frontend\admin
npm.cmd run e2e:full:win
```
当前覆盖:
- `login-surface`
- 登录页能力展示
- 未登录访问受保护路由重定向
- `auth-workflow`
- 真实登录
- 用户列表
- 用户详情抽屉
- 分配角色弹窗
- 角色页
- 分配权限弹窗
- Dashboard
- 真实登出与登出后重定向
- `responsive-login`
- desktop / tablet / mobile 视口渲染与横向溢出检查
- `desktop-mobile-navigation`
- 桌面侧边导航
- 移动端抽屉导航
### 补充页面与路由 smoke
```powershell
cd D:\project\frontend\admin
npm.cmd run e2e:smoke:win
```
当前覆盖:
- 未登录访问 `/dashboard``/users` 会重定向到 `/login`
- 登录页按后端能力动态显示可用登录方式
- 忘记密码入口按能力显隐
- 多视口下页面可正常渲染
### 补充真实认证链路 smoke
```powershell
cd D:\project\frontend\admin
npm.cmd run e2e:auth-smoke:win
```
当前覆盖:
- 从受保护路由跳转到登录页
- 真实登录后回到目标页面
- 用户列表加载
- 用户详情抽屉打开
- 分配角色弹窗打开
- 角色管理页跳转
- 分配权限弹窗打开
- Dashboard 加载
- 真实登出后再次访问受保护页面会被重定向到登录页
## 5. 边界说明
- 当前支持的 CDP 路径已经是浏览器级真实验证,不是 DOM mock。
- 当前支持的 CDP 路径不是完整 OS 级自动化。
- 不覆盖系统文件选择器、原生桌面弹窗、操作系统级权限窗口等行为。
- `e2e:full:win` 是当前受支持的主验收路径;`smoke` 脚本保留为补充诊断,不代表产品运行时仍依赖 smoke。
- 测试层的 smoke 脚本和 mock helper 是允许的,但它们不应继续进入产品运行时。
- 认证相关接口当前会统一返回 `Cache-Control: no-store` 等响应头;如果在抓包或浏览器开发者工具中看不到缓存命中,这是预期行为。