依据:
草场管理功能需求.md、草场管理技术方案.md
接口 Base Path(示例):/dataModel/grassland;若含context-path或网关前缀须补齐。鉴权与若依一致(Cookie / Token)。
通用前置(无特殊说明):具备本模块菜单与按钮权限的账号已登录。退化等级:1 未退化、2 轻度、3 中度、4 重度、5 极重度。利用类型:1 禁牧、2 轮牧、3 全年放牧。合法样本(示例):名称「示范草场」、面积 100.5、亩产草量 350、利用率 0.65、禁牧 2025-01-01~2025-03-31、轮牧小区 4、放牧天数 7、轮牧周期 28、备注可空。
界面(UI)测试:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|---|
| ZCZX-CCGL-UT-001 | 参数校验 | 草场名称长度 | 单元测试 | JUnit5 | 1~10 字 | 无 | 空串、1 字、10 字、11 字 | 空/11 失败;1~10 通过 |
| ZCZX-CCGL-UT-002 | 参数校验 | 备注字数 | 单元测试 | JUnit5 | 选填≤100 | 无 | null/空通过;101 字失败 | 符合功能需求 §5.1 |
| ZCZX-CCGL-UT-003 | 参数校验 | 退化等级枚举 | 单元测试 | JUnit5 | 选填;有值仅 1~5 | 无 | null 通过;值为 1/5 通过;0、6 失败 | 与技术方案 §2.2 一致 |
| ZCZX-CCGL-UT-004 | 参数校验 | 利用类型枚举 | 单元测试 | JUnit5 | 选填;有值仅 1~3 | 无 | null 通过;值为 1/3 通过;0、4 失败 | 与技术方案 §2.2 一致 |
| ZCZX-CCGL-UT-005 | 参数校验 | 面积/亩产/禁牧与草畜平衡面积 | 单元测试 | JUnit5 | 正数 | 无 | 面积 0、负数;亩产/禁牧/草畜平衡面积 0 | 面积必填失败;选填有值非法失败;合法正数通过 |
| ZCZX-CCGL-UT-006 | 参数校验 | 利用率区间 | 单元测试 | JUnit5 | 选填 0~1 | 无 | null 通过;-0.1、1.1 失败;0、1 通过 |
越界失败 |
| ZCZX-CCGL-UT-007 | 参数校验 | 禁牧日期区间 | 单元测试 | JUnit5 | 选填成对 | 无 | 双空通过;开始晚于结束;仅一端;合法区间 | 颠倒/缺一端失败;start≤end 通过 |
| ZCZX-CCGL-UT-008 | 参数校验 | 轮牧三项整数 | 单元测试 | JUnit5 | 选填 ≥1 | 无 | null 通过;小区数/放牧天数/周期为 0 | 失败;正整数通过 |
| ZCZX-CCGL-UT-009 | 参数校验 | 全量保存校验 | 单元测试 | JUnit5 | validateRowForSave |
合法 BizGrassland |
仅名称+面积;全字段;利用率非法 | 最小必填通过;非法失败 |
| ZCZX-CCGL-UT-010 | Service | 新增落库 | 单元测试 | JUnit5+Mockito | 正常登记 | 合法实体 | insert(grassland) |
del_flag='0';数值与入参一致 |
| ZCZX-CCGL-UT-011 | Service | 修改全字段 | 单元测试 | JUnit5+Mockito | §5.3 | Mock 已存在 id | update 改名称、面积、退化等级、日期、轮牧参数 |
更新成功;Mapper update 被调用 |
| ZCZX-CCGL-UT-012 | Service | 利用类型互改 | 单元测试 | JUnit5+Mockito | 1↔2↔3 | 原 utilization_type=1 |
update 改为 2 或 3 且指标仍合法 |
成功(本期不因类型豁免字段) |
| ZCZX-CCGL-UT-013 | Service | 修改不存在 | 单元测试 | JUnit5+Mockito | 异常 | selectById 返回 null |
update |
抛 ServiceException;不调用 update |
| ZCZX-CCGL-UT-014 | Service | 逻辑删除 | 单元测试 | JUnit5+Mockito | §5.4 | Mock Mapper | remove([id], updateBy) |
调用 logicDelete;del_flag='2';非物理 DELETE |
| ZCZX-CCGL-UT-015 | Service | 删除空 id 数组 | 单元测试 | JUnit5+Mockito | 边界 | 无 | remove([]) 或全 null |
返回 0;不调用 Mapper 删除 |
| ZCZX-CCGL-UT-016 | Mapper | 列表排序与删除过滤 | 单元测试 | JUnit5 | 技术方案 §3.4 | 无 | 检查 BizGrasslandMapper.xml |
含 create_time desc、id desc;列表/详情/更新带 del_flag='0' |
| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|---|
| ZCZX-CCGL-API-001 | 列表 | 默认分页排序 | 接口测试 | Postman/curl | §5.2 | 已登录;有多条记录 | GET /dataModel/grassland/list |
code=200;rows≤20;createTime 新在前 |
| ZCZX-CCGL-API-002 | 列表 | 关键字-名称 | 接口测试 | Postman | 名称模糊 | 已登录 | keyword= 唯一名称片段 |
命中含该片段记录 |
| ZCZX-CCGL-API-003 | 列表 | 利用类型筛选 | 接口测试 | Postman | 精确 | 有禁牧/轮牧样本 | utilizationType=1 或 2 |
返回记录利用类型与条件一致 |
| ZCZX-CCGL-API-004 | 列表 | 退化等级筛选 | 接口测试 | Postman | 可选筛选项 | 有多档退化样本 | degradationLevel=3 |
均为中度(与入参一致) |
| ZCZX-CCGL-API-005 | 列表 | 组合查询 | 接口测试 | Postman | 多条件 | 已登录 | keyword+utilizationType(+degradationLevel) |
同时满足 |
| ZCZX-CCGL-API-006 | 列表 | 不含已删除 | 接口测试 | Postman | 逻辑删除 | 已知 id 已删 | GET list |
列表无该 id |
| ZCZX-CCGL-API-007 | 列表 | 分页参数 | 接口测试 | Postman | 分页 | 已登录 | pageNum=2&pageSize=10 |
返回第 2 页;条数≤10 |
| ZCZX-CCGL-API-008 | 新增 | 合法全字段 | 接口测试 | Postman | §5.1 | 已登录 | POST Body 含备注等全部合法字段 |
code 成功;GET 详情字段一致 |
| ZCZX-CCGL-API-009 | 新增 | 最小必填(仅名称+面积) | 接口测试 | Postman | 其余选填 | 已登录 | POST 仅 grasslandName+areaMu |
成功;其余字段为空 |
| ZCZX-CCGL-API-010 | 新增 | 利用类型-禁牧 | 接口测试 | Postman | §2.2 | 已登录 | utilizationType=1+合法指标 |
成功 |
| ZCZX-CCGL-API-011 | 新增 | 利用类型-轮牧 | 接口测试 | Postman | §2.2 | 已登录 | utilizationType=2+合法轮牧参数 |
成功 |
| ZCZX-CCGL-API-012 | 新增 | 利用类型-全年放牧 | 接口测试 | Postman | §2.2 | 已登录 | utilizationType=3 |
成功 |
| ZCZX-CCGL-API-013 | 新增 | 名称非法 | 接口测试 | Postman | 1~10 | 已登录 | 名称空或 11 字 | 失败;列表无新记录 |
| ZCZX-CCGL-API-014 | 新增 | 枚举非法 | 接口测试 | Postman | 枚举 | 已登录 | degradationLevel=0 或 utilizationType=9 |
失败;msg 可区分 |
| ZCZX-CCGL-API-015 | 新增 | 面积/亩产草量非法 | 接口测试 | Postman | 正数 | 已登录 | areaMu=0 或 grassYieldPerMu=-1 |
失败 |
| ZCZX-CCGL-API-016 | 新增 | 利用率越界 | 接口测试 | Postman | 0~1 | 已登录 | utilizationRate=1.5 或 -0.01 |
失败 |
| ZCZX-CCGL-API-017 | 新增 | 禁牧日期颠倒 | 接口测试 | Postman | 日期约束 | 已登录 | grazingBanStartDate>grazingBanEndDate |
失败 |
| ZCZX-CCGL-API-018 | 新增 | 轮牧参数非法 | 接口测试 | Postman | 正整数 | 已登录 | rotationPlotCount=0 |
失败 |
| ZCZX-CCGL-API-019 | 新增 | 备注超长 | 接口测试 | Postman | ≤100 | 已登录 | remark 101 字 |
失败 |
| ZCZX-CCGL-API-020 | 详情 | 有效 id | 接口测试 | Postman | §5.5 | 已登录 | GET /dataModel/grassland/{id} |
含名称、面积、退化/利用类型、指标、禁牧日期、轮牧参数、审计字段 |
| ZCZX-CCGL-API-021 | 详情 | 无效/已删 id | 接口测试 | Postman | 异常 | 已登录 | 不存在或已逻辑删除的 id | data 为空或业务失败(与实现一致) |
| ZCZX-CCGL-API-022 | 修改 | 合法修改 | 接口测试 | Postman | §5.3 | 有记录 | PUT 改名称、面积、负责人相关指标 |
成功;详情已更新 |
| ZCZX-CCGL-API-023 | 修改 | 利用类型变更 | 接口测试 | Postman | §5.3 | 禁牧记录 | PUT utilizationType 改为 2 且指标合法 |
成功 |
| ZCZX-CCGL-API-024 | 修改 | 禁牧日期变更 | 接口测试 | Postman | 日期 | 有记录 | PUT 调整起止日期且 start≤end |
成功 |
| ZCZX-CCGL-API-025 | 修改 | 校验失败 | 接口测试 | Postman | 全量校验 | 有记录 | PUT 利用率 2 |
失败;库内数据不变 |
| ZCZX-CCGL-API-026 | 删除 | 单条逻辑删除 | 接口测试 | Postman | §5.4 | 已登录 | DELETE /dataModel/grassland/{id} |
成功;列表/详情不可见 |
| ZCZX-CCGL-API-027 | 删除 | 批量删除 | 接口测试 | Postman | 批量 | 已登录 | DELETE id1,id2 |
成功;两条均不可查 |
| ZCZX-CCGL-API-028 | 端到端 | CRUD 串联 | 接口测试 | Postman | §4 流程 | 已登录 | POST→GET list→GET/{id}→PUT→DELETE |
每步 code 成功 |
| ZCZX-CCGL-API-029 | 鉴权 | 未登录 | 接口测试 | curl | 安全 | 无 Token | GET .../grassland/list |
401 或统一未登录响应 |
| ZCZX-CCGL-API-030 | 权限 | 无写权限 | 接口测试 | Postman | 越权 | 仅 list 权限账号 |
POST /dataModel/grassland |
无权限失败(403 或业务码) |
| ZCZX-CCGL-API-031 | 响应 | 失败可读 | 接口测试 | Postman | §7 | 已登录 | 分别触发名称空、日期颠倒、利用率越界 | Body 含 code、msg 且可区分 |
测试工具:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 | 测试模块 | 测试项 | 测试类型 | 测试工具 | 测试目的 | 前置条件 | 测试步骤 | 预期结果 |
|---|---|---|---|---|---|---|---|---|
| ZCZX-CCGL-UI-001 | 列表 | 默认分页排序 | UI 测试 | Playwright+Chrome | §5.2 | 已登录;数据>20 | 进入「草场管理」菜单 | 默认每页 20;创建时间新在前 |
| ZCZX-CCGL-UI-002 | 列表 | 关键字查询 | UI 测试 | Playwright+Chrome | 名称模糊 | 有含关键词记录 | 输入草场名称→搜索 | 表格含该行 |
| ZCZX-CCGL-UI-003 | 列表 | 利用类型筛选 | UI 测试 | Playwright+Chrome | 精确 | 多类型均有 | 选「轮牧」→搜索 | 利用类型列均为轮牧 |
| ZCZX-CCGL-UI-004 | 列表 | 退化等级筛选 | UI 测试 | Playwright+Chrome | 可选 | 界面有该筛选项 | 选「重度」→搜索 | 退化等级列均为重度 |
| ZCZX-CCGL-UI-005 | 列表 | 组合与重置 | UI 测试 | Playwright+Chrome | 恢复条件 | 已多条件筛选 | 搜索→点「重置」 | 条件清空;恢复默认列表 |
| ZCZX-CCGL-UI-006 | 列表 | 操作列与地图 | UI 测试 | Playwright+Chrome | §5.6 不做 | 有数据行 | 查看操作列 | 有查看/编辑/删除;无地图标点或置灰「暂未开放」 |
| ZCZX-CCGL-UI-007 | 新增 | 合法全字段 | UI 测试 | Playwright+Chrome | §5.1 | 已登录 | 新增→填全部必填+备注→确定 | 成功提示;列表出现新记录 |
| ZCZX-CCGL-UI-008 | 新增 | 最小必填无备注 | UI 测试 | Playwright+Chrome | 备注选填 | 已登录 | 仅必填项→确定 | 成功 |
| ZCZX-CCGL-UI-009 | 新增 | 三种利用类型 | UI 测试 | Playwright+Chrome | §2.2 | 已登录 | 分别新增禁牧/轮牧/全年放牧各一条 | 均成功;列表类型正确 |
| ZCZX-CCGL-UI-010 | 新增 | 名称空或超长 | UI 测试 | Playwright+Chrome | 1~10 | 已登录 | 名称留空或超 10 字→确定 | 字段校验失败,不提交 |
| ZCZX-CCGL-UI-011 | 新增 | 数值非法 | UI 测试 | Playwright+Chrome | 正数/区间 | 已登录 | 面积填 0 或利用率填 1.2→确定 | 校验失败并提示 |
| ZCZX-CCGL-UI-012 | 新增 | 禁牧日期非法 | UI 测试 | Playwright+Chrome | 日期约束 | 已登录 | 结束日期早于开始日期→确定 | 校验失败 |
| ZCZX-CCGL-UI-013 | 新增 | 枚举未选 | UI 测试 | Playwright+Chrome | 必选 | 已登录 | 退化等级或利用类型不选→确定 | 校验失败 |
| ZCZX-CCGL-UI-014 | 新增 | 轮牧参数非法 | UI 测试 | Playwright+Chrome | 正整数 | 已登录 | 轮牧小区数量填 0→确定 | 校验失败 |
| ZCZX-CCGL-UI-015 | 详情 | 字段完整 | UI 测试 | Playwright+Chrome | §5.5 | 任意记录 | 点「查看」 | 名称、面积、退化/利用类型、产草指标、禁牧日期、轮牧参数、备注齐全 |
| ZCZX-CCGL-UI-016 | 修改 | 编辑成功 | UI 测试 | Playwright+Chrome | §5.3 | 有记录 | 编辑→改草场名称与面积→确定 | 列表/详情已更新 |
| ZCZX-CCGL-UI-017 | 修改 | 利用类型与退化变更 | UI 测试 | Playwright+Chrome | 互改 | 有记录 | 改利用类型为「全年放牧」、退化等级为「轻度」→保存 | 列表展示已更新 |
| ZCZX-CCGL-UI-018 | 修改 | 禁牧日期变更 | UI 测试 | Playwright+Chrome | 日期 | 有记录 | 修改禁牧起止日期→保存 | 详情日期为新值 |
| ZCZX-CCGL-UI-019 | 删除 | 确认删除 | UI 测试 | Playwright+Chrome | §5.4 | 有记录 | 删除→确认 | 列表无该行 |
| ZCZX-CCGL-UI-020 | 删除 | 取消删除 | UI 测试 | Playwright+Chrome | 确认框 | 有记录 | 删除→取消 | 记录仍在 |
| ZCZX-CCGL-UI-021 | 删除 | 批量删除 | UI 测试 | Playwright+Chrome | 批量 | 勾选多条 | 批量删除→确认 | 选中行均消失 |
| ZCZX-CCGL-UI-022 | 端到端 | CRUD 串联 | UI 集成 | Playwright+Chrome | §4 | 可新增 | 新增→搜索→查看→编辑→删除 | 全流程无报错 |
| ZCZX-CCGL-UI-023 | 权限 | 只读账号 | UI 测试 | Playwright+Chrome | §6 | 无 add/edit/remove | 登录进模块 | 无新增/编辑/删除或点击拒绝 |
| ZCZX-CCGL-UI-024 | 导出 | 导出(可选) | UI 测试 | Playwright+Chrome | 技术方案 §4 | 有 export 权限 |
点「导出」 | 下载 Excel 或成功提示 |
npm i -D @playwright/test;npx playwright install chromium;本机 Chrome:npx playwright install chrome。playwright.config.ts 示例:use: { channel: 'chrome', headless: false, locale: 'zh-CN', baseURL: 'http://localhost:80' };storageState 复用登录态。page.goto('/dataModel/grassland')(以菜单 component 配置为准)。page.getByPlaceholder(/开始|结束/) 或项目封装的选择器填写 YYYY-MM-DD。page.locator('.el-select').filter({ hasText: '退化等级' }) 等选择枚举项。page.getByRole('button', { name: /确定|确认/ })。| 类别 | 单元 UT | 接口 API | 界面 UI |
|---|---|---|---|
| 正常流程 | UT-009~012、016 | API-001~012、020、022~024、028 | UI-001~009、015~018、022 |
| 异常流程 | UT-001~008、013、015 | API-013~019、021、025、029~031 | UI-010~014、020 |
| 业务约束 | UT-003~008 | API-003~005、014~018 | UI-003~004、009、011~014、017~018 |
| 逻辑删除 | UT-014~015、016 | API-006、026~027 | UI-019~021 |
| 地图(不做) | — | — | UI-006 |
| 权限/导出 | — | API-029~030 | UI-023~024 |
| 需求章节 | 要点 | 主要对应用例 |
|---|---|---|
| §5.1 新增 | 字段、数值、日期、轮牧参数、备注 | UT-001~009;API-008~019;UI-007~014 |
| §5.2 列表 | 关键字、利用类型、逻辑删除不可见 | API-001~007;UI-001~006 |
| §5.3 修改 | 全字段、类型/日期变更 | UT-011~012;API-022~025;UI-016~018 |
| §5.4 删除 | 逻辑删除、确认 | UT-014~015;API-026~027;UI-019~021 |
| §5.5 详情 | 全字段 | API-020;UI-015 |
| §5.6 地图 | 本期不做 | UI-006 |
| §6~§7 | 权限、错误提示 | API-029~031;UI-023 |
| 版本 | 说明 |
|---|---|
| 1.0 | 初版:单元 16、接口 31、UI 24;对齐功能/技术方案;Playwright+Chrome;编号前缀 ZCZX-CCGL |