9.2 KiB
9.2 KiB
02 程序测试开发完善详细步骤
生成日期:2026-06-27
1. 环境准备
工作目录:
cd /home/meswork/cnc_wams
基础要求:
- Node/npm 可用。
- Chrome/Chromium 可用,浏览器 smoke 会自动查找
chromium、chromium-browser、google-chrome或google-chrome-stable。 - 不需要真实 LinuxCNC 实时内核;测试目标是 Web 仿真和 WASM/source-derived 边界。
2. 手册正文抽取方法
操作手册是 docx。需要复核手册内容时,可临时转文本:
mkdir -p /tmp/cnc_wams_manual_extract
libreoffice --headless --convert-to txt:Text --outdir /tmp/cnc_wams_manual_extract \
"/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/docs/Web-RTCP五轴数控系统仿真界面操作手册.docx"
sed -n '1,260p' /tmp/cnc_wams_manual_extract/Web-RTCP五轴数控系统仿真界面操作手册.txt
抽取后按章节映射到 04-任务矩阵.md,不要直接凭截图或文件名推断功能。
3. 基线验证命令
3.1 静态构建
npm --prefix /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app run build
通过标准:
- 退出码为 0。
- 输出包含
gmoccapy_static_build=ok。 app/dist/index.html和app/dist/src/main.js存在。
3.2 Node smoke
npm --prefix /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app run smoke:node
通过标准:
- 退出码为 0。
- 输出至少包含这些标记:
linuxcnc_kinematics_runtime_smoke=oklinuxcnc_interpreter_runtime_smoke=oklinuxcnc_ini_runtime_smoke=okrun_preconditions_ini_profile_smoke=okrun_feedback_status_loop_smoke=okrun_ready_sequence_smoke=oklinuxcnc_task_hal_runtime_smoke=okfull_linuxcnc_5axis_source_node_smoke=okmachine_file_staging_smoke=okfive_axis_session_smoke=okrtcp_store_smoke=okgmoccapy_xyzab_profile_smoke=okgmoccapy_hal_model_smoke=okgmoccapy_xyzab_gates_smoke=oklinear_unit_conversion_smoke=ok
3.3 浏览器 smoke
npm --prefix /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app run smoke
通过标准:
- 退出码为 0。
- 输出包含
gmoccapy_shell_smoke=ok和gmoccapy_dist_smoke=ok。 - 若失败,先记录 Chrome 路径、缺失浏览器、canvas/WebGL、端口启动或 DOM 断言失败原因,不直接改业务代码。
3.4 working7 手册流程专项证据
npm --prefix /home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test run evidence:working7
通过标准:
- 退出码为 0。
- 输出
working7_manual_flow_status=PASS。 - 生成 JSON、PDF 和截图目录:
/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-manual-flow-evidence-report.json/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-manual-flow-evidence-report.pdf/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-manual-flow-evidence
- 报告检查项覆盖主界面/canvas、POWER/HOME、AUTO/MANUAL、MANUAL JOG、MDI 提交、倍率/HAL 输入、主轴/冷却、Save/Restore 和诊断。
4. 按手册执行的人工测试方法
人工测试用于补充截图、PDF 或问题复现证据。建议用本地静态服务打开 app:
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
npm run dev
默认地址为:
http://127.0.0.1:4173
若端口占用,换空闲端口启动等价静态服务,并在 05-验收证据.md 记录实际 URL。
4.1 主界面区域
操作:
- 打开页面,等待
[data-shell="gmoccapy-5axis"]出现。 - 检查这些区域:
titlebar、preview、dro、gcode、status-sidebar、info-tabs、override、spindle-coolant、bottom-controls。 - 检查 canvas 的 dataset:
threeReady=true、threeFrameApi=web-rtcp-5axis-motion-frame、threeSceneMode=program-preview-and-tool-execution。
验收:
- 9 个区域存在。
- 预览非空,canvas ready。
window.webRtcp5AxisSimulation.getState()可读取状态。
4.2 开机、回零和模式切换
操作:
- 首屏确认 MANUAL 默认 active,POWER 未开启。
- 点击 POWER。
- 点击 Home。
- 点击 AUTO。
- 点击 MANUAL。
验收:
- POWER 后
machine.powerOn=true。 - Home 后
machine.allHomed=true。 - AUTO 后
machine.mode=auto,右侧 AUTO 为绿色、MANUAL 为灰色。 - MANUAL 后
machine.mode=manual,右侧 MANUAL 为绿色、AUTO 为灰色。 - 未满足条件时按钮 title 或 Operator 信息说明 gate 原因。
4.3 AUTO 自动运行
操作:
- 选择
xyzac-trt或xyzbc-trt。 - 选择 LinuxCNC 5-axis source 程序。
- 点击 Run Ready。
- 点击 Run,等待当前 G-code 行推进。
- 分别测试 Pause、Resume、Step、Stop。
验收:
- Run Ready 后
powerOn=true、allHomed=true、mode=auto。 - Run 后
programExecutionSourceMode=linuxcnc-task-motion-hal-wasm或对应 source-derived runtime。 - 当前 G-code 行绿色高亮,已执行行变灰。
- Stop 后
runState为stopped、complete或idle,machine.interpState=idle。
4.4 MANUAL 点动
操作:
- POWER + Home 后点击 MANUAL。
- 点击 JOG 或直接点击 X+/X-/Y+/Y-。
- 记录点动前后 DRO 和
axisPose。
验收:
- 仅在 manual + idle + power on 条件下允许点动。
- 对应轴坐标发生变化。
- 被阻止时提示 power、mode 或 interpreter 非 idle 的原因。
4.5 MDI
操作:
- POWER + Home 后点击 MDI。
- 在 MDI 输入框输入:
G90 X12.5 Y-4 Z1.25 F900。 - 点击 MDI 区 Run 或底部 MDI。
- 读取 DRO、
axisPose和 MDI 历史。
验收:
machine.mode=mdi。- 执行后目标坐标被写入或按 profile 限位夹紧。
- MDI 历史出现刚执行命令。
4.6 RTCP、IDENTITY 和 TCP
操作:
- 在
xyzac-trt或xyzbc-trtprofile 下切换 IDENTITY/TCP。 - 运行包含 M428/M429 的 LinuxCNC source 程序。
- 切换到
gmoccapy-xyzab,检查 TCP 按钮禁用原因。
验收:
- TCP profile 下 RTCP badge 可显示 on,DRO 中 TCP 坐标和刀轴向量更新。
- M428/M429 可驱动
kinsType和 RTCP 状态变化。 gmoccapy-xyzab因 reference-only/trivkins 不允许 TCP proof。
4.7 倍率、主轴、冷却和 HAL 输入
操作:
- 测试 Rapid Override 的 +、-、100。
- 测试 Feed Rate 的 +、-、100。
- 测试 Limits、Block、M1。
- 上电后测试 Flood、Mist、FWD、STOP、REV 和主轴倍率。
验收:
- 倍率值按按钮变化,100 可恢复默认。
- HAL 输入同步到
gmoccapyGui或对应诊断状态。 - 未上电时主轴/冷却被阻止,上电后可切换。
4.8 程序来源、Stage、Reload、Save/Restore
操作:
- 使用 Open 加载本地
.ngc程序。 - 使用 LinuxCNC 5-axis source 选择内置程序。
- 点击 Stage 刷新 machine files。
- 点击 Reload。
- 点击 Save Session,改变 profile/坐标/模式后点击 Restore Session。
验收:
- 程序来源和当前文件名可见。
- Stage 状态为 staged,并能看到 machine-file 数量。
- Reload 后运行状态复位。
- Restore 后恢复保存时的 profile、坐标、模式、程序和 RTCP 状态。
- 若 OPFS 不可用,显示 memory-fallback 且行为可解释。
4.9 诊断信息
操作:
- 逐个查看 Task policy、INI、Task/HAL、Full boundary、gmoccapy/HAL 信息。
- 对照当前 profile 和运行状态读取诊断内容。
验收:
- Task policy 显示 gate、task state、task mode、interp state 和可执行命令。
- INI 显示坐标、关节、限位和 kinematics。
- Task/HAL 显示 runtime readiness、cycle、HAL sync 和 runtime feedback。
- Full boundary 能说明是否满足完整 LinuxCNC 程序执行边界。
- gmoccapy/HAL 能区分 native NML/HAL 参考和 Web store/runtime 映射。
5. 新增自动化脚本规则
后续需要把人工步骤固化为自动化时,按以下位置扩展:
| 类型 | 位置 | 规则 |
|---|---|---|
| Node 单元/集成 | web-rtcp-5axis-sim-plan/tests/node |
优先验证 store、runtime、policy、session、profile 边界,不依赖 DOM。 |
| 浏览器 smoke | web-rtcp-5axis-sim-plan/tests/browser |
验证 DOM、颜色、canvas、按钮、public API 和 dist 页面。 |
| QA 截图/PDF | qa/web-rtcp-5axis-site-test |
生成 job_id、report_id、JSON、PDF、截图,写入 output。 |
新增脚本后必须:
- 更新
app/package.json中对应 smoke 命令或新增明确命令。 - 在 04-任务矩阵.md 更新任务状态。
- 在 05-验收证据.md 记录命令、输出、路径和报告编号。
6. 异常处理
| 异常 | 处理 |
|---|---|
| 浏览器 smoke 找不到 Chromium | 安装或设置 CHROMIUM=/path/to/browser,记录路径。 |
| canvas/WebGL 失败 | 记录 canvas.dataset、Chrome 参数和 fallback 原因。 |
| AUTO 不变绿 | 检查 SET_MODE 是否保留 machine state,检查 power/home/interp idle gate。 |
| RUN blocked | 读取 button title、Operator 信息和 Task policy 诊断,不直接绕过 gate。 |
| Save Session memory-fallback | 判断是否 HTTPS/OPFS 安全上下文问题,memory fallback 可作为测试环境可接受状态。 |
gmoccapy-xyzab TCP 禁用 |
这是预期边界,不按缺陷处理。 |