西藏巴青项目

饲喂标准管理测试用例.md 18KB

饲喂标准管理 — 测试用例

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

通用前置:具备模块菜单与按钮权限;正文白名单后缀:pdf/md/doc/docx/xls/xlsx/ppt/pptx(≤30MB);封面:jpg/jpeg/png(≤10MB)。标准类型编码:001005 饲料配方、001006 牦牛投喂(parentCode=001categoryType=2)。

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


一、单元测试用例

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

二、接口测试用例

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

三、界面测试用例(UI)

测试工具Playwright(推荐 project 使用 Chromium;若需完全对齐谷歌浏览器,可在配置中使用 channel: 'chrome' 调用本机 Chrome)。步骤描述可与脚本对应:page.gotolocator.filllocator.clickfileChooser.setFilesexpect

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
WF-BZ-UI-001 列表 默认分页排序 UI 测试 Playwright+Chrome/Chromium 正常展示 已登录;数据>20 打开饲喂标准列表页 每页默认 20;创建时间新在前
WF-BZ-UI-002 列表 关键字-名称 UI 测试 Playwright+Chrome/Chromium 正常查询 存在名称含关键词记录 输入关键字→查询 表格含目标行
WF-BZ-UI-003 列表 关键字-简介 UI 测试 Playwright+Chrome/Chromium OR 逻辑 简介含词、名称不含 输入该词→查询 命中
WF-BZ-UI-004 列表 类型筛选 UI 测试 Playwright+Chrome/Chromium 精确筛选 两类型均有数据 选「牦牛投喂」→查询 类型列均为牦牛投喂
WF-BZ-UI-005 列表 组合与重置 UI 测试 Playwright+Chrome/Chromium 恢复条件 已筛选 关键字+类型→查询→重置 恢复默认列表
WF-BZ-UI-006 列表 状态与按钮 UI 测试 Playwright+Chrome/Chromium 业务约束可见性 三种状态样本各行一条 检查每行状态标签与操作按钮 与矩阵一致(如同步仅 0+0)
WF-BZ-UI-007 新增 完整合法 UI 测试 Playwright+Chrome/Chromium 正常主流程 已登录 新增→名称类型→上传正文封面→提交 成功;列表为未发布未同步
WF-BZ-UI-008 新增 简介封面选填 UI 测试 Playwright+Chrome/Chromium 选填规则 已登录 简介空、不传封面;其余合法→提交 成功
WF-BZ-UI-009 新增 名称非法 UI 测试 Playwright+Chrome/Chromium 异常校验 已登录 名称空或超过 20 字→提交 提示失败;无新记录
WF-BZ-UI-010 新增 简介超长 UI 测试 Playwright+Chrome/Chromium 异常校验 已登录 简介>50 字→提交 失败
WF-BZ-UI-011 新增 正文缺失/非法 UI 测试 Playwright+Chrome/Chromium 异常 已登录 不上传正文或非法后缀→提交 失败提示
WF-BZ-UI-012 新增 封面非法 UI 测试 Playwright+Chrome/Chromium 异常 已登录 上传非白名单图片→提交 失败
WF-BZ-UI-013 详情 字段完整 UI 测试 Playwright+Chrome/Chromium 正常查看 任意行 点详情 名称类型简介正文文件名封面齐全
WF-BZ-UI-014 详情 已发布只读 UI 测试 Playwright+Chrome/Chromium 约束 已发布 开详情 无保存类编辑
WF-BZ-UI-015 详情 下架回流只读 UI 测试 Playwright+Chrome/Chromium 回流语义 已下架数据 开详情 显示未发布已同步;编辑入口;可移出/发布
WF-BZ-UI-016 修改 未同步保存 UI 测试 Playwright+Chrome/Chromium 正常 0+0 编辑→保存 成功;仍为未同步
WF-BZ-UI-017 修改 已同步禁止修改 UI 测试 Playwright+Chrome/Chromium §4.3 0+1 尝试编辑保存 失败提示已同步不可改
WF-BZ-UI-018 修改 已发布禁止 UI 测试 Playwright+Chrome/Chromium 约束 已发布 尝试编辑 不可保存
WF-BZ-UI-019 知识库 手动同步 UI 集成 Playwright+Chrome/Chromium 首次入库 0+0 点同步→确认 变已同步
WF-BZ-UI-020 知识库 已同步无同步钮 UI 测试 Playwright+Chrome/Chromium 矩阵 0+1 查看操作区 无可用「同步」
WF-BZ-UI-021 知识库 已发布无同步 UI 测试 Playwright+Chrome/Chromium 矩阵 已发布 查看操作区 无同步
WF-BZ-UI-022 知识库 移出 UI 集成 Playwright+Chrome/Chromium 正常 0+1 移出→确认 变未同步
WF-BZ-UI-023 知识库 同步失败 UI 测试 Playwright+Chrome/Chromium 异常 KB 不可用;0+0 点同步 失败提示;仍为未同步
WF-BZ-UI-024 发布下架 发布 UI 测试 Playwright+Chrome/Chromium 正常 0+1 发布→确认 已发布
WF-BZ-UI-025 发布下架 未同步禁发 UI 测试 Playwright+Chrome/Chromium 约束 0+0 尝试发布 不可用或提示
WF-BZ-UI-026 发布下架 下架再发布 UI 集成 Playwright+Chrome/Chromium 闭环 已发布 下架→再发布 先未发布已同步;再变已发布
WF-BZ-UI-027 删除 未同步 UI 测试 Playwright+Chrome/Chromium 正常 0+0 删除→确认 行消失
WF-BZ-UI-028 删除 已发布禁删 UI 测试 Playwright+Chrome/Chromium 约束 已发布 尝试删除 不可删或提示下架
WF-BZ-UI-029 删除 已同步须移出 UI 测试 Playwright+Chrome/Chromium §4.4 0+1 直接删失败则移出再删 最终删除成功;KB 无残留
WF-BZ-UI-030 附件 删除后不可下载 UI 测试 Playwright+Chrome/Chromium 清理 删除前复制下载链 删除后新开标签访问链接 不可访问
WF-BZ-UI-031 端到端 全链路 UI 集成 Playwright+Chrome/Chromium 状态机串联 可新建 新增→同步→改→发布→下架→改→再发布→下架→移出→删 各步状态符合矩阵
WF-BZ-UI-032 权限 只读账号 UI 测试 Playwright+Chrome/Chromium 越权 无写权限 登录后进模块 无新增/编辑或拒绝
WF-BZ-UI-033 类型 编码覆盖 UI 测试 Playwright+Chrome/Chromium 两类均可发布流 已登录 下拉来自资讯类别;各建 001005/001006 并筛选 展示与筛选正确
WF-BZ-UI-034 新增 名称过长 UI 测试 Playwright+Chrome/Chromium §4.1 上限 已登录 名称输入 21 字(或超上限)→提交 校验失败;无新记录
WF-BZ-UI-035 列表/操作 已发布无移出 UI 测试 Playwright+Chrome/Chromium §4.7 前置 已发布行 查看操作区 无「移出知识库」入口(须先下架后才可出现)
WF-BZ-UI-036 修改 替换正文与封面 UI 测试 Playwright+Chrome/Chromium §3 替换附件 未发布任意状态 编辑→更换正文与封面→保存 保存成功;详情展示新文件名;旧链接失效(与技术方案清理策略一致)
WF-BZ-UI-037 修改 未同步保存 UI 测试 Playwright+Chrome/Chromium §4.3 不自动推库 0+0;KB 侧可观测 修改字段保存 业务保存成功;知识库侧无新增/更新(与手动同步前一致)
WF-BZ-UI-038 发布下架 下架失败提示 UI 测试 Playwright+Chrome/Chromium 异常可重试 已发布;临时使下架依赖的知识库不可用 点下架→确认 明确失败提示;仍为已发布;恢复后可重试

Playwright 与谷歌浏览器

  • 安装:npm i -D @playwright/test;执行 npx playwright install chromium(或 install chrome 配合 channel: 'chrome')。
  • 配置示例:use: { channel: 'chrome', headless: false } 可在本机 Google Chrome 窗口中回放步骤。
  • 登录:建议使用 storageState 复用会话,避免每条用例重复登录。

覆盖对照

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

功能需求覆盖自查(追溯)

需求章节 要点 主要对应用例
§4.1 新增 字段校验、初始未发布未同步 UT-008~012、013~014(间接);API-005~008、026;UI-007~012、034
§4.2 列表 关键字 OR、类型、分页 20、排序、状态列 API-001~004;UI-001~006
§4.3 修改 仅未发布未同步可改;0+1 拒绝 UT-013、016、020;API-011~012;UI-016~018、037
§4.4 删除 删文件+通知 KB;0+1 规则 UT-007;API-013~015;UI-027~030
§4.5 详情 字段、只读 API-009~010;UI-013~015
§4.6 同步 仅 0+0;失败重试 UT-003、014~015;API-016~017;UI-019~020、023
§4.7 移出 仅 0+1;已发布无入口 UT-004、018;API-018;UI-022、035
§4.8 发布/下架 发布前置;下架回流 0+1 UT-005~006、017、019;API-019~022;UI-024~026、038
§5 矩阵 六列操作可用性 UT-001~007;UI-006、端到端 UI-031
§6 错误约定 code/msg 可读 API-025

说明:§7 非功能(审计、下载鉴权、性能)未逐条展开用例,建议在迭代或安全专项中单列。§4.1 名称唯一若产品未定,验收前需补充约定与对应用例。


修订记录

日期 说明
初稿:单元/接口/UI 全覆盖;九字段;UI 注明 Playwright + Chrome/Chromium
增补 UT-020、API-025~026、UI-034~038;增加「功能需求覆盖自查」
标准名称校验由 3~20 调整为 1~20 字:同步 WF-BZ-UT-008、API-006/025、UI-009 等步骤与预期
2026-05-20 标准类型改为资讯类别编码 001005/001006;同步 UT-010、API-003/007