Files

253 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 测试用例文档 — 禅道 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":"<md5(123456)>"}
→ 响应 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)