技能|质量门禁九步法
适用场景
每次源码改动、升版前,需要一键验证「七模块单元 / 接口 / 前端 e2e / 离屏 UI / 异步覆盖 / 线程生命周期 / 八维度」全部回归通过,并自动产出统一测评报告时。是发布前的最后一道质量闸门。
操作步骤
- 进入
程序源代码\server,以普通权限运行run_all_selftest.bat(或server\run_all_selftest.bat)。 - 预检:
_gate_bootstrap.js启动 6060 常驻服务(selftest_api 临时服务 +_selftest_v2/_qa_export_filename都硬依赖 6060)。 - 一、七模块单元自检:
scripts\<m>\selftest.js(m1~m7,共 7 项)。 - 二、服务端接口全量自检:
selftest_api.js(40 项)。 - 三、导出文件名清洗回归:
_qa_export_filename.js(防路径穿越 / 注入)。 - 四、前端浏览器端 e2e:
selftest_ui.js(Playwright,未装则优雅 SKIP)。 - 五、前端离屏自检:
_selftest_v2.py(35 项 UI / 口径断言)。 - 六、异步化覆盖门禁:
_qa_async_coverage.py。 - 七、后台线程生命周期回归:
_t_thread_lifecycle.py(P0 崩溃防护)。 - 八、八维度深度测试:
_qa_fulltest.py(功能 / 边界 / 容错 / 性能 / 安全 / 兼容 / 界面 / 易用性)。 - 九、生成统一测评报告:
gen_qa_fulltest_report.py→系统操作手册\05 测试\*.docx。 - 回收:门禁自举的临时服务按 PID 精确回收(
_gate_teardown.js),不误杀常驻 6060。
注意边界
- bat 内硬编码了开发机受管运行时路径(
C:\Users\icece\.workbuddy\binaries\...\node.exe与envs\default\Scripts\python.exe)。换机须同步改NODE/PY/ROOT三行。 - 前端 e2e 需要
server\下npm install playwright且装好 Chromium;缺则自动 SKIP,不计入失败(但「真实浏览器 e2e」一项会留白)。 QT_QPA_PLATFORM=offscreen由 bat 统一注入,离屏 UI / 八维用例无需真屏。- CRLF 无 BOM;前台运行约 2min 会被 SIGTERM,须
run_in_background落日志。
反例避雷
- ❌ 只跑单步就发布:曾因跳过「线程生命周期回归」漏掉 QThread 保活回归,登录后主窗 1 秒消失(0xC0000409)。
- ❌ 忘开 6060 直接跑全量:_selftest_v2 / _qa_export_filename 硬依赖 6060,缺预检会真实失败;现已内置预检。
- ❌ 在代理注入的 shell 里跑:本机代理会把 127.0.0.1 请求转代理返回 502,须
env -u http_proxy -u https_proxy前置。