数据资产服务中心 — 测试用例
依据:数据资产服务中心功能需求.md、数据资产服务中心技术方案.md
接口 Base Path(示例):/dataHub/dataSendRecord;若含 context-path 或网关前缀须补齐。鉴权与若依一致(Cookie / Token)。
通用前置(无特殊说明):具备本模块菜单与按钮权限的账号已登录(dataHub:dataSendRecord:list|query|add|edit|remove)。库表 biz_data_send_record 中至少存在 2 条 del_flag=0 样本,示例:
- A:
sendTime=2025-06-01 10:00:00,receiverName=县级政务平台,sendContent=牧业产值月报
- B:
sendTime=2025-06-15 14:30:00,receiverName=合作银行数据中心,sendContent=牦牛资产摘要
合法 Body 示例(新增):sendTime=2025-06-20 09:00:00,sendContent=草场利用统计,receiverName=第三方监管平台,receiverAddress=https://api.example.com/v1/receive
界面(UI)测试:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
一、单元测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-SJZCZX-UT-001 |
参数校验 |
发送时间 |
单元测试 |
JUnit5 |
非空 |
无 |
sendTime 为 null、合法 datetime |
null 失败;合法通过 |
| ZCZX-SJZCZX-UT-002 |
参数校验 |
发送内容 trim |
单元测试 |
JUnit5 |
§3.3.1 |
无 |
" abc "、" "、2001 字、2000 字 |
空白失败;2000 通过;2001 失败 |
| ZCZX-SJZCZX-UT-003 |
参数校验 |
接收方名称 |
单元测试 |
JUnit5 |
1~128 字 |
无 |
空串、129 字、1 字 |
空/超长失败;合法通过 |
| ZCZX-SJZCZX-UT-004 |
参数校验 |
接收方地址 |
单元测试 |
JUnit5 |
1~512 字 |
无 |
空串、513 字、合法 URL 文本 |
空/超长失败;合法通过 |
| ZCZX-SJZCZX-UT-005 |
参数校验 |
备注长度 |
单元测试 |
JUnit5 |
≤500 |
无 |
remark 501 字、500 字 |
501 失败;500 通过 |
| ZCZX-SJZCZX-UT-006 |
列表查询 |
发送日期区间 |
单元测试 |
JUnit5 |
§3.1.1 |
无 |
validateDateRangeForList:12-01>06-01;仅起/仅止;合法闭区间 |
颠倒失败;合法通过 |
| ZCZX-SJZCZX-UT-007 |
参数校验 |
全量保存 |
单元测试 |
JUnit5 |
validateRowForSave |
无 |
合法 BizDataSendRecord 四必填 |
通过 |
| ZCZX-SJZCZX-UT-008 |
参数校验 |
修改缺 id |
单元测试 |
JUnit5 |
修改必填 |
无 |
update 且 id=null |
失败 |
| ZCZX-SJZCZX-UT-009 |
Service |
记录不存在 |
单元测试 |
JUnit5+Mockito |
异常 |
Mock selectById null |
update/delete |
抛 ServiceException |
| ZCZX-SJZCZX-UT-010 |
Service |
已逻辑删除 |
单元测试 |
JUnit5+Mockito |
§3.5.1 |
Mock del_flag=2 |
update/getById |
失败或查无 |
| ZCZX-SJZCZX-UT-011 |
Service |
新增落库 |
单元测试 |
JUnit5+Mockito |
正常登记 |
Mock Mapper |
insert(record) |
del_flag=0;四业务字段入库 |
| ZCZX-SJZCZX-UT-012 |
Service |
修改全字段 |
单元测试 |
JUnit5+Mockito |
§5.3 |
已存在 id |
update 改时间/内容/名称/地址 |
成功;update_time 刷新 |
| ZCZX-SJZCZX-UT-013 |
Service |
逻辑删除 |
单元测试 |
JUnit5+Mockito |
§5.5 |
Mock Mapper |
remove([id], updateBy) |
del_flag=2;非物理删 |
| ZCZX-SJZCZX-UT-014 |
Service |
列表日期非法 |
单元测试 |
JUnit5+Mockito |
§3.1.1 |
无 |
selectList 且 startDate>endDate |
抛异常;不调 Mapper |
| ZCZX-SJZCZX-UT-015 |
Mapper |
筛选与排序 |
单元测试 |
JUnit5 |
§3.3 |
无 |
检查 BizDataSendRecordMapper.xml |
del_flag='0';DATE(send_time) 闭区间;LOWER(receiver_name);send_time DESC,id DESC |
二、接口测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-SJZCZX-API-001 |
列表 |
默认分页排序 |
接口测试 |
Postman/curl |
§5.1.2 |
已登录;多条记录 |
GET /dataHub/dataSendRecord/list |
rows≤20;sendTime 新在前 |
| ZCZX-SJZCZX-API-002 |
列表 |
发送日期区间 |
接口测试 |
Postman |
§2.4 |
含 A、B 样本 |
startDate=2025-06-01&endDate=2025-06-10 |
仅 A;含起止日当天 |
| ZCZX-SJZCZX-API-003 |
列表 |
发送日期单日 |
接口测试 |
Postman |
闭区间 |
B 在 06-15 |
startDate=endDate=2025-06-15 |
含 B |
| ZCZX-SJZCZX-API-004 |
列表 |
接收方名称精确 |
接口测试 |
Postman |
§2.4 |
已登录 |
receiverName=县级政务平台 |
仅名称完全一致记录 |
| ZCZX-SJZCZX-API-005 |
列表 |
名称大小写不敏感 |
接口测试 |
Postman |
技术方案 §3.1.1 |
库中名为 ABC平台 |
receiverName=abc平台 |
命中同一条 |
| ZCZX-SJZCZX-API-006 |
列表 |
名称模糊不匹配 |
接口测试 |
Postman |
精确非模糊 |
已登录 |
receiverName=政务(非全名) |
无记录或空列表 |
| ZCZX-SJZCZX-API-007 |
列表 |
组合筛选 |
接口测试 |
Postman |
多条件 |
已登录 |
日期区间+receiverName |
同时满足 |
| ZCZX-SJZCZX-API-008 |
列表 |
发送日期区间非法 |
接口测试 |
Postman |
§7 |
已登录 |
startDate=2025-12-01&endDate=2025-01-01 |
失败;msg 可区分 |
| ZCZX-SJZCZX-API-009 |
列表 |
不含已删除 |
接口测试 |
Postman |
逻辑删除 |
已知 id 已删 |
GET list |
列表无该 id |
| ZCZX-SJZCZX-API-010 |
新增 |
合法全字段 |
接口测试 |
Postman |
§5.2 |
已登录 |
POST 合法 Body |
code=200;详情四字段一致 |
| ZCZX-SJZCZX-API-011 |
新增 |
内容首尾空白 |
接口测试 |
Postman |
trim |
已登录 |
sendContent=" 摘要 " |
成功;存库为 trim 后 |
| ZCZX-SJZCZX-API-012 |
新增 |
缺发送时间 |
接口测试 |
Postman |
必填 |
已登录 |
缺 sendTime |
失败 |
| ZCZX-SJZCZX-API-013 |
新增 |
发送内容为空/超长 |
接口测试 |
Postman |
§3.3.1 |
已登录 |
sendContent="" 或 2001 字 |
失败 |
| ZCZX-SJZCZX-API-014 |
新增 |
接收方名称非法 |
接口测试 |
Postman |
1~128 |
已登录 |
空串或 129 字 |
失败 |
| ZCZX-SJZCZX-API-015 |
新增 |
接收方地址非法 |
接口测试 |
Postman |
1~512 |
已登录 |
空串或 513 字 |
失败 |
| ZCZX-SJZCZX-API-016 |
详情 |
有效 id |
接口测试 |
Postman |
§5.4 |
已登录 |
GET /dataHub/dataSendRecord/{id} |
含四业务字段及审计字段 |
| ZCZX-SJZCZX-API-017 |
详情 |
无效/已删 id |
接口测试 |
Postman |
异常 |
已登录 |
不存在或已删 id |
data 空或业务失败 |
| ZCZX-SJZCZX-API-018 |
修改 |
合法全字段 |
接口测试 |
Postman |
§5.3 |
有记录 |
PUT 改时间/内容/名称/地址 |
成功;详情已更新 |
| ZCZX-SJZCZX-API-019 |
修改 |
校验失败 |
接口测试 |
Postman |
全量校验 |
有记录 |
PUT sendContent 仅空白 |
失败;库不变 |
| ZCZX-SJZCZX-API-020 |
修改 |
不存在 id |
接口测试 |
Postman |
异常 |
已登录 |
PUT 伪造 id |
失败 |
| ZCZX-SJZCZX-API-021 |
删除 |
单条逻辑删除 |
接口测试 |
Postman |
§5.5 |
已登录 |
DELETE /dataHub/dataSendRecord/{id} |
成功;列表不可见 |
| ZCZX-SJZCZX-API-022 |
删除 |
重复删除 |
接口测试 |
Postman |
幂等/异常 |
id 已删 |
再次 DELETE 同 id |
失败或提示不存在 |
| ZCZX-SJZCZX-API-023 |
端到端 |
CRUD 串联 |
接口测试 |
Postman |
§4 |
已登录 |
POST→list→GET/{id}→PUT→DELETE |
每步成功 |
| ZCZX-SJZCZX-API-024 |
鉴权 |
未登录 |
接口测试 |
curl |
安全 |
无 Token |
GET .../list |
401 或统一未登录 |
| ZCZX-SJZCZX-API-025 |
权限 |
无新增权限 |
接口测试 |
Postman |
§6 |
仅 list 权限 |
POST .../dataSendRecord |
无权限失败 |
| ZCZX-SJZCZX-API-026 |
权限 |
无删除权限 |
接口测试 |
Postman |
§6 |
无 remove |
DELETE/{id} |
无权限失败 |
| ZCZX-SJZCZX-API-027 |
响应 |
失败可读 |
接口测试 |
Postman |
§7 |
已登录 |
触发日期颠倒、内容空、名称超长 |
code、msg 可区分 |
三、界面测试用例(UI)
测试工具:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-SJZCZX-UI-001 |
列表 |
默认分页排序 |
UI 测试 |
Playwright+Chrome |
§5.1.2 |
已登录;数据>20 |
进入「数据资产服务中心」菜单 |
默认每页 20;发送时间新在前 |
| ZCZX-SJZCZX-UI-002 |
列表 |
发送日期筛选 |
UI 测试 |
Playwright+Chrome |
§2.4 |
有 A、B 样本 |
选发送日期起止→搜索 |
结果在闭区间内 |
| ZCZX-SJZCZX-UI-003 |
列表 |
接收方名称筛选 |
UI 测试 |
Playwright+Chrome |
精确匹配 |
有样本 |
输入全名「县级政务平台」→搜索 |
仅命中 A |
| ZCZX-SJZCZX-UI-004 |
列表 |
名称片段不匹配 |
UI 测试 |
Playwright+Chrome |
非模糊 |
有样本 |
输入「政务」→搜索 |
无行或空状态 |
| ZCZX-SJZCZX-UI-005 |
列表 |
组合与重置 |
UI 测试 |
Playwright+Chrome |
§5.1 |
已筛选 |
搜索→「重置」 |
条件清空;默认列表 |
| ZCZX-SJZCZX-UI-006 |
列表 |
展示列完整 |
UI 测试 |
Playwright+Chrome |
§5.1.3 |
有数据 |
查看表头与首行 |
含发送时间、内容、接收方名称/地址、操作 |
| ZCZX-SJZCZX-UI-007 |
列表 |
长文本省略 |
UI 测试 |
Playwright+Chrome |
§5.1.3 |
内容/地址较长 |
查看列表单元格 |
省略显示;悬停或详情可看全 |
| ZCZX-SJZCZX-UI-008 |
新增 |
合法登记 |
UI 测试 |
Playwright+Chrome |
§5.2 |
已登录 |
新增→填四必填→确定 |
成功提示;列表新行 |
| ZCZX-SJZCZX-UI-009 |
新增 |
发送时间默认当前 |
UI 测试 |
Playwright+Chrome |
§5.2.2 |
已登录 |
打开新增弹窗 |
发送时间默认为当前时刻(可改) |
| ZCZX-SJZCZX-UI-010 |
新增 |
缺必填项 |
UI 测试 |
Playwright+Chrome |
§5.2.3 |
已登录 |
留空发送内容或接收方→确定 |
字段校验失败;不关闭弹窗 |
| ZCZX-SJZCZX-UI-011 |
新增 |
发送内容仅空白 |
UI 测试 |
Playwright+Chrome |
trim |
已登录 |
发送内容填空格→确定 |
校验失败 |
| ZCZX-SJZCZX-UI-012 |
新增 |
取消新增 |
UI 测试 |
Playwright+Chrome |
取消 |
已登录 |
新增填一半→取消 |
弹窗关闭;列表无新行 |
| ZCZX-SJZCZX-UI-013 |
列表 |
日期起晚于止 |
UI 测试 |
Playwright+Chrome |
§7 |
已登录 |
发送日期选颠倒区间→搜索 |
提示修正;不刷新或空结果 |
| ZCZX-SJZCZX-UI-014 |
详情 |
字段完整只读 |
UI 测试 |
Playwright+Chrome |
§5.4 |
任意记录 |
点「查看」 |
四业务字段+审计信息;无保存按钮 |
| ZCZX-SJZCZX-UI-015 |
修改 |
编辑成功 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有记录 |
编辑→改接收方地址→保存 |
列表/详情已更新 |
| ZCZX-SJZCZX-UI-016 |
修改 |
校验失败 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有记录 |
编辑清空接收方名称→保存 |
校验失败;原数据不变 |
| ZCZX-SJZCZX-UI-017 |
删除 |
确认删除 |
UI 测试 |
Playwright+Chrome |
§5.5 |
有记录 |
删除→确认 |
列表无该行 |
| ZCZX-SJZCZX-UI-018 |
删除 |
取消删除 |
UI 测试 |
Playwright+Chrome |
确认框 |
有记录 |
删除→取消 |
记录仍在 |
| ZCZX-SJZCZX-UI-019 |
端到端 |
CRUD 串联 |
UI 集成 |
Playwright+Chrome |
§4 |
权限齐备 |
新增→搜索→查看→编辑→删除 |
全流程无报错 |
| ZCZX-SJZCZX-UI-020 |
权限 |
只读账号 |
UI 测试 |
Playwright+Chrome |
§6 |
无 add/edit/remove |
进入模块 |
无新增/编辑/删除或点击拒绝 |
| ZCZX-SJZCZX-UI-021 |
权限 |
无菜单 |
UI 测试 |
Playwright+Chrome |
§6 |
无 list 角色 |
登录后找菜单 |
无「数据资产服务中心」入口 |
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('/dataHub/dataSendRecord')(以菜单 component 为准)。
- 发送日期:
page.locator('.el-date-editor').filter({ hasText: '发送日期' }) 或按 label 定位 daterange;fill 起止 YYYY-MM-DD。
- 新增:
page.getByRole('button', { name: '新增' });弹窗内 page.getByLabel('发送内容').fill('…');发送时间用 datetime 选择器。
- 删除:
page.getByRole('button', { name: '删除' }).first() → page.getByRole('button', { name: '确定' })。
覆盖对照
| 类别 |
单元 UT |
接口 API |
界面 UI |
| 正常流程 |
UT-007、011~012、015 |
API-001~007、010~011、016、018、023 |
UI-001~009、014~015、019 |
| 异常流程 |
UT-001~006、008~010、014 |
API-008~009、012~015、017、019~022、024 |
UI-010~013、016~018 |
| 业务约束 |
UT-002~005、015 |
API-004~006、011、013~015 |
UI-003~004、007、011、013 |
| 逻辑删除 |
UT-010、013、015 |
API-009、021~022 |
UI-017~018 |
| 权限/鉴权 |
— |
API-024~026 |
UI-020~021 |
| 名称精确/大小写 |
UT-015 |
API-004~006 |
UI-003~004 |
| 发送日期闭区间 |
UT-006、015 |
API-002~003、008 |
UI-002、013 |
功能需求追溯(自查)
| 需求章节 |
要点 |
主要对应用例 |
| §5.1 列表 |
日期区间、名称精确、分页排序 |
API-001~009;UI-001~007、013 |
| §5.2 新增 |
默认时间、必填、长度 |
UT-001~005、007、011;API-010~015;UI-008~012 |
| §5.3 修改 |
全字段可改 |
UT-012;API-018~020;UI-015~016 |
| §5.4 查看 |
只读全文 |
API-016;UI-014 |
| §5.5 删除 |
确认、逻辑删除 |
UT-013;API-021~022;UI-017~018 |
| §2.3~§2.4 |
逻辑删除、筛选口径 |
UT-010、015;API-005、009 |
| §6~§7 |
权限、错误提示 |
API-024~027;UI-020~021 |
| §4 流程 |
CRUD 串联 |
API-023;UI-019 |
修订记录
| 版本 |
说明 |
| 1.0 |
初版:单元 15、接口 27、UI 21;覆盖正常/异常/约束;Playwright+Chrome;编号前缀 ZCZX-SJZCZX |