西藏巴青项目

风险因子设置管理测试用例.md 9.5KB

风险因子设置 — 测试用例

依据:风险因子设置功能需求.md风险因子设置技术方案.md
接口 Base Path(示例)/diseaseDetection/riskFactorWeight;若含 context-path 或网关前缀须补齐。鉴权与若依一致(Cookie / Token)。

通用前置(无特殊说明):具备本模块菜单权限的账号已登录。五项因子固定:养殖密度、交通流动性、检疫强度、气象适宜度、既往发病水平。权重规则:每项 > 0;五项之和 = 1(容差建议 |Σ − 1| ≤ 0.0001)。本模块无列表分页、删除、新增因子项接口。

合法保存示例 Body(五项各 0.2)breedingDensityWeighttrafficMobilityWeightquarantineIntensityWeightmeteorologicalSuitabilityWeightpastDiseaseLevelWeight 均为 0.2

界面(UI)测试:借助 Playwright 启动 Chromium(与 Google Chrome 同源内核);可配置 channel: 'chrome' 调用本机已安装的谷歌浏览器。


一、单元测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
FXYZ-UT-001 权重校验 单项正数 单元测试 JUnit5 >0 0.2-0.10 0.2 通过;-0.10 失败
FXYZ-UT-002 权重校验 五项必填 单元测试 JUnit5 非空 任一项为 null 失败
FXYZ-UT-003 权重校验 合计等于 1 单元测试 JUnit5 §2.3 0.2×50.1×10(和为1) 通过
FXYZ-UT-004 权重校验 合计不为 1 单元测试 JUnit5 §2.3 0.2×4+0.30.5×5 失败
FXYZ-UT-005 权重校验 容差边界 单元测试 JUnit5 0.0001 1.00005、和 0.9999 前者通过/后者按规则失败(与实现一致)
FXYZ-UT-006 权重校验 非法小数 单元测试 JUnit5 数字合法 传非数字、空串 失败
FXYZ-UT-007 合计计算 weightSum 单元测试 JUnit5 响应字段 五项已知 calcSum(five) 与五项之和一致
FXYZ-UT-008 Service 首次保存 insert 单元测试 JUnit5+Mockito upsert 库无 id=1 save(valid) insertid=1
FXYZ-UT-009 Service 再次保存 update 单元测试 JUnit5+Mockito upsert 已有 id=1 save(新五项) update 全部字段
FXYZ-UT-010 Service 原子更新 单元测试 JUnit5+Mockito §3.3 已有配置 模拟仅写成功 3 列 事务回滚或拒绝部分更新
FXYZ-UT-011 Service 查询单例 单元测试 JUnit5 id=1 有数据 selectConfig() 仅一行;五项齐全
FXYZ-UT-012 Service 无记录查询 单元测试 JUnit5+Mockito 空库 无行 selectConfig() null 或默认对象(与产品约定)

二、接口测试用例

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
FXYZ-API-001 查询 获取当前权重 接口测试 Postman/curl §3.1 已登录;库有 id=1 GET .../riskFactorWeight code=200data 含五项驼峰字段;可选 weightSum=1
FXYZ-API-002 查询 无配置记录 接口测试 Postman 空库 表无行 GET .../riskFactorWeight datanull 或默认五项(与约定一致)
FXYZ-API-003 保存 合法五项各 0.2 接口测试 Postman §3.2 已登录 PUT 五项均为 0.2 成功;再 GET 五项均为 0.2
FXYZ-API-004 保存 合法非均分 接口测试 Postman 和为 1 已登录 PUT 0.3,0.25,0.2,0.15,0.1 成功;GET 与提交一致
FXYZ-API-005 保存 合计不为 1 接口测试 Postman §3.3 已登录 PUT 五项均为 0.3 失败;库中数据不变
FXYZ-API-006 保存 某项为 0 接口测试 Postman 正数 已登录 breedingDensityWeight=0,其余凑 1 失败
FXYZ-API-007 保存 某项为负数 接口测试 Postman 正数 已登录 trafficMobilityWeight=-0.1 失败
FXYZ-API-008 保存 必填缺失 接口测试 Postman 五项必填 已登录 Body 缺 pastDiseaseLevelWeight 失败
FXYZ-API-009 保存 容差内合计 接口测试 Postman 0.0001 已登录 五项和 1.0000(如 0.2001×4+0.1996 按实现:通过或失败须与 §2.1 一致并文档化
FXYZ-API-010 保存 首次 insert 接口测试 Postman upsert 空库 PUT 合法五项 成功;库出现 id=1 一行
FXYZ-API-011 端到端 查询→改→查 接口测试 Postman §4 已登录 GETPUT 改检疫 0.3 并调整其余使和=1→GET 两次查询与最后一次保存一致
FXYZ-API-012 鉴权 未登录 接口测试 curl 安全 无 Token GET / PUT 401 或统一未登录
FXYZ-API-013 权限 无 query 权限 接口测试 Postman 越权 无 query GET 无权限失败
FXYZ-API-014 权限 无 edit 权限 接口测试 Postman 越权 仅 query PUT 合法 Body 无权限失败
FXYZ-API-015 响应 失败可读 接口测试 Postman §7 已登录 触发 API-005、006、008 msg 可区分合计/正数/必填

三、界面测试用例(UI)

测试工具Playwright + Chromiumchannel: 'chrome' 使用本机 Google Chrome)。

用例编号 测试模块 测试项 测试类型 测试工具 测试目的 前置条件 测试步骤 预期结果
FXYZ-UI-001 页面 进入加载配置 UI 测试 Playwright+Chrome §5.1 已登录;库有配置 菜单进入「风险因子权重」 展示五项因子名称与权重;有加载态
FXYZ-UI-002 页面 五项因子固定 UI 测试 Playwright+Chrome §2.1 已登录 查看表单项标签 含养殖密度、交通流动性、检疫强度、气象适宜度、既往发病水平;无增删因子入口
FXYZ-UI-003 录入 占位与正数提示 UI 测试 Playwright+Chrome 原型 已登录 查看输入框与旁注 占位「请输入权重」;有「正数」类提示
FXYZ-UI-004 录入 实时合计展示 UI 测试 Playwright+Chrome §2.3 已登录 修改任一项权重 页面展示当前合计(如 0.85);提示「权重之和=1」
FXYZ-UI-005 保存 合法保存成功 UI 测试 Playwright+Chrome §5.3 有 edit 权限 五项设为各 0.2→点「保存」 成功提示;刷新后仍为 0.2
FXYZ-UI-006 保存 合计不为 1 拦截 UI 测试 Playwright+Chrome §5.2 已登录 五项均为 0.3→保存 校验失败或保存按钮不可用;提示合计须为 1
FXYZ-UI-007 保存 非正数拦截 UI 测试 Playwright+Chrome §5.2 已登录 某项填 0 或负数→保存 字段级错误提示;不提交
FXYZ-UI-008 保存 必填拦截 UI 测试 Playwright+Chrome §5.2 已登录 清空一项→保存 提示该项必填
FXYZ-UI-009 保存 非均分合法保存 UI 测试 Playwright+Chrome §5.3 已登录 0.3,0.25,0.2,0.15,0.1→保存 成功;重新进入仍为该组值
FXYZ-UI-010 权限 无保存按钮 UI 测试 Playwright+Chrome §6 仅 query 权限 进入页面 可查看权重;无「保存」或点击被拒绝
FXYZ-UI-011 异常 加载失败提示 UI 测试 Playwright+Chrome §7 模拟接口失败 进入页面 错误提示;可重试(若有)
FXYZ-UI-012 端到端 改一项联动合计 UI 集成 Playwright+Chrome §4 已登录 加载→改「养殖密度」为 0.4 并调整其余使合计 1→保存→重进 合计实时变化;保存后持久化正确

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

  • 安装:npm i -D @playwright/testnpx playwright install chromiumuse: { channel: 'chrome' }
  • 导航:page.getByText('风险因子权重')goto('/diseaseDetection/riskFactorWeight')
  • 录入:按标签定位五项 el-input-numberinput,填 0.2 等。
  • 合计:expect(page.getByText(/当前合计|1\.00/)).toBeVisible()(以实际文案为准)。
  • 保存:getByRole('button', { name: '保存' }).click()expect(page.locator('.el-message--success')).toBeVisible()

覆盖对照

类别 单元 UT 接口 API 界面 UI
正常流程 UT-003、007~009、011 API-001、003~004、010~011 UI-001、005、009、012
异常流程 UT-001、002、004、006 API-005~008、012~015 UI-006~008、011
业务约束 UT-005、010 API-009 UI-002、004、006

功能需求追溯(自查)

需求章节 要点 主要对应用例
§5.1 展示加载 五项固定、占位 UI-001~003;API-001、002
§5.2 录入校验 正数、合计=1 UT-001~006;API-005~009;UI-004、006~008
§5.3 保存 原子 upsert UT-008~010;API-003、004、010、011;UI-005、009
§6 权限 query/edit API-013、014;UI-010
§7 错误提示 可读 API-015;UI-006~008、011

修订记录

版本 说明
1.0 初版:单元 12、接口 15、UI 12;前缀 FXYZ-;单页 GET/PUT;Playwright+Chrome