edit | blame | history | raw

Round 3 QA 测试计划:Moonshine English 默认模型

状态:v0.1 QA 计划稿
所属子项目:02-P-NBL
Round:Round 3
日期:2026-06-03
输入文档:

1. QA 目标

Round 3 的 QA 目标是证明:

English 语言版本默认使用 Moonshine English,中文 SenseVoice 路径不退化,且模型下载/初始化失败不会破坏用户数据。

重点验证:

  • English fresh user 默认 Moonshine。
  • Chinese fresh user 默认 SenseVoice。
  • 老中文用户升级不被强制下载 Moonshine。
  • Moonshine 可下载、校验、加载、离线识别。
  • 语言切换会带动 current model 同步。
  • Moonshine 失败不破坏 SenseVoice、userdict、history、replacement。

2. 测试范围

2.1 本轮必须测

  • moonshine-en profile。
  • Moonshine required files 校验。
  • English language default model。
  • current model resolver。
  • onboarding 下载 current model。
  • Moonshine engine 初始化。
  • 英文离线识别和 history 写入。
  • 中文 SenseVoice 回归。
  • 语言切换后的模型同步。
  • 下载失败保护。
  • 缺文件保护。
  • 老用户升级保护。

2.2 本轮不测

  • Parakeet。
  • Qwen3-ASR。
  • Moonshine v2。
  • realtime partial transcript。
  • 模型选择页。
  • 模型删除 UI。
  • 30+ 语言列表。
  • Developer ID 签名和 notarization。

3. QA 进入标准

研发移交 QA 前必须提供:

  • 可运行构建或分支。
  • 变更范围说明。
  • go test ./... -count=1 结果。
  • npm run build 结果。
  • current model resolver 说明。
  • Moonshine 下载 URL。
  • 已知风险说明。

4. 测试环境

项目 要求
OS macOS
芯片 Apple Silicon 必测;Intel 如仍支持则抽测
网络 联网、断网
语言 zh-CNen、其他语言 fallback
用户状态 老中文用户、新中文用户、新 English 用户、缺文件用户
模型状态 SenseVoice 已安装、Moonshine 未安装、Moonshine 已安装、Moonshine 缺文件

系统语言不建议反复真实修改 macOS 全局设置作为唯一手段。自动化和半自动 QA 可以用临时用户数据目录、config 手动语言设置、mock detector 或启动环境配合验证。

5. 测试矩阵

ID 场景 前置条件 期望结果
R3-QA-001 Moonshine profile 查询 moonshine-en profile 存在,backend=moonshine
R3-QA-002 Moonshine required files valid 五个 required files 完整 校验通过
R3-QA-003 Moonshine required files missing 删除任意一个 required file 校验失败
R3-QA-004 English default model effective language=en,auto model current model=moonshine-en
R3-QA-005 Chinese default model effective language=zh-CN,auto model current model=sensevoice-zh
R3-QA-006 旧配置兼容 ModelSelectionMode 默认 auto,不锁死旧 SelectedModelID
R3-QA-007 English fresh onboarding 干净 App Support + English 下载 Moonshine
R3-QA-008 Chinese fresh onboarding 干净 App Support + 中文 下载/使用 SenseVoice
R3-QA-009 老中文用户升级 已有 SenseVoice/userdict/history 不下载 Moonshine,数据不丢
R3-QA-010 Moonshine 加载 Moonshine 完整安装 engine ready,硬件信息可区分 Moonshine
R3-QA-011 英文离线识别 Moonshine ready + 断网 英文语音可识别
R3-QA-012 history 写入 英文识别完成 history.json 新增英文记录
R3-QA-013 replacement 不退化 中文 replacement 已配置 中文回归仍生效
R3-QA-014 中文回归 SenseVoice ready 中文离线识别可用
R3-QA-015 中文切 English SenseVoice installed,Moonshine missing 进入 Moonshine 下载/need_model
R3-QA-016 English 切中文 Moonshine installed,SenseVoice installed 切回 SenseVoice
R3-QA-017 Moonshine 下载失败 阻断网络或坏 URL 不删除 SenseVoice,不写入有效 Moonshine 状态
R3-QA-018 Moonshine 初始化失败 模型完整但强制 provider/路径异常 状态 error,数据不丢
R3-QA-019 staging 清理 下载失败后 .staging 不被当成可用模型
R3-QA-020 UI 文案 English onboarding 没有中文模型写死文案
R3-QA-021 重启持久化 English + Moonshine installed 后重启 仍为 Moonshine ready
R3-QA-022 其他系统语言 fallback detector=fr-FR effective=en,current model=moonshine-en

6. 自动化测试建议

后端优先覆盖:

  • GetModelProfile("moonshine-en")
  • ValidateModelDir(moonshine-en)
  • ResolveCurrentModel
  • ModelSelectionMode normalize。
  • Engine backend dispatch。
  • Unknown backend error。
  • Download source validation。

建议命令:

cd privatevoice.src
go test ./...

前端至少执行:

cd privatevoice.src/frontend
npm run build

7. 手工测试步骤

7.1 English 新用户路径

  1. 备份真实 App Support。
  2. 使用临时干净 App Support 或临时 HOME。
  3. 模拟 English effective language。
  4. 启动 App。
  5. 检查 UI 是 English。
  6. 检查 onboarding 下载 Moonshine。
  7. 下载完成后检查 engine ready。
  8. 断网。
  9. 按 R-Alt 说一段英文。
  10. 检查识别结果和 history.json

通过标准:

  • 不下载 SenseVoice。
  • Moonshine 模型目录为 models/moonshine-en
  • 英文识别结果写入 history。
  • 断网时不访问网络也能识别。

7.2 中文老用户升级路径

  1. 使用真实或复制的老用户数据,包含 SenseVoice、userdict、history。
  2. 启动 Round 3 App。
  3. 检查 current model 为 sensevoice-zh
  4. 做一次中文识别。
  5. 检查 replacement 和 history。

通过标准:

  • 不触发 Moonshine 下载。
  • 不改写或删除 SenseVoice。
  • 用户词库和历史保留。

7.3 语言切换路径

  1. 中文状态下打开设置页。
  2. 切到 English。
  3. 检查 UI 立即变英文。
  4. 检查 current model 变为 Moonshine。
  5. 如果未安装,下载 Moonshine。
  6. 切回中文。
  7. 检查 current model 恢复 SenseVoice。

通过标准:

  • 切换语言时模型跟随 effective language。
  • 两个模型都保留。
  • 切换失败不破坏原模型。

7.4 下载失败保护

  1. 准备已安装 SenseVoice。
  2. 让 English current model 指向 Moonshine。
  3. 模拟 Moonshine 下载失败。
  4. 检查 SenseVoice 目录和 state。
  5. 切回中文并识别。

通过标准:

  • Moonshine 失败不会破坏中文路径。
  • staging/incomplete 目录不被判定为 installed。

8. QA 结论标准

可标记 Round 3 功能性 QA PASS 的条件:

  • R3-QA-001 到 R3-QA-022 全部通过,或失败项有明确非阻断说明。
  • Round 2 语言设置路径未回归。
  • SenseVoice 中文核心路径未回归。
  • QA 报告记录版本、build、commit、测试包、日志和关键证据。