Files
dbtool-cli-v1/TUI_TEST_STRATEGY.md
Paperclip CTO 19aeb7784b
Some checks failed
release-smoke / macos-13 / x86_64-apple-darwin (push) Has been cancelled
release-smoke / ubuntu-latest / x86_64-unknown-linux-gnu (push) Has been cancelled
release-smoke / windows-latest / x86_64-pc-windows-msvc (push) Has been cancelled
feat: add dbtool tui live query workspace
- add shared db-app layer for connect/inspect/query/export events
- add dbtool-tui workspace with sqlite-local live flow and QA docs
- include host-validated acceptance updates for CMP-36

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-27 17:17:20 +00:00

5.4 KiB
Raw Blame History

dbtool-tui-v1 测试策略(阶段 2 分层版)

目标

  • dbtool-tui-v1 的 shell baseline 验收、第二阶段 live integration 验收、以及非交互 / 发布前验证彻底拆层。
  • 让 QA 对每个关键用户流都能给出“已执行通过 / 未执行 / 被 blocker 卡住”的可审计判断。
  • 让 CTO 和 Product Manager 看到真实优先级:先 shared app 契约,再 live 接线,最后才是 live 验收闭环。

当前资产盘点

已存在的共享资产

  • apps/tui/src/main.rsTUI 主实现当前包含静态连接、schema、query、results 示例状态
  • apps/tui/README.md:当前交互范围与产品/体验说明
  • TUI_ACCEPTANCE_CHECKLIST.md:阶段 2 分层验收矩阵
  • TUI_REGRESSION_CHECKLIST.md:阶段 2 分层回归清单
  • plans/2026-03-27-dbtool-tui-v1-phase-2-scope.mdCTO 第二阶段范围与 gating
  • backlog/2026-03-27-dbtool-tui-v1-phase-2-issues.mdowner-backed issue 分解

已发现的测试资产

  • apps/tui/src/main.rs 内已有 5 个内联测试,覆盖:
    • query 草稿切换
    • editor Enter 触发 running
    • empty query 完成态
    • results 宽表列分页
    • insert mode 录入
  • 当前存在可执行的预构建二进制:target/debug/dbtool-tui

2026-03-27 已执行证据

  • TTY shell smoke./target/debug/dbtool-tui120x40 下可启动、渲染并以 q 退出,退出码 0
  • 小终端降级:同一二进制在 90x20 下显示 Terminal Too SmallResize the terminal,退出码 0
  • 非交互限制:./target/debug/dbtool-tui --help 在当前无 TTY 场景下返回 No such device or address

当前缺口

  • 当前 runner 默认无 cargo / rustc 在 PATH
  • 虽存在离线 Rust toolchain但源码重建 / 测试仍被系统缺少 cc / zig cc 阻塞
  • 仓库暂无 TUI 专属 smoke runbook
  • .github/workflows/release-smoke.yml 当前只覆盖 dbtool
  • 当前无 TUI 专属 demo / seed / Docker 路径
  • 第二阶段 live integration 仍未整体完成:[CMP-34](/CMP/issues/CMP-34) 仍在 in_progress[CMP-35](/CMP/issues/CMP-35) 仍待宿主机回填,而 [CMP-36](/CMP/issues/CMP-36) 已完成宿主机侧验收

测试分层

1. 源码层验证

  • 目标:确认实现可重建、内联测试可运行
  • 当前命令:
    • cargo build -p dbtool-tui
    • cargo test -p dbtool-tui
  • 当前判断:
    • 这是必要层,但当前 runner 不能给出通过结论
    • cc / zig cc 时,应记录为环境 blocker不能伪造成产品失败也不能反向伪造成已通过

2. TTY shell smoke

  • 目标:最低成本确认 TUI 可启动、可渲染、可退出、可在小终端降级
  • 当前建议:
    • 使用 script + stty 固化 TTY 启动路径
    • 用预构建二进制先取证,再视环境补做源码重建后的同路径复核
  • 注意:
    • dbtool-tui 不是普通 CLI不要用 --help 替代交互 smoke

3. Shell 交互回归(静态 / 示例数据)

  • 目标:验证当前 shell 已实现的交互骨架,但不把示例状态误记为 live 能力
  • 范围:
    • 视图切换
    • 焦点切换
    • 静态连接激活
    • 静态 schema / object 浏览
    • 查询草稿切换、插入模式、运行占位、结果分页
    • 错误 / 空状态 / 恢复路径
  • 输出要求:
    • 明确标记“这是 shell 示例状态验证,不是 shared app live 数据验证”

4. 第二阶段 live integration 验收

  • 目标:在真实 shared app 接线落地后对连接、inspect、query、results、export 给出验收判断
  • 前置条件:
    • [CMP-34](/CMP/issues/CMP-34) 完成并冻结契约
    • [CMP-35](/CMP/issues/CMP-35) 完成真实连接与 schema browser 接线
    • [CMP-36](/CMP/issues/CMP-36) 完成真实 query / results / export 接线
  • 必验路径:
    • 真实连接 loading / success / failure
    • 真实 inspect ready / empty / restricted
    • 真实 query running / success / empty / error
    • export 成功 / 失败反馈
    • shared app 边界复用,无 CLI 文本解析旁路

5. 发布前 / 非交互验证

  • 目标:确认非开发者与 CI 都能重复最小验收
  • 当前判断:
    • 尚未建立
    • 若后续仍要求 TTY 启动,应在 runbook 与 workflow 中显式写清,不得假装支持普通非交互 --help / --version smoke

证据规则

  • 每个“通过”项都必须附带命令、终端尺寸、输入按键、输出摘要或错误摘要
  • 每个“未执行”项都必须标原因:未实现、缺环境、被上游 issue 卡住、或超出当前范围
  • 代码阅读、README 声明、和真实执行证据必须分开写
  • 不能用 CLI 已通过来替代 TUI 已通过
  • 不能把静态示例状态写成真实数据库能力
  • 不能把 TTY 程序的 --help 失败误写成已支持的 smoke 入口

当前优先级

  1. 保住 shell baseline 证据,不让第二阶段重构把它冲掉
  2. 等待 [CMP-34](/CMP/issues/CMP-34) 冻结 shared app 契约
  3. [CMP-35](/CMP/issues/CMP-35) / [CMP-36](/CMP/issues/CMP-36) 完成后补 live integration 验收
  4. 最后再补 TUI 专属 CI / release / runbook

当前验收判断

  • shell baseline有预构建二进制级别的可重复 smoke属“有条件通过”
  • 源码层验证:当前 runner blocked不能给通过结论
  • 第二阶段 live integration当前 blocked不能给通过结论
  • 发布前状态:未就绪,因为 dbtool-tui 仍缺 CI、release artifact smoke 和 live demo 路径