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

122 lines
5.4 KiB
Markdown
Raw 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.

# dbtool-tui-v1 测试策略(阶段 2 分层版)
## 目标
-`dbtool-tui-v1` 的 shell baseline 验收、第二阶段 live integration 验收、以及非交互 / 发布前验证彻底拆层。
- 让 QA 对每个关键用户流都能给出“已执行通过 / 未执行 / 被 blocker 卡住”的可审计判断。
- 让 CTO 和 Product Manager 看到真实优先级:先 shared app 契约,再 live 接线,最后才是 live 验收闭环。
## 当前资产盘点
### 已存在的共享资产
- `apps/tui/src/main.rs`TUI 主实现当前包含静态连接、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.md`CTO 第二阶段范围与 gating
- `backlog/2026-03-27-dbtool-tui-v1-phase-2-issues.md`owner-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-tui``120x40` 下可启动、渲染并以 `q` 退出,退出码 `0`
- 小终端降级:同一二进制在 `90x20` 下显示 `Terminal Too Small``Resize 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 路径