草场管理 — 测试用例
依据:草场管理功能需求.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 |
无 |
值为 1/5 通过;0、6、null 失败 |
与技术方案 §2.2 一致 |
| ZCZX-CCGL-UT-004 |
参数校验 |
利用类型枚举 |
单元测试 |
JUnit5 |
仅 1~3 |
无 |
值为 1/3 通过;0、4、null 失败 |
与技术方案 §2.2 一致 |
| ZCZX-CCGL-UT-005 |
参数校验 |
面积/亩产草量 |
单元测试 |
JUnit5 |
正数 |
无 |
面积 0、负数;亩产草量 0 |
均失败;合法正数通过 |
| ZCZX-CCGL-UT-006 |
参数校验 |
利用率区间 |
单元测试 |
JUnit5 |
0~1 闭区间 |
无 |
-0.1、1.1、0、1 |
越界失败;0 与 1 通过 |
| ZCZX-CCGL-UT-007 |
参数校验 |
禁牧日期区间 |
单元测试 |
JUnit5 |
起止成对 |
无 |
开始晚于结束;仅一端;合法区间 |
颠倒/缺一端失败;start≤end 通过 |
| ZCZX-CCGL-UT-008 |
参数校验 |
轮牧三项整数 |
单元测试 |
JUnit5 |
≥1 整数 |
无 |
小区数/放牧天数/周期为 0、小数、负数 |
失败;正整数通过 |
| ZCZX-CCGL-UT-009 |
参数校验 |
全量保存校验 |
单元测试 |
JUnit5 |
validateRowForSave |
合法 BizGrassland |
调用校验后写库字段 |
各字段 trim/枚举/数值符合 §3.5 |
| 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 不传 remark |
成功;详情备注为空 |
| 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 且可区分 |
三、界面测试用例(UI)
测试工具: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 或成功提示 |
Playwright 与谷歌浏览器(实施提示)
- 安装:
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 |