客户端中途断开流时 Cython 协程 __Pyx_Coroutine_SendEx 断言 abort 整个 BFF。 证据链:3.2.8 崩 db.c / 3.3.0 仍崩(升级无效) / db 明文后迁移 sse_relay.c, 证明取消链上任意 Cython 协程均可触发。最终把 db.py/qa.py/sse_relay.py 加入编译白名单(明文),隔离实例断流探针 10/10 存活,生产同构建实测通过。 代价:3 模块失去编译硬化(无凭据内容),编译模块 30->27。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3.6 KiB
3.6 KiB
任务书:测试 agent —— P0 测试治理(编制全部测试用例 + 报告框架)
前置必读
- docs/docgen_team_context.md(服务器环境事实 + 团队纪律,全部遵守)
- 本任务书 + 仓库现有测试先例(sdk/app/services/test_.py、sdk/app/routers/test_.py、tests/ 目录)——先读 2-3 个现有测试文件学断言风格
你的角色
- 编制【全部】测试用例(目标:覆盖率 100%——每一个计划模块、每一个端点、每一条意图路由规则、每一个 UI 交互点都有对应用例)
- 用例完成后提交 Team Leader 审核;审核过关前【不执行任何测试】(TL 会指令你何时开始轮测)
- 每轮测试逐项执行并逐条留痕;复测与最终结果同样逐条留痕
交付物(只写这些文件,不越界)
A. tests/docgen/test_case_report.md —— 测试用例总报告(唯一事实源):
- 头部:文档版本、编制人(测试 agent)、编制日期、审核状态(待 TL 审核/已审核通过)
- 用例分组(编号规则 DC-<组>-):DC-UNIT-CRYPTO、DC-UNIT-VAULT、DC-UNIT-BACKEND、DC-UNIT-RETRIEVAL、DC-UNIT-INTENT、DC-UNIT-CONVERT(md2docx/md2pdf)、DC-UNIT-PIPELINE、DC-UNIT-EDITOR、DC-UNIT-CLIENT、DC-API(端点逐条)、DC-INTENT-CASES(20-30 条意图对照,前后端同一张表)、DC-E2E-CURL(端到端脚本步骤)、DC-CONF(路径配置三形态+握手拒绝)、DC-FAILOVER(vstore 宕机演练)、DC-UI(浏览器验收清单逐条)、DC-REGRESSION(三模式问答/停止/多会话)、DC-PERF(百级导入压测)
- 每条用例:编号/模块/前置/步骤/预期/实测/结论(PASS|FAIL)/轮次/日期/执行人(实测列每轮追加留痕,不覆盖历史)
- 报告内建「轮次记录」区:每轮开始记轮次号+日期+执行人,结束记汇总(总条数/PASS/FAIL/FAIL 明细) B. tests/docgen/run_all.sh + 各分组执行脚本 —— 每条可自动化的用例有对应脚本/命令(curl 场景、pytest 选择器、意图对照表脚本、UI 清单核对表),用例编号与脚本一一对应,可复跑 C. tests/docgen/cases_intent.md —— 意图对照表(20-30 条,前后端共用:输入文本/附件标志/活动文档标志/期望结果)
用例编写要求
- 每条用例:可判定(预期明确)、可复跑、失败可定位到模块
- 单元类用例与开发自测互补但不重复造轮子:你的用例是验收口径(黑盒为主),开发的自测是白盒口径
- E2E 用例写清 curl 命令序列与每步断言(含 ls vault/ 只见 .enc、明文 grep 无命中等保密断言)
- UI 用例是浏览器人工/半自动验证清单(每步可核对),写清检查点
- 覆盖计划「验证」章节的 5 条全部要求 + 计划中所有功能点(自然触发意图、加密入库、vstore 独立服务、能力徽标、文档 TAB 预览编辑导出下载、右栏拖宽+手柄、模版检索、批量导入、路径配置、降级兜底)
【纪律再强调】
- 不碰生产运行中的服务;未经 TL 指令【不执行测试】(此刻你只编用例)
- 只写 tests/docgen/ 下文件;不 commit、不 push
- 报告用中文
【完成标准】
最终回复中明确写「QA P0 用例编制完成」+ 报告路径 tests/docgen/test_case_report.md + 用例总数 + 覆盖声明(对照计划功能点清单)
【重要补充】意图路由的规范词典与 30 条用例表已冻结于 docs/team/cases_intent.md(唯一事实源)——intent 实现与测试一律以它为准,不得自造词典/自造用例。