隔离圈位管理 — 测试用例
依据:隔离圈位管理功能需求.md、隔离圈位管理技术方案.md
接口 Base Path:/tradeMarket/isolationPen;鉴权与若依一致(Cookie / Token)。
通用前置(无特殊说明):具备本模块权限的账号已登录(tradeMarket:isolationPen:list|query|add|edit|remove|config)。biz_isolation_pen 宜预置(del_flag=0):
| 样本 |
编号 |
备注 |
要点 |
| P1 |
01 |
东侧一号栏 |
有备注 |
| P2 |
02 |
(空) |
无备注 |
| P3 |
03 |
西侧临时圈 |
用于模糊/修改 |
合法新增圈位 Body:{"remark":"测试圈位甲"} 或 {}(无备注)。
合法保存配置 Body:{"defaultDays":7,"remark":"常规检疫默认7天"}。
界面(UI)测试:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
一、单元测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-GLQWGL-UT-001 |
编号生成 |
首条编号 |
单元测试 |
JUnit5 |
§2.5 |
无未删圈位 |
PenCodeGenerator.next() |
返回 01 |
| ZCZX-GLQWGL-UT-002 |
编号生成 |
递增补零 |
单元测试 |
JUnit5 |
§2.5 |
最大号 08 |
next() |
返回 09 |
| ZCZX-GLQWGL-UT-003 |
编号生成 |
上限拒绝 |
单元测试 |
JUnit5 |
§2.5 |
最大号 99 |
next() |
抛异常;提示编号上限 |
| ZCZX-GLQWGL-UT-004 |
圈位校验 |
备注长度 |
单元测试 |
JUnit5 |
§3.1 |
无 |
51 字、50 字、空、仅空白 |
51 失败;50/空通过 |
| ZCZX-GLQWGL-UT-005 |
配置校验 |
默认天数下界 |
单元测试 |
JUnit5 |
§3.2 |
无 |
0、1、-1 |
0/负失败;1 通过 |
| ZCZX-GLQWGL-UT-006 |
配置校验 |
默认天数上界 |
单元测试 |
JUnit5 |
§3.2 |
无 |
3650、3651 |
3651 失败;3650 通过 |
| ZCZX-GLQWGL-UT-007 |
配置校验 |
非整数天数 |
单元测试 |
JUnit5 |
§3.2 |
无 |
7.5、null、非数字 |
均失败 |
| ZCZX-GLQWGL-UT-008 |
配置校验 |
配置备注长度 |
单元测试 |
JUnit5 |
§3.2 |
无 |
51 字、50 字 |
51 失败;50 通过 |
| ZCZX-GLQWGL-UT-009 |
Service |
新增圈位落库 |
单元测试 |
JUnit5+Mockito |
正常 |
Mock Mapper |
insert 合法行 |
del_flag=0;pen_code 非空 |
| ZCZX-GLQWGL-UT-010 |
Service |
修改禁改编号 |
单元测试 |
JUnit5 |
§3.1 |
记录 01 |
入参 penCode=99 更新 |
库仍为 01 |
| ZCZX-GLQWGL-UT-011 |
Service |
逻辑删除圈位 |
单元测试 |
JUnit5+Mockito |
§3.1 |
Mock |
remove(id) |
del_flag=2 |
| ZCZX-GLQWGL-UT-012 |
Service |
删除有关联 |
单元测试 |
JUnit5+Mockito |
§3.1 |
hasReference=true |
remove |
抛 ServiceException |
| ZCZX-GLQWGL-UT-013 |
Service |
配置首次保存 |
单元测试 |
JUnit5+Mockito |
§3.2 |
无 id=1 行 |
saveSetting |
INSERT;id=1 |
| ZCZX-GLQWGL-UT-014 |
Service |
配置覆盖更新 |
单元测试 |
JUnit5+Mockito |
§3.2 |
已有 7 天 |
saveSetting(14) |
仅一行;default_days=14 |
| ZCZX-GLQWGL-UT-015 |
Mapper |
模糊筛选 SQL |
单元测试 |
JUnit5 |
§3.3 |
无 |
检查 XML |
LIKE CONCAT('%',…,'%');del_flag=0 |
| ZCZX-GLQWGL-UT-016 |
Mapper |
列表排序 |
单元测试 |
JUnit5 |
§3.1 |
无 |
检查 XML |
pen_code ASC, id ASC |
二、接口测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-GLQWGL-API-001 |
列表 |
默认分页排序 |
接口测试 |
Postman |
§3.1 |
有 P1~P3 |
GET /list |
code=200;≤20 条;penCode 升序 |
| ZCZX-GLQWGL-API-002 |
列表 |
编号模糊 |
接口测试 |
Postman |
§2.6 |
有 P1 01 |
penCode=1 |
含 P1;penCode=01 亦命中 |
| ZCZX-GLQWGL-API-003 |
列表 |
模糊无匹配 |
接口测试 |
Postman |
§2.6 |
已登录 |
penCode=不存在xyz |
rows 为空 |
| ZCZX-GLQWGL-API-004 |
列表 |
不含已删除 |
接口测试 |
Postman |
逻辑删除 |
某 id 已删 |
GET /list |
无该 id |
| ZCZX-GLQWGL-API-005 |
新增 |
有备注 |
接口测试 |
Postman |
§5.1 |
已登录 |
POST remark=测试圈位 |
code=200;返回 2 位 penCode |
| ZCZX-GLQWGL-API-006 |
新增 |
无备注 |
接口测试 |
Postman |
§5.1 |
已登录 |
POST {} |
成功;remark 为空 |
| ZCZX-GLQWGL-API-007 |
新增 |
备注超长 |
接口测试 |
Postman |
§5.1.3 |
已登录 |
remark 51 字 |
code≠200;msg 含长度 |
| ZCZX-GLQWGL-API-008 |
新增 |
传编号无效 |
接口测试 |
Postman |
§3.1 |
已登录 |
POST 含 penCode=88 |
忽略入参;按规则生成编号 |
| ZCZX-GLQWGL-API-009 |
详情 |
有效 id |
接口测试 |
Postman |
§5.4 |
有 P1 |
GET /{id} |
含 penCode、remark、审计字段 |
| ZCZX-GLQWGL-API-010 |
详情 |
无效/已删 id |
接口测试 |
Postman |
异常 |
已登录 |
不存在或已删 id |
失败或 data 为空 |
| ZCZX-GLQWGL-API-011 |
修改 |
改备注 |
接口测试 |
Postman |
§5.3 |
有 P2 |
PUT 改 remark |
成功;penCode 仍为 02 |
| ZCZX-GLQWGL-API-012 |
修改 |
传编号无效 |
接口测试 |
Postman |
§3.1 |
有 P1 |
PUT penCode=99 |
库仍为 01 |
| ZCZX-GLQWGL-API-013 |
修改 |
不存在 id |
接口测试 |
Postman |
异常 |
已登录 |
伪造 id PUT |
失败 |
| ZCZX-GLQWGL-API-014 |
删除 |
单条逻辑删 |
接口测试 |
Postman |
§5.5 |
无关联新行 |
DELETE /{id} |
成功;列表不可见 |
| ZCZX-GLQWGL-API-015 |
删除 |
有关联拒绝 |
接口测试 |
Postman |
§5.5 |
预置 hasReference |
DELETE |
失败;提示关联 |
| ZCZX-GLQWGL-API-016 |
删除 |
重复删除 |
接口测试 |
Postman |
幂等 |
已删 id |
再次 DELETE |
失败或不存在 |
| ZCZX-GLQWGL-API-017 |
配置 |
未配置查询 |
接口测试 |
Postman |
§5.6.3 |
无 setting 行 |
GET /setting |
data 为空或字段 null |
| ZCZX-GLQWGL-API-018 |
配置 |
首次保存 |
接口测试 |
Postman |
§5.6 |
无配置 |
PUT /setting defaultDays=7 |
成功;再 GET 为 7 |
| ZCZX-GLQWGL-API-019 |
配置 |
覆盖更新 |
接口测试 |
Postman |
§5.6 |
已有 7 天 |
PUT defaultDays=14 |
成功;仅一条;值为 14 |
| ZCZX-GLQWGL-API-020 |
配置 |
缺默认天数 |
接口测试 |
Postman |
§5.6.5 |
已登录 |
PUT 无 defaultDays |
失败 |
| ZCZX-GLQWGL-API-021 |
配置 |
天数非法 |
接口测试 |
Postman |
§5.6.5 |
已登录 |
0/3651/7.5 各测 |
均失败 |
| ZCZX-GLQWGL-API-022 |
配置 |
备注超长 |
接口测试 |
Postman |
§5.6.5 |
已登录 |
remark 51 字 |
失败 |
| ZCZX-GLQWGL-API-023 |
端到端 |
圈位 CRUD |
接口测试 |
Postman |
§4 |
已登录 |
POST→list→GET→PUT→DELETE |
每步 code=200 |
| ZCZX-GLQWGL-API-024 |
鉴权 |
未登录 |
接口测试 |
curl |
安全 |
无 Token |
GET /list |
401 或统一未登录 |
| ZCZX-GLQWGL-API-025 |
权限 |
无新增权限 |
接口测试 |
Postman |
§6 |
仅 list |
POST 圈位 |
无权限失败 |
| ZCZX-GLQWGL-API-026 |
权限 |
无配置权限 |
接口测试 |
Postman |
§6 |
无 config |
PUT /setting |
无权限失败 |
| ZCZX-GLQWGL-API-027 |
权限 |
无删除权限 |
接口测试 |
Postman |
§6 |
无 remove |
DELETE |
无权限失败 |
| ZCZX-GLQWGL-API-028 |
响应 |
失败可读 |
接口测试 |
Postman |
§8 |
已登录 |
触发备注超长、天数非法 |
msg 可区分场景 |
三、界面测试用例(UI)
测试工具:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-GLQWGL-UI-001 |
列表 |
默认展示 |
UI 测试 |
Playwright+Chrome |
§5.2.3 |
已登录;有 P1~P3 |
进入「隔离圈位管理」 |
含圈位编号、备注、操作;有「设置隔离天数」 |
| ZCZX-GLQWGL-UI-002 |
列表 |
编号模糊筛选 |
UI 测试 |
Playwright+Chrome |
§2.6 |
有 P1 01 |
编号填 1→搜索 |
列表含 P1 |
| ZCZX-GLQWGL-UI-003 |
列表 |
无结果 |
UI 测试 |
Playwright+Chrome |
§2.6 |
已登录 |
输入不存在编号→搜索 |
空列表或空状态 |
| ZCZX-GLQWGL-UI-004 |
列表 |
重置 |
UI 测试 |
Playwright+Chrome |
§5.2 |
已筛选 |
搜索→重置 |
条件清空;列表恢复 |
| ZCZX-GLQWGL-UI-005 |
新增圈位 |
有备注保存 |
UI 测试 |
Playwright+Chrome |
§5.1 |
有 add 权限 |
新增→填备注→确定 |
成功提示;列表新行有 2 位编号 |
| ZCZX-GLQWGL-UI-006 |
新增圈位 |
无备注保存 |
UI 测试 |
Playwright+Chrome |
§5.1 |
已登录 |
新增→备注留空→确定 |
成功;备注列为空或「—」 |
| ZCZX-GLQWGL-UI-007 |
新增圈位 |
备注超长 |
UI 测试 |
Playwright+Chrome |
§5.1.3 |
新增 |
输入超 50 字或保存 |
无法输入或校验失败 |
| ZCZX-GLQWGL-UI-008 |
新增圈位 |
编号只读 |
UI 测试 |
Playwright+Chrome |
§2.2 |
打开新增 |
查看圈位编号控件 |
禁用/占位「保存后自动生成」 |
| ZCZX-GLQWGL-UI-009 |
新增圈位 |
取消 |
UI 测试 |
Playwright+Chrome |
§5.1.2 |
新增 |
填备注→取消 |
弹窗关闭;无新行 |
| ZCZX-GLQWGL-UI-010 |
详情 |
只读展示 |
UI 测试 |
Playwright+Chrome |
§5.4 |
有 P1 |
点击查看 |
编号、备注只读;含审计信息 |
| ZCZX-GLQWGL-UI-011 |
编辑 |
改备注 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有 P3 |
编辑→改备注→确定 |
列表备注已更新;编号不变 |
| ZCZX-GLQWGL-UI-012 |
编辑 |
编号不可改 |
UI 测试 |
Playwright+Chrome |
§5.3 |
编辑 P1 |
查看编号控件 |
只读 |
| ZCZX-GLQWGL-UI-013 |
删除 |
确认删除 |
UI 测试 |
Playwright+Chrome |
§5.5 |
无关联行 |
删除→确认 |
行消失 |
| ZCZX-GLQWGL-UI-014 |
删除 |
取消删除 |
UI 测试 |
Playwright+Chrome |
§5.5 |
任意行 |
删除→取消 |
行仍在 |
| ZCZX-GLQWGL-UI-015 |
配置 |
首次设置天数 |
UI 测试 |
Playwright+Chrome |
§5.6 |
无配置;有 config |
设置隔离天数→填 7→确定 |
成功提示;再次打开回显 7 |
| ZCZX-GLQWGL-UI-016 |
配置 |
覆盖更新天数 |
UI 测试 |
Playwright+Chrome |
§5.6 |
已配置 7 天 |
改为 14→确定 |
再次打开为 14 |
| ZCZX-GLQWGL-UI-017 |
配置 |
天数必填/非法 |
UI 测试 |
Playwright+Chrome |
§5.6.5 |
打开配置弹窗 |
留空或填 0→确定 |
前端校验失败 |
| ZCZX-GLQWGL-UI-018 |
配置 |
取消 |
UI 测试 |
Playwright+Chrome |
§5.6.4 |
已配置 |
改天数→取消 |
不保存;再打开仍为原值 |
| ZCZX-GLQWGL-UI-019 |
端到端 |
全流程 |
UI 集成 |
Playwright+Chrome |
§4 |
权限齐备 |
设天数→新增→模糊查→看→改→删 |
无报错 |
| ZCZX-GLQWGL-UI-020 |
权限 |
只读角色 |
UI 测试 |
Playwright+Chrome |
§6 |
仅 list/query |
进入模块 |
无新增/编辑/删除/设置隔离天数 |
| ZCZX-GLQWGL-UI-021 |
详情 |
从详情编辑 |
UI 测试 |
Playwright+Chrome |
§5.4 |
查看 P1 |
点「编辑」 |
进入编辑弹窗;编号只读 |
Playwright 与谷歌浏览器(实施提示)
- 安装:
npm i -D @playwright/test;npx playwright install chrome。
- 配置:
use: { channel: 'chrome', locale: 'zh-CN', baseURL: 'http://localhost:80' };storageState 复用登录态。
- 路由:
page.goto('/tradeMarket/isolationPen')(以菜单 component 为准)。
- 模糊搜索:
page.getByLabel('圈位编号').fill('1') 后 page.getByRole('button', { name: '搜索' }).click()。
- 设置隔离天数:
page.getByRole('button', { name: '设置隔离天数' }).click() → page.getByLabel('默认隔离天数').fill('7') → 确定。
覆盖对照
| 类别 |
单元 UT |
接口 API |
界面 UI |
| 正常流程 |
UT-009、013~014 |
API-005~006、009、011、017~019、023 |
UI-005~006、010~012、015~016、019 |
| 异常流程 |
UT-003~008 |
API-007、010、013、015~016、020~022 |
UI-007、013~014、017 |
| 业务约束 |
UT-001~004、010 |
API-002~004、008、012、021 |
UI-002~004、008、012 |
| 编号 01~99 |
UT-001~003 |
API-005、008、012 |
UI-008、012 |
| 模糊筛选 |
UT-015 |
API-002~003 |
UI-002~003 |
| 逻辑删除 |
UT-011 |
API-004、014~016 |
UI-013 |
| 默认隔离天数 |
UT-005~008、013~014 |
API-017~022 |
UI-015~018 |
| 权限/鉴权 |
— |
API-024~027 |
UI-020 |
功能需求追溯(自查)
| 需求章节 |
要点 |
主要对应用例 |
| §5.1 新增圈位 |
备注、编号自动 |
UT-004、009;API-005~008;UI-005~009 |
| §5.2 列表 |
编号模糊、分页 |
UT-015~016;API-001~004;UI-001~004 |
| §5.3 修改 |
仅备注、编号不可改 |
UT-010;API-011~013;UI-011~012 |
| §5.4 详情 |
只读 |
API-009~010;UI-010、021 |
| §5.5 删除 |
逻辑删、关联 |
UT-011~012;API-014~016;UI-013~014 |
| §5.6 设置隔离天数 |
全局单份配置 |
UT-005~008、013~014;API-017~022;UI-015~018 |
| §2.2 编号 |
2 位自动 |
UT-001~003;API-005;UI-008 |
| §6 权限 |
含 config |
API-024~027;UI-020 |
修订记录
| 版本 |
说明 |
| 1.0 |
初版:单元 16、接口 28、UI 21;覆盖圈位 CRUD、模糊筛选、全局隔离天数、权限;Playwright+Chrome;前缀 ZCZX-GLQWGL |