依据:
养殖标准管理功能需求.md、养殖标准管理技术方案.md
执行方式:均在管理后台通过菜单进入「养殖标准管理」及相关页面完成操作(登录、上传、查询、弹窗确认、列表操作等)。知识库异常类用例通过临时停服务、断网或错误配置后在页面触发并观察提示。
通用前置(无特殊说明):具备本模块菜单及对应按钮权限的账号已登录;知识库可用;biz_information_category 已种子化。正文白名单后缀任选其一:pdf/md/doc/docx/xls/xlsx/ppt/pptx(≤30MB);封面:jpg/jpeg/png(≤10MB)。标准类型编码:001001 繁育作业、001002 饲养工作、001003 免疫程序、001004 环境调控(parentCode=001,categoryType=1)。
测试类型说明(表内简称):功能测试=正向与主流程;异常测试=非法输入、服务失败、附件不合规等;业务规则测试=状态机、按钮显隐与操作禁忌(不重在必填报错);权限测试=角色与越权;集成测试=跨模块/端到端串联。测试工具:默认指 Chrome 或 Edge 浏览器 访问管理后台。
本文档包含三部分:单元测试(Service/校验纯逻辑,JUnit5 + Mockito)、接口测试(HTTP,Postman / Swagger / curl / RestAssured + 有效 Token)、界面(UI)测试(浏览器操作后台页面)。Base Path 以技术方案 /breedingStandards/breedingManage 为准;若项目带 context-path 或网关前缀,须在请求 URL 中补上。
说明:针对 无 Spring 容器 的工具方法,或对 Service 内分支 Mock Mapper、知识库 Client 后断言;覆盖状态校验、参数校验、非法组合拒绝(与需求矩阵一致)。
| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置/Mock | 测试步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|---|
| YZ-BZ-UT-001 | 状态校验 | 合法组合 | 单元测试 | JUnit5 | 仅三种稳态 (publish,kb) | 静态方法或枚举 | 遍历 publish∈{0,1}、kb∈{0,1} | 合法:(0,0)(0,1)(1,1);非法:(1,0) 等其余组合;非法须 reject |
| YZ-BZ-UT-002 | 状态校验 | 禁止编辑 | 单元测试 | JUnit5 | 仅未发布未同步可改 | — | canEdit(0,0) true;(0,1)/(1,*) false |
与需求矩阵及休药期模块一致 |
| YZ-BZ-UT-003 | 状态校验 | 手动同步前置 | 单元测试 | JUnit5 | 同步仅未发布未同步 | — | canSyncKb(0,0) true;(0,1)(1,1) false |
与需求矩阵一致 |
| YZ-BZ-UT-004 | 状态校验 | 移出前置 | 单元测试 | JUnit5 | 仅未发布已同步 | — | canRemoveKb(0,1) true;其余 false |
与矩阵一致 |
| YZ-BZ-UT-005 | 状态校验 | 发布前置 | 单元测试 | JUnit5 | 仅未发布已同步 | — | canPublish(0,1) true;(0,0)(1,1) false |
与矩阵一致 |
| YZ-BZ-UT-006 | 状态校验 | 下架前置 | 单元测试 | JUnit5 | 仅已发布 | — | canOffline(1) true;publish=0 false |
与矩阵一致 |
| YZ-BZ-UT-007 | 状态校验 | 删除前置 | 单元测试 | JUnit5 | 仅未发布可删 | — | canDelete(0,0)、(0,1) true;已发布 false |
与需求 §4.4 一致;Service 对「未发布已同步」一键删含内置移出 |
| YZ-BZ-UT-008 | 参数校验 | 标准名称长度 | 单元测试 | JUnit5 | 1~20 | — | 传入「」「甲」「12」「…20字」「…21字」调用校验 | 空失败;1 字与 2 字及 20 字成功;21 字失败 |
| YZ-BZ-UT-009 | 参数校验 | 简介长度 | 单元测试 | JUnit5 | 选填 ≤50 | — | null/空串通过;51 字失败 | 符合需求 |
| YZ-BZ-UT-010 | 参数校验 | 标准类型编码 | 单元测试 | JUnit5 | 有效资讯编码 | Mock 子集含 001001~001004 | 空、999999 失败;001001 等合法编码通过 |
与技术方案 §2.3 一致 |
| YZ-BZ-UT-011 | 附件校验 | 正文后缀白名单 | 单元测试 | JUnit5 | pdf/md/doc… | — | validateContentSuffix("a.pdf") true;.exe false |
与白名单一致 |
| YZ-BZ-UT-012 | 附件校验 | 封面后缀 | 单元测试 | JUnit5 | jpg/jpeg/png | — | .bmp false |
与白名单一致 |
| YZ-BZ-UT-013 | Service | 修改已发布抛业务异常 | 单元测试 | JUnit5+Mockito | 守卫分支 | Mock 查库 publish=1 | 调用 update(...) |
抛 ServiceException 或返回失败,不写库 |
| YZ-BZ-UT-014 | Service | 同步成功写 kb | 单元测试 | JUnit5+Mockito | 调知识库+更新状态 | Mock KB 成功、Mapper update | syncKb(id) |
kb_sync_status=1,kb_doc_id 非空 |
| YZ-BZ-UT-015 | Service | 同步失败不翻转状态 | 单元测试 | JUnit5+Mockito | KB 抛错 | Mock KB 失败 | syncKb(id) |
仍为未同步,无 docId |
说明:HTTP 状态码一般为 200(若依多为 200 + Body 内 code);下列「预期」同时约定 Body:成功 code=200(或与项目统一的「操作成功」码);参数错 code≠200 且 msg 可读;状态非法业务失败同理。鉴权:Header 携带登录后 Token/Cookie(与 RuoYi 一致);无权限返回 401 或业务无权限码(依项目)。
| 用例编号 | 接口路径(示例) | HTTP | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 请求要点 | 预期结果 |
|---|---|---|---|---|---|---|---|---|
| YZ-BZ-API-001 | /breeding/standard/list |
GET | 接口测试 | Postman/curl | 默认分页 | Token;库内有数据 | 不传 pageSize | rows≤20;默认排序倒序 |
| YZ-BZ-API-002 | /breeding/standard/list |
GET | 接口测试 | Postman | keyword + type | Token | keyword=xxx&standardType=001003 |
结果均为免疫程序(编码精确) |
| YZ-BZ-API-003 | /breeding/standard |
POST | 接口测试 | Postman | 新增成功 | Token;先 /common/upload 拿 url/path/name |
JSON Body 合法字段 | code 成功;库中 publish=0,kb=0 |
| YZ-BZ-API-004 | /breeding/standard |
POST | 接口测试 | Postman | 名称非法 | Token | 名称留空或超 21 字或缺其它必填 | code 失败;无新记录 |
| YZ-BZ-API-005 | /breeding/standard/{id} |
GET | 接口测试 | Postman | 详情字段 | Token;有效 id | Path id | data 含 contentFileName、双维状态 |
| YZ-BZ-API-006 | /breeding/standard/{id} |
GET | 接口测试 | Postman | 不存在 | Token | id=999999 | 404 或业务失败码 |
| YZ-BZ-API-007 | /breeding/standard |
PUT | 接口测试 | Postman | 未发布可改 | Token;草稿 id | 合法 JSON | 成功;详情字段更新 |
| YZ-BZ-API-008 | /breeding/standard |
PUT | 接口测试 | Postman | 已发布禁止 | Token;已发布 id | 任意合法 Body | 失败;库记录不变 |
| YZ-BZ-API-009 | /breeding/standard/{ids} |
DELETE | 接口测试 | Postman | 未同步可删 | Token;未同步 id | DELETE | 成功;记录不存在 |
| YZ-BZ-API-010 | /breeding/standard/{ids} |
DELETE | 接口测试 | Postman | 已发布禁止 | Token | 已发布 id | 失败 |
| YZ-BZ-API-011 | /breeding/standard/syncKb/{id} |
POST | 接口测试 | Postman | 首次同步 | Token;未发布未同步 id | POST | 成功;kb=1 |
| YZ-BZ-API-012 | /breeding/standard/syncKb/{id} |
POST | 接口测试 | Postman | 已同步拒绝 | Token;已同步 id | POST | 失败 |
| YZ-BZ-API-013 | /breeding/standard/removeKb/{id} |
POST | 接口测试 | Postman | 移出 | Token;未发布已同步 | POST | 成功;kb=0 |
| YZ-BZ-API-014 | /breeding/standard/publish/{id} |
POST | 接口测试 | Postman | 发布 | Token;未发布已同步 | POST | publish=1 |
| YZ-BZ-API-015 | /breeding/standard/publish/{id} |
POST | 接口测试 | Postman | 未同步禁止 | Token;未同步 id | POST | 失败 |
| YZ-BZ-API-016 | /breeding/standard/offline/{id} |
POST | 接口测试 | Postman | 下架回流 | Token;已发布 id | POST | publish=0;kb=1;offline_time 有值;与需求下架语义一致 |
| YZ-BZ-API-017 | /breeding/standard/offline/{id} |
POST | 接口测试 | Postman | 非已发布禁止 | Token;草稿 id | POST | 失败 |
| YZ-BZ-API-018 | /breeding/standard/list |
GET | 接口测试 | Postman | 未登录 | 无 Token | GET | 401 或跳转登录(依安全配置) |
| YZ-BZ-API-019 | /breeding/standard |
POST | 接口测试 | Postman/自动化 | 无 breeding:standard:add |
仅有 list 权限账号 | POST | 无权限失败 |
| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|---|
| YZ-BZ-001 | 列表查询 | 默认分页与排序 | 功能测试 | 浏览器(后台) | 默认每页 20 条、创建时间倒序 | 列表有若干条 | 1. 进入列表;2. 不改分页看第 1 页;3. 总条数>20 时翻第 2 页 | 默认每页 20;当前页按创建时间新→旧;>20 条时第 2 页有数据 |
| YZ-BZ-002 | 列表查询 | 关键字-名称 | 功能测试 | 浏览器(后台) | 名称模糊 OR | 存在名称含唯一词「名称关键字A」的记录 | 关键字填「名称关键字A」→查询 | 结果含该记录 |
| YZ-BZ-003 | 列表查询 | 关键字-简介 | 功能测试 | 浏览器(后台) | 简介模糊 OR | 存在简介含「简介词B」、名称不含该词的记录 | 关键字填「简介词B」→查询 | 结果含该记录 |
| YZ-BZ-004 | 列表查询 | 标准类型筛选 | 功能测试 | 浏览器(后台) | 类型精确匹配 | 存在不同类型各至少 1 条 | 类型选「免疫程序」→查询 | 结果均为免疫程序 |
| YZ-BZ-005 | 列表查询 | 关键字+类型 | 功能测试 | 浏览器(后台) | 组合条件 | 有同时满足的数据 | 输入关键字并选类型→查询 | 结果同时满足两条件 |
| YZ-BZ-006 | 列表查询 | 重置条件 | 功能测试 | 浏览器(后台) | 恢复列表 | 已设置查询条件 | 点「重置」或清空后再查 | 恢复默认条件下的列表展示 |
| YZ-BZ-007 | 新增 | 完整合法提交 | 功能测试 | 浏览器(后台)+ 本地附件 | 正常新增主流程 | 无 | 新增→名称(合法长度)、类型、简介(可填)、上传正文、上传封面→提交 | 成功;列表为未发布、未同步;详情可下载正文/看封面 |
| YZ-BZ-008 | 新增 | 简介与封面选填 | 功能测试 | 浏览器(后台)+ 本地附件 | 业务约束 | 无 | 新增→名称、类型、正文必填齐;简介空、封面不传→提交 | 成功;简介为空展示;无封面 |
| YZ-BZ-009 | 新增 | 名称必填/超长 | 异常测试 | 浏览器(后台)+ 本地附件 | 约束:1~20 字 | 无 | 名称留空或超过 20 字→其余合法→提交 | 校验失败;不落库 |
| YZ-BZ-010 | 新增 | 名称过长 | 异常测试 | 浏览器(后台)+ 本地附件 | 约束:≤20 字 | 无 | 名称 21 字→提交 | 校验失败 |
| YZ-BZ-011 | 新增 | 类型必选 | 异常测试 | 浏览器(后台)+ 本地附件 | 约束 | 无 | 不选类型→提交 | 提示必选类型 |
| YZ-BZ-012 | 新增 | 正文必填 | 异常测试 | 浏览器(后台) | 约束 | 无 | 不上传正文→提交 | 提示需正文;不落库 |
| YZ-BZ-013 | 新增 | 简介超长 | 异常测试 | 浏览器(后台)+ 本地附件 | 约束:≤50 字 | 无 | 简介≥51 字→提交 | 校验失败 |
| YZ-BZ-014 | 新增 | 正文格式/大小 | 异常测试 | 浏览器(后台)+ 本地附件 | 白名单与≤30MB | 准备非法后缀或>30MB 文件(若有) | 作为正文上传或提交 | 拒绝或明确错误提示;不落库 |
| YZ-BZ-015 | 新增 | 封面格式/大小 | 异常测试 | 浏览器(后台)+ 本地附件 | 白名单与≤10MB | 非法后缀或>10MB 图片 | 上传封面 | 拒绝或错误提示;合法小图可成功 |
| YZ-BZ-016 | 新增 | 单正文单封面 | 业务规则测试 | 浏览器(后台)+ 本地附件 | 单附件约束 | 无 | 正文上传两次(若 UI 为替换则确认仅保留最后一次) | 最终仅一份正文;封面同理 |
| YZ-BZ-017 | 详情 | 字段展示 | 功能测试 | 浏览器(后台) | 名称/类型/简介/正文/封面及附件名 | 任意一条记录 | 点详情 | 字段齐全;正文有下载/预览入口;正文附件展示名与上传时原始文件名一致(或与产品约定展示规则一致) |
| YZ-BZ-018 | 详情 | 已发布只读 | 业务规则测试 | 浏览器(后台) | 约束 | 已发布记录 | 打开详情 | 无保存类编辑或按钮不可用 |
| YZ-BZ-019 | 详情 | 下架回流后可编辑 | 业务规则测试 | 浏览器(后台) | 需求:下架回到未发布 | 已由「已发布」下架回流的数据 | 打开详情 | 可出现编辑入口(未发布+已同步);与 YZ-BZ-018 区分 |
| YZ-BZ-020 | 修改 | 未发布未同步可改 | 功能测试 | 浏览器(后台)+ 本地附件 | 正常修改 | 未发布未同步记录 | 编辑→改名称/类型/简介/换正文或封面→保存 | 成功;列表/详情更新;仍为未同步(未点同步前) |
| YZ-BZ-021 | 修改 | 已同步禁止修改 | 功能测试 | 浏览器(后台) | 已同步不可改 | 未发布已同步 | 尝试编辑保存 | 失败提示「知识库已同步状态不允许修改」;数据不变 |
| YZ-BZ-022 | 修改 | 已发布不可改 | 业务规则测试 | 浏览器(后台) | 约束 | 已发布记录 | 尝试编辑 | 无编辑入口或不可保存 |
| YZ-BZ-023 | 修改 | 下架回流后可改 | 功能测试 | 浏览器(后台) | 回流=未发布 | 下架回流后的记录 | 编辑→保存 | 允许修改;仍为未发布已同步直至再发布 |
| YZ-BZ-024 | 修改 | 保存仍校验必填 | 异常测试 | 浏览器(后台)+ 本地附件 | 名称/类型/正文 | 未发布未同步 | 编辑清空名称或去掉正文→保存 | 校验失败 |
| YZ-BZ-025 | 知识库 | 手动同步 | 集成测试 | 浏览器(后台)+ 知识库检索/管理端 | 未发布未同步首次入库 | 未发布未同步、正文已填 | 点「同步知识库」→确认 | 成功;状态为已同步 |
| YZ-BZ-026 | 知识库 | 已同步不重复首次同步 | 业务规则测试 | 浏览器(后台) | 约束 | 未发布已同步 | 查看操作区 | 「同步知识库」隐藏或不可用 |
| YZ-BZ-027 | 知识库 | 已发布禁手动同步 | 业务规则测试 | 浏览器(后台) | 需求 §4.6 | 已发布记录 | 查看操作区 | 无「同步知识库」(须先下架回到未发布) |
| YZ-BZ-028 | 知识库 | 移出知识库 | 集成测试 | 浏览器(后台)+ 知识库检索/管理端 | 未发布已同步 | 未发布已同步 | 点「移出知识库」→确认 | 成功;变为未同步;可再次同步 |
| YZ-BZ-029 | 知识库 | 已发布无单独移出 | 业务规则测试 | 浏览器(后台) | 约束 | 已发布 | 查看操作区 | 无「移出知识库」单独入口 |
| YZ-BZ-030 | 知识库 | 同步失败提示 | 异常测试 | 浏览器(后台)+ 知识库不可用模拟(运维停服务/断网/错配;可选 DevTools Network) | 异常 | 未发布未同步;临时使知识库不可用 | 点同步 | 明确失败提示;仍为未同步;恢复后可重试 |
| YZ-BZ-031 | 发布下架 | 发布 | 功能测试 | 浏览器(后台) | 已同步未发布可发布 | 未发布已同步 | 点「发布」→确认 | 成功;已发布 |
| YZ-BZ-032 | 发布下架 | 未同步禁发布 | 业务规则测试 | 浏览器(后台) | 约束 | 未发布未同步 | 点发布或看按钮 | 不可用或业务提示 |
| YZ-BZ-033 | 发布下架 | 下架 | 集成测试 | 浏览器(后台)+ 知识库检索/管理端 | 对外下架、库内保留副本 | 已发布 | 点「下架」→确认 | 成功;业务侧 未发布+已同步;知识库 保留条目(对外不可检索/不可见以对接为准,可抽查) |
| YZ-BZ-034 | 发布下架 | 下架后可再发布 | 功能测试 | 浏览器(后台) | 回流后可发布 | 下架回流后未发布已同步 | 点「发布」→确认 | 允许再次发布;成功后已发布 |
| YZ-BZ-035 | 删除 | 未同步可删 | 功能测试 | 浏览器(后台) | 正常 | 未发布未同步 | 删除→确认 | 成功;记录消失;原附件下载失效或 404 |
| YZ-BZ-036 | 删除 | 未发布已同步须移出后删 | 功能测试 | 浏览器(后台) | 需求 §4.4 | 下架回流后(未发布已同步) | 直接删→确认 | 失败或提示先移出;先移出再删→成功 |
| YZ-BZ-037 | 删除 | 已发布不可删 | 业务规则测试 | 浏览器(后台) | 约束 | 已发布 | 尝试删除 | 无删除或提示先下架 |
| YZ-BZ-038 | 删除 | 未发布已同步 | 集成测试 | 浏览器(后台)+ 知识库检索/管理端 | 须先移出或联动 | 未发布已同步 | 直接删(若开放)或先移出再删 | 符合需求:先移出再删成功,或一键删含移出且无知识库残留 |
| YZ-BZ-039 | 端到端 | 主流程串联 | 集成测试 | 浏览器(后台)+ 本地附件 + 知识库检索/管理端 | 含下架回流再发布 | 可新建一条 | 新增→同步→编辑保存→发布→下架→直接再发布(或移出→编辑→同步→发布)→下架→移出→删除 | 各步状态与需求矩阵一致 |
| YZ-BZ-040 | 权限 | 无权限/只读 | 权限测试 | 浏览器(后台);受限账号 | 越权防护 | 无本模块写权限账号 | 登录后看菜单/点新增或改 URL | 无菜单或操作被拒 |
| YZ-BZ-041 | 修改 | 已同步接口拒绝 | 异常测试 | 浏览器(后台)或 Postman | §4.3 | 未发布已同步 | 直接调修改接口 | 返回业务错误;数据未变更 |
| YZ-BZ-042 | 附件 | 删除后文件不可访问 | 功能测试 | 浏览器(后台);下载链接新标签验证 | 删库联动删文件 | 完成 YZ-BZ-035 或新建再删 | 删除前复制正文下载链接;删除后再访问该链接 | 不可下载或无权访问 |
| 类别 | 用例编号 | 说明 |
|---|---|---|
| UI 正常流程 | YZ-BZ-001~008、017、020~021、023、025、028、031、033~034、035、039、042 | 列表、增改查、下架回流、同步、移出、发布、下架、删除、端到端 |
| UI 异常/校验 | 009~016、030、041~042 | 字段、文件、知识库失败、推库一致性、删文件 |
| UI 业务约束 | 018~019、022、024、026~027、029、032、036~038 | 需求矩阵与 §4.3~§4.8(无「已下架」稳态) |
| UI 权限 | 040 | 越权 |
| 单元测试 | YZ-BZ-UT-001~015 | 状态机、参数与附件校验、Service 分支(Mock) |
| 接口测试 | YZ-BZ-API-001~019 | CRUD、同步/移出/发布/下架、鉴权 |
| 版本 | 说明 |
|---|---|
| 1.0 | 初版:页面可执行;对齐功能需求与技术方案(附件:URL、存储路径、正文附件名称;大小不入库;用例以 UI 验证为主) |
| 1.1 | 用例表增加 测试类型、测试工具 列;文首补充类型说明 |
| 1.2 | 增加 单元测试、接口测试;覆盖对照扩展 |
| 1.3 | 章节顺序调整为:一、单元测试 → 二、接口测试 → 三、界面测试(UI);文首三部分说明同步 |
| 1.4 | 对齐 养殖标准管理功能需求.md:下架回流 未发布+已同步;下架≠移出;合法组合不含「已下架」稳态;YZ-BZ-API-016、UT/UI 预期同步修订 |
| 1.5 | 标准类型改为资讯类别编码(001001~001004);同步 UT-010、API-002 及 UI 类型筛选 |