西藏巴青项目

生长与出栏标准管理测试用例.md 20KB

生长与出栏标准管理 — 测试用例

依据:生长与出栏标准管理功能需求.md生长与出栏标准管理技术方案.md
接口 Base Path(示例)/breedingStandards/growthOutbound;若含 context-path 或网关前缀须补齐。鉴权与若依一致(Cookie / Token)。

通用前置(无特殊说明):具备本模块菜单与按钮权限的账号已登录;知识库可用;可先调 /common/upload 取得正文/封面的 urlfileName(存储路径)、originalFilename(正文展示名)。正文白名单:pdf/md/doc/docx/xls/xlsx/ppt/pptx(≤30MB);封面:jpg/jpeg/png(≤10MB)。标准名称:需求 1~20 字符(必填)。标准类型编码001011=牦牛生长,001012=牦牛出栏(parentCode=001categoryType=4)。

界面(UI)测试:借助 Playwright 启动 Chromium(与 Google Chrome 同源内核);可配置 channel: 'chrome' 调用本机已安装的谷歌浏览器,模拟点击、输入、文件选择与断言。


一、单元测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
SZCL-BZ-UT-001 状态机 合法状态组合 单元测试 JUnit5 仅三种稳态可持久化 校验 (publish_status,kb_sync_status) 为 (0,0)(0,1)(1,1) 均为合法;(1,0) 等其余组合拒绝
SZCL-BZ-UT-002 状态机 编辑守卫 单元测试 JUnit5 仅未发布未同步可改 canEdit(0,0) true;(0,1)/(1,*) false 与需求矩阵一致
SZCL-BZ-UT-003 状态机 手动同步守卫 单元测试 JUnit5 仅未发布未同步 canSyncKb(0,0) true;其余 false 与矩阵一致
SZCL-BZ-UT-004 状态机 移出守卫 单元测试 JUnit5 仅未发布已同步 canRemoveKb(0,1) true;其余 false 与 §4.7 一致
SZCL-BZ-UT-005 状态机 发布守卫 单元测试 JUnit5 仅未发布已同步 canPublish(0,1) true;(0,0)(1,1) false 与 §4.8 一致
SZCL-BZ-UT-006 状态机 下架守卫 单元测试 JUnit5 仅已发布 canOffline(1) true;publish=0 false 与矩阵一致
SZCL-BZ-UT-007 状态机 删除守卫 单元测试 JUnit5 与 §4.4 对齐 publish=1 不可删;kb=0 可直接删;0+1 仅允许先移出或删除流程内联动删库 无越权直删致 KB 孤儿
SZCL-BZ-UT-008 参数校验 标准名称长度 单元测试 JUnit5 1~20 字 空串、1 字、20 字、21 字调用校验 空/21 失败;1~20 通过
SZCL-BZ-UT-009 参数校验 简介字数 单元测试 JUnit5 选填 ≤50 null/空串通过;51 字失败 符合 §4.1
SZCL-BZ-UT-010 参数校验 标准类型 单元测试 JUnit5 有效资讯编码 Mock 子集含 001011/001012 空、999999 失败;001011/001012 通过 与技术方案 §2.2 一致
SZCL-BZ-UT-011 附件校验 正文后缀 单元测试 JUnit5 白名单 .pdf 通过;.exe 拒绝 与需求一致
SZCL-BZ-UT-012 附件校验 封面后缀 单元测试 JUnit5 白名单 .jpg 通过;.bmp 拒绝 与需求一致
SZCL-BZ-UT-013 Service 更新已发布拒绝 单元测试 JUnit5+Mockito 守卫分支 Mock publish=1 调用 update(...) 业务失败;不写库
SZCL-BZ-UT-014 Service 同步成功翻转状态 单元测试 JUnit5+Mockito 首次入库 Mock KB 成功返回 docId syncKb(id) kb_sync_status=1kb_doc_id 非空
SZCL-BZ-UT-015 Service 同步失败不翻转 单元测试 JUnit5+Mockito 可重试 Mock KB 失败 syncKb(id) 仍为未同步
SZCL-BZ-UT-016 Service 已同步修改拒绝 单元测试 JUnit5+Mockito §4.3 Mock publish=0,kb=1 update(...) 抛业务异常;无脏写
SZCL-BZ-UT-017 Service 下架成功回流 单元测试 JUnit5+Mockito §4.8 Mock KB 下架成功 offline(id) publish=0kb=1;保留 kb_doc_id
SZCL-BZ-UT-018 Service 移出成功 单元测试 JUnit5+Mockito §4.7 Mock KB 删除成功 removeKb(id) kb=0;清空 kb_doc_id
SZCL-BZ-UT-019 Service 发布成功 单元测试 JUnit5+Mockito 上架 Mock KB(若发布需通知) publish(id) publish=1
SZCL-BZ-UT-020 Service 未同步保存不调 KB 单元测试 JUnit5+Mockito §4.3 publish=0,kb=0 update 成功路径 Mock 验证未调用知识库更新
SZCL-BZ-UT-021 Service 删除联动 KB 单元测试 JUnit5+Mockito §4.4 kb=0;Mock 删文件 remove(ids) 删记录;Mock 验证知识库删除调用与对接一致

二、接口测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
SZCL-BZ-API-001 列表 默认分页排序 接口测试 Postman/curl §4.2 已登录;有数据 GET /growthSlaughter/standard/list rows≤默认 20;create_time 倒序
SZCL-BZ-API-002 列表 关键字 OR 接口测试 Postman 名称/简介模糊 已登录 keyword= 唯一词 命中名称或简介
SZCL-BZ-API-003 列表 类型筛选-生长 接口测试 Postman 精确匹配 已登录 standardType=001011 返回均为牦牛生长
SZCL-BZ-API-004 列表 类型筛选-出栏 接口测试 Postman 精确匹配 已登录 standardType=001012 返回均为牦牛出栏
SZCL-BZ-API-005 列表 组合查询 接口测试 Postman keyword+type 已登录 同时传 keyword 与 standardType 同时满足
SZCL-BZ-API-006 新增 合法提交-生长 接口测试 Postman/Swagger 正常新增 已登录;已上传正文 POST /growthSlaughter/standard Body 合法、standardType=001011 code 成功;publish=0,kb=0
SZCL-BZ-API-007 新增 合法提交-出栏 接口测试 Postman 类型覆盖 已登录 POST Body standardType=001012 其余合法 成功
SZCL-BZ-API-008 新增 名称非法 接口测试 Postman 1~20 边界 已登录 名称空串或 21 字或缺字段 失败;无新记录
SZCL-BZ-API-009 新增 名称单字合法 接口测试 Postman 1~20 下限 已登录 名称 1 字+其余合法 成功
SZCL-BZ-API-010 新增 类型非法 接口测试 Postman 编码 已登录 standardType=999999 失败;提示含「标准类型无效」
SZCL-BZ-API-011 新增 简介超长 接口测试 Postman ≤50 已登录 introduction 超 50 字 失败
SZCL-BZ-API-012 详情 有效 id 接口测试 Postman 字段完整 已登录 GET /growthSlaughter/standard/{id} 含 contentFileName、双维状态
SZCL-BZ-API-013 详情 无效 id 接口测试 Postman 异常 已登录 不存在 id 404 或业务失败
SZCL-BZ-API-014 修改 未发布成功 接口测试 Postman 正常 已登录;publish=0 PUT /growthSlaughter/standard 成功
SZCL-BZ-API-015 修改 已发布拒绝 接口测试 Postman §4.3 已登录;publish=1 PUT 失败;数据不变
SZCL-BZ-API-016 删除 未同步 接口测试 Postman §4.4 已登录;kb=0 DELETE /growthSlaughter/standard/{ids} 成功
SZCL-BZ-API-017 删除 已发布 接口测试 Postman 禁止 已登录;publish=1 DELETE 失败
SZCL-BZ-API-018 删除 未发布已同步 接口测试 Postman §4.4 已登录;0+1 DELETE(视实现) 失败提示先移出或联动删库成功且无孤儿
SZCL-BZ-API-019 同步 首次同步 接口测试 Postman §4.6 已登录;0+0 POST /growthSlaughter/standard/syncKb/{id} kb=1
SZCL-BZ-API-020 同步 重复同步 接口测试 Postman 矩阵 已登录;0+1 POST .../syncKb/{id} 失败
SZCL-BZ-API-021 移出 成功 接口测试 Postman §4.7 已登录;0+1 POST /growthSlaughter/standard/removeKb/{id} kb=0
SZCL-BZ-API-022 发布 成功 接口测试 Postman §4.8 已登录;0+1 POST /growthSlaughter/standard/publish/{id} publish=1
SZCL-BZ-API-023 发布 未同步禁止 接口测试 Postman 矩阵 已登录;0+0 POST .../publish/{id} 失败
SZCL-BZ-API-024 下架 成功回流 接口测试 Postman §4.8 已登录;publish=1 POST /growthSlaughter/standard/offline/{id} publish=0;kb=1
SZCL-BZ-API-025 下架 非已发布 接口测试 Postman 约束 已登录;草稿 POST .../offline/{id} 失败
SZCL-BZ-API-026 鉴权 未登录 接口测试 curl 安全 无凭证 GET .../list 401 或跳转登录
SZCL-BZ-API-027 权限 无写权限 接口测试 Postman 越权 仅 list 权限 POST /growthSlaughter/standard 无权限失败
SZCL-BZ-API-028 响应 失败可读 接口测试 Postman §6 已登录 故意触发名称空串等校验 Body 含可读 msgcode 与项目约定一致
SZCL-BZ-API-029 修改 已同步禁止修改 接口测试 Postman §4.3 已登录;0+1 PUT 改名称 失败;提示已同步不可改
SZCL-BZ-API-030 附件 超限(可选) 接口测试 Postman §4.1 环境允许略超 30MB 上传或提交触发服务端校验 明确大小/格式类提示;不落库

三、界面测试用例(UI)

测试工具Playwright + Chromiumchannel: 'chrome' 时使用本机 Google Chrome)。步骤与脚本映射:page.gotolocator.filllocator.clicksetInputFilesexpect;确认框处理 dialoggetByRole('button', { name: /确定/ })

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
SZCL-BZ-UI-001 列表 默认分页排序 UI 测试 Playwright+Chrome/Chromium §4.2 已登录;数据>20 进入生长与出栏标准列表 默认每页 20;创建时间新在前
SZCL-BZ-UI-002 列表 关键字-名称 UI 测试 Playwright+Chrome/Chromium 名称模糊 存在名称含关键词记录 输入关键字→查询 表格含该行
SZCL-BZ-UI-003 列表 关键字-简介 UI 测试 Playwright+Chrome/Chromium OR 简介含词、名称不含 输入该词→查询 命中
SZCL-BZ-UI-004 列表 类型筛选-生长 UI 测试 Playwright+Chrome/Chromium 精确 两类型均有数据 选「牦牛生长」→查询 类型列均为牦牛生长
SZCL-BZ-UI-005 列表 类型筛选-出栏 UI 测试 Playwright+Chrome/Chromium 精确 两类型均有数据 选「牦牛出栏」→查询 类型列均为牦牛出栏
SZCL-BZ-UI-006 列表 组合与重置 UI 测试 Playwright+Chrome/Chromium 恢复条件 已筛选 关键字+类型→查询→重置 恢复默认列表
SZCL-BZ-UI-007 列表 状态与按钮矩阵 UI 测试 Playwright+Chrome/Chromium §5 准备 0+0、0+1、1+1 各一条 逐行检查操作按钮 同步仅 0+0;移出/发布仅 0+1;下架仅 1+1;删除仅未同步路径
SZCL-BZ-UI-008 新增 完整合法主流程 UI 测试 Playwright+Chrome/Chromium §3.1 已登录 新增→名称(1~20)、类型、简介、正文、封面→提交 成功;未发布+未同步
SZCL-BZ-UI-009 新增 简介封面选填 UI 测试 Playwright+Chrome/Chromium §4.1 已登录 简介空、不传封面;其余合法→提交 成功
SZCL-BZ-UI-010 新增 名称空或超长 UI 测试 Playwright+Chrome/Chromium 1~20 已登录 名称留空或输入 21 字→提交 校验失败;无新记录
SZCL-BZ-UI-011 新增 名称单字合法 UI 测试 Playwright+Chrome/Chromium 下限 已登录 名称 1 字+其余合法→提交 成功
SZCL-BZ-UI-012 新增 类型必选 UI 测试 Playwright+Chrome/Chromium 约束 若 UI 可清空类型 不选类型→提交 必选提示
SZCL-BZ-UI-013 新增 正文必填 UI 测试 Playwright+Chrome/Chromium §4.1 已登录 不上传正文→提交 失败提示
SZCL-BZ-UI-014 新增 简介超长 UI 测试 Playwright+Chrome/Chromium 异常 已登录 简介>50 字→提交 失败
SZCL-BZ-UI-015 新增 正文格式/大小 UI 测试 Playwright+Chrome/Chromium §4.1 非法后缀或超限文件 上传/提交 拒绝或明确错误
SZCL-BZ-UI-016 新增 封面格式/大小 UI 测试 Playwright+Chrome/Chromium §4.1 非法图或>10MB 上传封面 失败或提示
SZCL-BZ-UI-017 详情 字段与附件名 UI 测试 Playwright+Chrome/Chromium §4.5 任意记录 点详情 名称类型简介正文文件名封面及双维状态齐全
SZCL-BZ-UI-018 详情 已发布只读 UI 测试 Playwright+Chrome/Chromium §4.5 已发布 开详情 无保存类编辑
SZCL-BZ-UI-019 详情 下架回流只读 UI 测试 Playwright+Chrome/Chromium §4.8 已下架回流样本 开详情 未发布+已同步编辑入口
SZCL-BZ-UI-020 修改 未同步仅本地 UI 测试 Playwright+Chrome/Chromium §4.3 0+0 编辑保存 成功;仍为未同步
SZCL-BZ-UI-021 修改 已同步禁止修改 UI 测试 Playwright+Chrome/Chromium §4.3 0+1 尝试编辑保存 失败提示已同步不可改
SZCL-BZ-UI-022 修改 已发布禁止 UI 测试 Playwright+Chrome/Chromium 矩阵 已发布 尝试编辑 不可保存
SZCL-BZ-UI-023 修改 保存仍校验必填 UI 测试 Playwright+Chrome/Chromium 异常 未发布 清空名称或去掉正文→保存 校验失败
SZCL-BZ-UI-024 知识库 手动同步 UI 集成 Playwright+Chrome/Chromium §4.6 0+0 点同步→确认 已同步
SZCL-BZ-UI-025 知识库 已同步无同步钮 UI 测试 Playwright+Chrome/Chromium 矩阵 0+1 查看操作区 「同步」不可用或隐藏
SZCL-BZ-UI-026 知识库 已发布无同步 UI 测试 Playwright+Chrome/Chromium §4.6 1+1 查看操作区 无同步;须先下架
SZCL-BZ-UI-027 知识库 移出 UI 集成 Playwright+Chrome/Chromium §4.7 0+1 移出→确认 未同步
SZCL-BZ-UI-028 知识库 已发布无移出 UI 测试 Playwright+Chrome/Chromium §4.7 1+1 查看操作区 无「移出」
SZCL-BZ-UI-029 知识库 同步失败可重试 UI 测试 Playwright+Chrome/Chromium 异常 KB 不可用;0+0 点同步 明确失败;仍为未同步
SZCL-BZ-UI-030 发布下架 发布 UI 测试 Playwright+Chrome/Chromium §4.8 0+1 发布→确认 已发布
SZCL-BZ-UI-031 发布下架 未同步禁发 UI 测试 Playwright+Chrome/Chromium 矩阵 0+0 尝试发布 不可用或提示
SZCL-BZ-UI-032 发布下架 下架回流 UI 集成 Playwright+Chrome/Chromium §4.8 已发布 下架→确认 未发布+已同步;KB 仍保留条目(抽查)
SZCL-BZ-UI-033 发布下架 下架后再发布 UI 集成 Playwright+Chrome/Chromium 闭环 完成 UI-032 再发布 再次已发布;无须新建
SZCL-BZ-UI-034 发布下架 下架失败提示 UI 测试 Playwright+Chrome/Chromium 异常 已发布;KB 下架不可用 点下架 失败提示;仍为已发布
SZCL-BZ-UI-035 删除 未同步可删 UI 测试 Playwright+Chrome/Chromium §4.4 0+0 删除→确认 记录消失
SZCL-BZ-UI-036 删除 已发布禁删 UI 测试 Playwright+Chrome/Chromium 矩阵 已发布 尝试删除 不可删或提示下架
SZCL-BZ-UI-037 删除 0+1 须移出或联动 UI 测试 Playwright+Chrome/Chromium §4.4 0+1 直接删失败则移出再删 最终删除成功;KB 无残留
SZCL-BZ-UI-038 附件 删后链接失效 UI 测试 Playwright+Chrome/Chromium 存储清理 删除前复制正文 URL 删除后新标签打开 不可访问
SZCL-BZ-UI-039 端到端 全状态机串联 UI 集成 Playwright+Chrome/Chromium §3.1 可新建 新增→同步→改→发布→下架→改→再发布→下架→移出→删 每步双维状态符合矩阵
SZCL-BZ-UI-040 权限 只读账号 UI 测试 Playwright+Chrome/Chromium 安全 无写权限 登录进模块 无新增/编辑或拒绝
SZCL-BZ-UI-041 修改 替换正文封面 UI 测试 Playwright+Chrome/Chromium 单附件 未发布 编辑→换正文与封面→保存 详情为新文件名;旧文件不可访问
SZCL-BZ-UI-042 修改 未同步不调 KB UI 测试 Playwright+Chrome/Chromium §4.3 0+0;KB 可观测 修改保存 业务成功;KB 无新增(与同步前一致)
SZCL-BZ-UI-043 修改 推库失败一致性 UI 测试 Playwright+Chrome/Chromium 异常 0+1;KB 更新失败 编辑保存 若约定整单失败:提示且数据不脏写
SZCL-BZ-UI-044 新增 名称 20 字边界 UI 测试 Playwright+Chrome/Chromium 上限 已登录 名称恰好 20 字+合法正文→提交 成功
SZCL-BZ-UI-045 类型 两类编码均可走发布流 UI 测试 Playwright+Chrome/Chromium §2.1 已登录 下拉来自资讯类别;各建 001011/001012 各一条并筛选 展示与筛选正确

Playwright 与谷歌浏览器(实施提示)

  • 安装:npm i -D @playwright/testnpx playwright install chromium;使用本机 Chrome 时 npx playwright install chrome 并配置 channel: 'chrome'
  • playwright.config.ts 示例:use: { channel: 'chrome', headless: false, locale: 'zh-CN' }
  • 登录复用:storageState 保存会话,减少每条用例登录。
  • 菜单路径、按钮文案以实际前端为准,选择器可用 getByRole('button', { name: /同步知识库|发布|下架|移出/ }) 等正则适配。

覆盖对照

类别 单元 UT 接口 API 界面 UI
正常流程 UT-014~019 API-001~007、012、014、016、019~022、024、029 UI-001~011、017~021、024、027、030~033、035、039、041、044~045
异常流程 UT-008~012、015~016 API-008~011、013、015、017~018、020、023、025~026、028、030 UI-010、012~016、029、034、036~038、042~043
业务约束/矩阵 UT-001~007、021 API-015、017~018、020、023、025、027 UI-007、018、022、025~026、028、031、036~037、040

功能需求追溯(自查)

需求章节 要点 主要对应用例
§4.1 新增 名称 1~20、类型编码、附件、初始 0+0 UT-008~012;API-006~011、030;UI-008~016、010~011、044~045
§4.2 列表 关键字 OR、类型、分页、排序、状态列 API-001~005;UI-001~007
§4.3 修改 仅未发布未同步可改;0+1 拒绝 UT-013、016、020;API-014~015、029;UI-020~023、041~043
§4.4 删除 删文件+通知 KB;0+1 UT-007、021;API-016~018;UI-035~038
§4.5 详情 字段、只读 API-012~013;UI-017~019
§4.6 同步 仅 0+0 UT-003、014~015;API-019~020;UI-024~026、029
§4.7 移出 仅 0+1 UT-004、018;API-021;UI-027~028
§4.8 发布/下架 发布前置;下架 0+1 回流 UT-005~006、017、019;API-022~025;UI-030~034
§5 矩阵 六类操作 UT-001~007;UI-007、039
§6 错误约定 code/msg API-028

修订记录

版本 说明
1.0 初版:单元/接口/UI 九要素表;Base Path /growthSlaughter/standard;类型 1/2;名称 1~20;Playwright+Chrome
2026-05-20 标准类型改为资讯类别编码 001011/001012;同步 API/UI 用例与 UT 类型校验