Smail/docs/配置系统重构测试基线.md
smail f60d3b0880
Some checks are pending
Security Checks / security (push) Waiting to run
整理前后端与测试构建目录并完善配置和安全引导
统一 frontend、backend、test、test-log 和 out 目录,更新构建、部署及测试入口;纳入配置管理兼容与首次安全引导修复;排除本机配置、密钥和测试产物。
2026-09-05 19:19:52 +08:00

5.0 KiB
Raw Blame History

Smail 配置系统重构测试基线

1. 基线信息

  • 记录日期:2026-08-27
  • 工作目录:D:\Desktop\Smail
  • 当前验证平台:Windows 开发环境
  • 后端模块:server
  • 前端模块:frontend
  • 测试原则:只使用临时目录、内存数据或测试数据库;不读取、不提交、不打印真实密码、私钥、数据库连接串、SMTP 凭据或配置主密钥。

本文件记录当前可重复执行的自动化基线,不代表 Ubuntu、Windows 生产服务、真实 SMTP、真实 MySQL、真实 PostgreSQL、多实例部署或最终发布验收已经完成。

2. 后端基线命令

在 PowerShell 中执行:

Set-Location D:\Desktop\Smail\backend
go test ./... -count=1
go vet ./...
go test ./db/migration ./db -count=1

三数据库迁移集成测试使用环境变量提供测试 DSN,禁止把凭据写入命令行历史、文档、代码或远程地址:

$env:SMAIL_TEST_MYSQL_DSN = '<测试环境提供的 MySQL DSN>'
$env:SMAIL_TEST_POSTGRES_DSN = '<测试环境提供的 PostgreSQL DSN>'
go test ./db/migration -run 'Test(MySQL|Postgres)Integration' -count=1

未设置上述变量时,集成测试会安全跳过;跳过结果必须记录为“未验证”,不能写成测试通过。

3. 前端基线命令

在 PowerShell 中执行:

Set-Location D:\Desktop\Smail\frontend
yarn.cmd build

如需只读执行代码检查,不使用项目中带有 --fix 的快捷脚本:

yarn.cmd eslint . --ext .vue,.js,.jsx,.cjs,.mjs --ignore-path .gitignore

前端构建产生的 frontend/dist 属于忽略目录,不应据此覆盖、提交或删除用户已有的配置、密钥和可执行文件。

4. 测试分类

分类 主要范围 基线命令或测试入口
单元测试 配置、授权、认证、恢复、协议和工具函数 go test ./... -count=1
数据库迁移 版本连续性、方言覆盖、首次执行、重复执行、并发锁、校验和冲突和失败回滚 go test ./db/migration ./db -count=1
数据库集成 MySQL、PostgreSQL 测试数据库的建表、重复执行、并发和失败恢复 TestMySQLIntegration、TestPostgresIntegration
静态检查 Go 编译器和潜在错误检查 go vet ./...
前端构建 Vue、Vite、依赖解析和生产构建 yarn.cmd build
安全回归 敏感字段脱敏、能力默认拒绝、恢复码边界和错误响应 对应 *_test.go 安全测试
浏览器验收 页面布局、登录恢复、配置页面和响应数据泄露 需使用独立浏览器实例和独立端口,当前基线不替代真实浏览器验收
跨平台验收 Windows 开发模式、Ubuntu 22.04、Ubuntu 24.04、systemd、Named Pipe 和 Unix Domain Socket 需在对应真实环境执行,当前未完成

5. 2026-08-27 执行结果

检查项 结果 说明
go test ./... -count=1 通过 后端全部测试包通过,无失败项
go vet ./... 通过 未发现 vet 问题
go test ./db/migration ./db -count=1 通过 SQLite 迁移和数据库初始化测试通过
默认迁移注册表覆盖测试 通过 版本连续、名称非空、三种数据库方言均有 SQL 或自定义 Apply
MySQL 集成测试 未验证 未配置 SMAIL_TEST_MYSQL_DSN,测试按设计跳过
PostgreSQL 集成测试 未验证 未配置 SMAIL_TEST_POSTGRES_DSN,测试按设计跳过
yarn.cmd build 通过 Vite 生产构建通过;存在大资源分块提示,不影响本次构建结果
Ubuntu 22.04/24.04 未验证 当前环境不是 Ubuntu
Windows 生产服务 未验证 当前仅完成 Windows 开发环境自动化检查
真实多实例、SMTP 和生产观测 未验证 需要部署环境、测试凭据和独立验收记录

6. 安全和脱敏检查

  • 测试 DSN 只通过临时环境变量注入,文档只保留占位符。
  • 测试失败信息不应包含完整 SQL、密码、私钥、密文、恢复码、验证码或数据库连接串。
  • 迁移测试夹具使用临时 SQLite 文件和临时目录,不操作项目配置目录。
  • 真实的 backend/config/dkim/dkim.priv、backend/config/ssl/private.key 和已有可执行文件不属于测试输入,不得被测试覆盖、删除或提交。
  • MySQL/PostgreSQL 集成测试必须使用一次性测试数据库或测试 schema,并在独立环境中清理;清理动作不得指向生产数据库。

7. 当前未完成项

  1. CG-004 仍需复审本基线的跨平台可重复性和责任边界。
  2. MySQL、PostgreSQL 的真实集成测试需要安全提供 DSN 后执行,当前不能以跳过替代验收。
  3. Ubuntu 22.04、Ubuntu 24.04、Windows 服务、systemd、Named Pipe 和 Unix Domain Socket 需要真实平台测试。
  4. 前端仍需独立浏览器实例完成页面、权限、恢复流程和敏感数据泄露检查。
  5. 真实 SMTP、多实例、生产日志/指标/追踪/缓存/队列/错误报告哨兵和发布流程仍需单独验收。