# 测试用例文档 — 禅道 AI SOP + 绩效系统改造 > 依据:`outputs/acceptance.md` 33 条 AC(14 个 FR 全覆盖)+ CHG-027 框架验收指标新字段。 > 用例编号 TC-{FR序号}-{序号},与 AC 编号一一对应;每条含正常/边界/异常路径。 > 执行方式:手工按步骤执行,结果填入「执行记录」列(通过/失败+缺陷单号)。 --- ## 0. 执行须知 ### 0.1 环境 | 项 | 值 | |---|---| | 后端 | http://127.0.0.1:8085/zentao(测试库 192.168.1.161:3306/zentao_dev) | | 前端 | dev server(npm run serve,如 http://localhost:8089) | | 账号 | admin / 123456(系统管理员) | | 测试数据 | 用户需求 324(产品 145)、研发需求 6566(expand 已 finished)、会议 84 | ### 0.2 通用准备 1. **接口 token**(接口类用例需要): ``` POST /zentao/zt-user/login {"account":"admin","password":""} → 响应 data 即 token,后续请求头带 token ``` 2. **SQL 校验**:用例中「DB 预期」指在 161 zentao_dev 库执行对应 SELECT。 3. **文件类用例**:准备任意 `.md` 文件(如记事本写几行 markdown 表格)用于上传。 ### 0.3 判定约定 - 页面类:以浏览器实际显示为准(截图留证) - 接口类:以响应 code=0 + DB 落库为准 - 失败一律登记 `06_test_docs/defects.md`,修复后走 `regression.md` 复测 --- ## 1. 用例明细 ### TC-001 用户需求管理(FR-001) **TC-001-1 评审通过激活**(AC-001-1,正常) - 前置:新建用户需求并提交评审,全员评审人已在 zt_user 存在 - 步骤:①产品→用户需求→新建,填写标题/描述/验收标准,提交评审;②各评审人登录→评审通过 - 预期:status=active;DB zt_story_user.revieweddate 落库;二期后 activateddate 同步有值 **TC-001-2 评审不通过关闭**(AC-001-2,异常) - 步骤:新建用户需求提交评审→评审人选「不通过」 - 预期:需求关闭;DB closedby/closeddate/closedreason 落库;列表状态显示已关闭 ### TC-002 需求讨论会与纪要 MD(FR-002) **TC-002-1 会议纪要上传 MD 并在线渲染**(AC-002-1,正常) - 前置:产品 145 下已建会议(关联用户需求 324) - 步骤:①产品→会议纪要→新建弹窗,选类型/日期/地点/参会人,「关联用户需求」单选下拉选 324;②附件区上传 .md 文件;③保存后进会议详情/用户需求 324 详情「会议纪要」tab;④点卡片上「MD」按钮 - 预期:DB zt_file 新增 objecttype=meeting 附件(含操作人 addedby/时间 addeddate);zt_meeting.url 刷新为最新一份;MD 弹窗渲染富文本(非纯文本) **TC-002-2 非 MD 附件不渲染**(AC-002-2,边界) - 步骤:会议上传 PDF/图片附件 - 预期:附件列表仅提供下载,不出现 MD 在线渲染入口 **TC-002-3 关联需求精确匹配**(AC-002-3,异常/匹配) - 前置:存在关联需求 112 的会议 - 步骤:打开用户需求 12 的详情「会议纪要」tab - 预期:只列出 story_ids 精确含 12 的会议,不误中 112 **TC-002-4 编辑会议附件不误删**(补充,回归用例) - 前置:会议已有 2 份 MD 附件 - 步骤:编辑弹窗打开(附件区应自动带出已有附件)→直接保存 - 预期:DB zt_file 原有附件 deleted 仍为 '0',不被误标 '1' ### TC-003 PRD 文档管理(FR-003) **TC-003-1 PRD 上传可见可下载**(AC-003-1,正常) - 步骤:研发需求详情→PRD 区上传 .md PRD - 预期:附件列表可见可下载;下载文件非 0KB、内容一致 **TC-003-2 多版 PRD 按时间排列**(AC-003-2,边界) - 步骤:同一需求先后上传 2 版 PRD - 预期:多份均保留可下载,按上传时间排列 ### TC-004 需求级 AI 工作量指标(FR-004)+ 框架验收指标(CHG-027) **TC-004-1 指标上传落库**(AC-004-1,正常) - 步骤:`POST /zentao/zt-story-expand/saveOrUpdate`,报文 `{"storyId":<新需求id>,"workloadIndex":"3.2","aiParticipationRate":"0.6"}` - 预期:code=0;DB zt_story_expand 新增一行,workload_index/ai_participation_rate 有值 **TC-004-2 幂等更新不新增**(AC-004-2,幂等) - 步骤:同 storyId 再次提交不同指标值 - 预期:DB 仍一行,值被更新 **TC-004-3 已完成需求拒绝**(AC-004-3,异常) - 步骤:对 storyId=6566(requirementStatus=finished)再提交 - 预期:code≠0,message=「该需求已完成,不可再修改」;DB 无变化 **TC-004-4 框架验收指标新字段**(CHG-027,补充) - 步骤:①`saveOrUpdate` 报文 `{"storyId":324,"acceptanceCriteria":"## AC-1\n- Given…Then…"}`;②`GET /zentao/zt-story-expand/queryByStoryId?storyId=324`;③查 zt_storyspec.verify - 预期:①code=0;②回读 acceptanceCriteria 完整(中文/换行不丢);③老 verify 字段不受影响 ### TC-005 验收标准展示(FR-005) **TC-005-1 verify 富文本展示+用例评审链**(AC-005-1,验证) - 步骤:研发需求编辑页录入验收标准(verify)保存→详情页查看;进入用例评审(story-case)流转一步 - 预期:详情页验收标准富文本正常展示;评审链状态可流转 ### TC-006 研发任务双通道(FR-006) **TC-006-1 AI 批量建任务**(AC-006-1,正常) - 步骤:`POST /zentao/zt-task/aiBatchAdd`,报文含 storyId + tasks(1 条 type=devel 指派开发、1 条 type=test 指派测试,各带 aiEvaluationTime) - 预期:响应返回 taskIds;DB zt_task 新增:status=wait、openedby=ai、estimate=报文工时;测试任务 assignedTo=指定测试人员 **TC-006-2 非法报文整批拒绝**(AC-006-2,异常) - 步骤:storyId 不存在 或 type 非法,提交 - 预期:code≠0;DB 零入库(zt_task 无新增) **TC-006-3 防重跳过**(AC-006-3,防重) - 步骤:同 storyId+name+type 已存在时再次提交(含 1 条重复 + 1 条新任务) - 预期:重复项进响应 skipped,新任务正常创建 ### TC-007 任务级 AI 工时(FR-007) **TC-007-1 工时入 estimate**(AC-007-1,正常) - 步骤:TC-006-1 创建任务后查 DB - 预期:zt_task.estimate=报文 aiEvaluationTime(标准字段) **TC-007-2 无扩展表**(AC-007-2,豁免验证) - 步骤:DB 执行 `SHOW TABLES LIKE 'zt_task_extend'` - 预期:不存在该表 ### TC-008 AI 代码审查报告 MD(FR-008) **TC-008-1 上传+状态写入+在线查看**(AC-008-1,正常) - 前置:需求下开发任务已完工 - 步骤:研发需求详情→「代码审查报告」→上传审查 MD(结论含 pass) - 预期:DB zt_file(aiCodeReview) 落附件;zt_story.code_review_url 刷新;code_review_status=pass;详情页在线渲染 **TC-008-2 SOP 卡点**(AC-008-2,卡点) - 步骤:code_review_status 为 NULL 或 reject 的需求,查看「提交测试报告」按钮 - 预期:按钮禁用/不可提交 **TC-008-3 多轮回炉**(AC-008-3,边界) - 步骤:第 1 轮 reject 报告上传后,再传第 2 轮 pass 报告 - 预期:url 刷新为最新;历史多份 zt_file 均保留;extra.round 递增;status 随最新轮更新 **TC-008-4 非法参数拒绝**(AC-008-4,异常) - 步骤:uploadBind 缺 storyId 或 objectType 非法 - 预期:拒绝并返回错误,不入库 ### TC-009 BUG 全流程(FR-009) **TC-009-1 提交→指派→修复→复测→验收**(AC-009-1,验证) - 步骤:测试人员提交 BUG→指派开发→开发修复点解决→测试复测关闭→验收(bugYs) - 预期:各状态流转正常,zt_bug 状态/指派/解决字段落库 ### TC-010 测试类文档 4 字段(FR-010) **TC-010-1 用例/模版只读**(AC-010-1,正常) - 步骤:研发需求详情查看「测试用例」(testCase)与「测试报告模版」(testReport) - 预期:可查看可下载;无上传覆盖入口 **TC-010-2 提交测试报告**(AC-010-2,正常+卡点) - 前置:code_review_status=pass(按钮可用) - 步骤:上传填完的测试报告(testReportSubmit) - 预期:zt_story.test_report_submit_url 刷新;FR-014 判定该项齐备 **TC-010-3 其他测试文档**(AC-010-3,边界) - 步骤:上传其他测试文档(testOther) - 预期:test_other_url 刷新,可查看下载 ### TC-011 AI 工作日志 MD(FR-011) **TC-011-1 日志上传在线看**(AC-011-1,正常) - 步骤:研发需求详情→「工作日志」上传 MD(或框架 uploadBind type=aiWorkLog) - 预期:zt_file(aiWorkLog) 落附件;work_log_url 刷新;在线渲染 **TC-011-2 事件即传**(AC-011-2,时效·人工抽查) - 步骤:抽 1 个框架节点产出,核对上传时间与事件时间 - 预期:当日即传,非月末批量补传 ### TC-012 工作量指标完成率统计(FR-012) **TC-012-1 完成率口径**(AC-012-1,正常) - 前置:zt_story_month_workload 当月有数据 - 步骤:`GET /zentao/zt-perf/report?month=yyyy-MM&role=backendDev`(或完成率接口)取 workloadRate 项 - 预期:=Σ(月度工作量指数)÷(团队可用工作天数×5);测试人员不计入产出方;与手工 SQL 计算一致 ### TC-013 九岗位绩效报表(FR-013) **TC-013-1 规则配置化**(AC-013-1,正常) - 步骤:①/perf/report 页切换 9 岗位 tab;②/perf/config 改一条权重/阈值保存;③回报表页重算 - 预期:自动项产出分数;配置改动即时生效(无需改代码);页面 auto/manual 徽标正确 **TC-013-2 对拍验收**(AC-013-2,对拍·需线下 Excel) - 前置:IT 经理提供最近 1~2 个已线下考核月份的 Excel - 步骤:系统 generateMonthScore 后与线下 Excel 逐人逐项比对 - 预期:一致或差异可解释(差异记录 defects.md 并评估是否口径问题) ### TC-014 大型需求文档齐备自动核查(FR-014) **TC-014-1 五类齐全不扣分**(AC-014-1,正常) - 前置:大型需求(指数>20)五类文档齐全(测试用例/测试报告提交件/AI文档更新记录/AI代码审查报告/AI工作日志) - 步骤:月度核查 generateDocCheck - 预期:五类全 ✓;不扣分;zt_doc_check 写快照 **TC-014-2 缺 2 份扣 4 分**(AC-014-2,扣分) - 前置:同 6566 演示数据(缺 2 份) - 步骤:generateDocCheck 后查 /perf/docCheck 矩阵 - 预期:3✓2✗;扣 4 分(每份 2 分);zt_month_score.scopeJson 可见扣分 **TC-014-3 判定源正确性**(AC-014-3,验证) - 步骤:仅上传 testReport 模版(不传提交件),另传 aiWorkLog 非 doc_update 类 - 预期:测试报告项判 ✗(不认模版);AI 文档更新记录项判 ✗(只认 doc_update 类) **TC-014-4 异议回滚**(AC-014-4,异议) - 步骤:对扣分记录发起 appeal→技术负责人 appealReview 撤销 - 预期:对应扣分回滚;zt_doc_check/月分留痕(状态+操作人+时间) --- ## 2. 覆盖矩阵 | FR | 功能 | AC 数 | 用例 | 类型 | |---|---|---|---|---| | FR-001 | 用户需求管理 | 2 | TC-001-1/2 | 页面 | | FR-002 | 会议纪要 MD | 3+1 | TC-002-1~4 | 页面+DB | | FR-003 | PRD 文档 | 2 | TC-003-1/2 | 页面+接口 | | FR-004 | AI 工作量指标 | 3 | TC-004-1/2/3 | 接口+DB | | CHG-027 | 框架验收指标 | — | TC-004-4 | 接口+DB | | FR-005 | 验收标准/用例 | 1 | TC-005-1 | 页面 | | FR-006 | 任务双通道 | 3 | TC-006-1/2/3 | 接口+DB | | FR-007 | 任务级工时 | 2 | TC-007-1/2 | DB | | FR-008 | 代码审查报告 | 4 | TC-008-1~4 | 页面+接口 | | FR-009 | BUG 流程 | 1 | TC-009-1 | 页面 | | FR-010 | 测试文档 4 字段 | 3 | TC-010-1~3 | 页面+接口 | | FR-011 | AI 工作日志 | 2 | TC-011-1/2 | 接口+页面 | | FR-012 | 完成率统计 | 1 | TC-012-1 | 接口+SQL | | FR-013 | 九岗位绩效 | 2 | TC-013-1/2 | 页面+对拍 | | FR-014 | 文档齐备核查 | 4 | TC-014-1~4 | 接口+页面 | 合计 36 条用例;14 FR + CHG-027 全覆盖;每 FR ≥1 正常 + ≥1 异常/边界(FR-012/013 以对拍/口径验证承担)。 ## 3. 执行记录(执行时填写) | 用例 | 结果(通过/失败) | 执行人 | 日期 | 缺陷单号 | 备注 | |---|---|---|---|---|---| | (逐条填写) | | | | | | ## 4. 已知阻塞/依赖 - TC-013-2 依赖 IT 经理提供线下考核 Excel,未提供前挂起 - TC-001/005/009 为复用功能验证,可排最低优先级 - 上传类用例前置:8085 已重启加载最新代码(含 CHG-026/027)