Files
cnc_wams/web-rtcp-5axis-sim-plan/working1/05-acceptance-test-plan.md
2026-07-02 08:01:34 -04:00

4.7 KiB
Raw Blame History

05 修复验收测试计划

生成时间2026-06-22

1. 验收目标

修复完成后,必须证明以下目标同时成立:

  1. RTCP frame 自动进入 LinuxCNC kinematics WASM 边界。
  2. 3D 预览首屏和程序运行后均可见。
  3. HOME 后 JOG 坐标连续。
  4. 原已通过功能不回归。

2. 本地静态和 Node 测试

2.1 构建

npm --prefix web-rtcp-5axis-sim-plan/app run build

预期:

exit code 0
无 TypeScript/ES module 打包错误

2.2 状态和 runtime smoke

按项目已有测试能力执行:

node web-rtcp-5axis-sim-plan/tests/node/verify_rtcp_store.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_five_axis_session.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_linuxcnc_kinematics_runtime.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_linuxcnc_task_hal_runtime.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_full_execution_boundary.mjs

如某个测试依赖本地构建产物缺失,应先按项目原有构建流程补齐,不要跳过。

3. 浏览器自动化验收

3.1 D1 验收:首屏 kinematics 自动 ready

打开本地或部署页面后等待最多 8 秒,断言:

const state = window.webRtcp5AxisSimulation.getState();
state.kinematicsRuntimeReadiness.loaded === true
state.sourceMode === "source-derived-kinematics-wasm"
state.frameSourceMode === "source-derived-kinematics-wasm"
state.rtcpFrame.semanticBoundary === "linuxcnc_kinematics_wasm_c_abi"

DOM 断言:

document.querySelector('[data-rtcp-diagnostic="boundary"]').textContent.includes("linuxcnc_kinematics_wasm_c_abi")
document.querySelector('[data-rtcp-diagnostic="kinematics-ready"]').textContent.includes("ready")

禁止状态:

fixture_frame_ui_plumbing_not_linuxcnc_kinematics_proof

不得作为稳定态出现。

3.2 D2 验收:预览非空

断言 canvas dataset

canvas.dataset.threeReady === "true"
Number(canvas.dataset.threeSceneObjects) > 0
canvas.dataset.threeRenderer === "webgl" || canvas.dataset.threeRenderer === "2d-fallback"

像素断言:

const stats = readCanvasPixelStats(canvas)
stats.nonBlackRatio > 0.02
stats.averageLuminance > 5

截图人工检查:

能看到工作台/坐标轴/刀具或 TCP 点/路径

至少覆盖:

首屏
加载 LinuxCNC vendored 程序后
Run 后
Open 本地 G-code 后
Audit 后

3.3 D3 验收HOME/JOG 坐标连续

自动化步骤:

click POWER
click MANUAL
click HOME
const home = state.axisPose
click X+
assert state.axisPose.x === home.x + state.machine.jogIncrement
assert state.axisPose.y === home.y
assert state.axisPose.z === home.z
click Y-
assert state.axisPose.y === home.y - state.machine.jogIncrement
assert state.axisPose.x === home.x + state.machine.jogIncrement

允许浮点误差:

abs(actual - expected) <= 0.001

人工检查:

DRO 中 X/Y/Z 数字连续变化,没有跳到 0/1 局部原点。

4. 全功能回归清单

修复完成后,至少回归以下功能:

功能 预期
主界面九大区域 全部存在
POWER on/off taskState 正确
E-STOP/RESET 急停和复位正确
AUTO/MANUAL/JOG/MDI 模式切换正确
HOME allHomed=trueDRO 到 HOME pose
JOG X+/X-/Y+/Y- DRO 连续变化
MDI M428 RTCP ontcp-xyzac
MDI M429 RTCP offidentity
MDI M430 userk
TCP/IDENTITY 侧栏按钮 RTCP 状态正确
Rapid/Feed/Spindle override 数值可调
Flood/Mist 状态可切换
View X/Y/Z/Fit/Clear/Full preview state 正确,画面仍可见
Profile xyzac/xyzbc 切换 INI 与 runtime 重新 ready
Stage LinuxCNC sources staged files/gcode 数量正常
Load vendored G-code programSource 正确G-code 行显示
Run/Pause/Resume/Step/Stop/Reload runState 和 activeLine 正确
Open local G-code programSource=operator-file
Save/Restore Session OPFS 保存恢复正确
Audit Full Boundary 审计入口可执行,结果可诊断

5. QA 报告复跑

修复后建议复用或更新:

/home/mes123456/cnc_wams/qa/web-rtcp-5axis-site-test/run-site-test.mjs

重点更新:

  1. 首屏等待稳定后,不再把 D1 作为 WARN而是强制 PASS/FAIL。
  2. canvas 检查加入像素统计。
  3. HOME/JOG 检查使用稳定态并验证连续坐标。
  4. 重新生成 Word 报告,文件名建议:
web-rtcp-5axis-site-test-report-2026-06-22-after-working1-fix.docx

6. 验收通过定义

P0: D1 PASS
P0: D2 PASS
P1: D3 PASS
全功能回归无新增 FAIL
console error = 0
page error = 0
request failure = 0

如果 headless WebGL 不稳定,必须证明 2D fallback 可见且自动化 pixel 检查通过。