西藏巴青项目

疫病诊疗标准管理测试用例.md 19KB

疫病诊疗标准管理 — 测试用例

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

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

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


一、单元测试用例

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

二、接口测试用例

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

三、界面测试用例(UI)

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

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

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~005、010、012、014、017、019~020、022、027 UI-001~008、010、016~020、023、026、029~032、034、038、040、043
异常流程 UT-008~012、015~016 API-006~009、011、013、015~018、021、023~026、028 UI-009、011~015、028、033、035~037、041~042
业务约束/矩阵 UT-001~007、021 API-012~016、018、021、023、025 UI-006、017~018、021、024~027、030、035~036、039

功能需求追溯(自查)

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

修订记录

版本 说明
1.0 初版:单元/接口/UI 九要素表;Base Path /epidemicTreatment/standard;标准名称 1~20;Playwright+Chrome
1.1 标准类型改为资讯类别编码 001013;同步 UT-010、API-003/008
1.2 2026-05-20:正文白名单调整为 pdf/md/doc/docx/xls/xlsx/pptx(不含 ppt);YJZL-BZ-UT-011 补充 mdpptx 通过及 .ppt 拒绝