补贴发放记录 — 测试用例
依据:补贴发放记录功能需求.md、补贴发放记录技术方案.md
接口 Base Path(示例):/policy/subsidyRecord;若含 context-path 或网关前缀须补齐。鉴权与若依一致(Cookie / Token)。
通用前置(无特殊说明):具备本模块菜单与按钮权限的账号已登录。补贴类型:1 农业生产、2 住房基建、3 民生保障。测试数据:合法 18 位身份证(含校验位)、11 位手机号、16~19 位数字银行账户、金额 > 0 且最多 2 位小数;发放日期默认 ≤ 当天。
界面(UI)测试:借助 Playwright 启动 Chromium(与 Google Chrome 同源内核);可配置 channel: 'chrome' 调用本机已安装的谷歌浏览器。
一、单元测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-BTJL-UT-001 |
参数校验 |
补贴项目名称长度 |
单元测试 |
JUnit5 |
1~20 字 |
无 |
空串、1 字、20 字、21 字 |
空/21 失败;1~20 通过 |
| ZCZX-BTJL-UT-002 |
参数校验 |
受补贴人姓名长度 |
单元测试 |
JUnit5 |
1~10 字 |
无 |
空串、1 字、10 字、11 字 |
空/11 失败;1~10 通过 |
| ZCZX-BTJL-UT-003 |
参数校验 |
补贴类型枚举 |
单元测试 |
JUnit5 |
仅 1~3 |
无 |
subsidyType 为 1/3 通过;0、4、null 失败 |
与技术方案 §2.2 一致 |
| ZCZX-BTJL-UT-004 |
参数校验 |
身份证号 |
单元测试 |
JUnit5 |
18 位+校验位 |
无 |
合法号、17 位、非法校验位、含非法字符 |
仅合法通过 |
| ZCZX-BTJL-UT-005 |
参数校验 |
联系电话 |
单元测试 |
JUnit5 |
大陆手机号 |
无 |
合法 11 位、10 位、非 1 开头 |
仅合法通过 |
| ZCZX-BTJL-UT-006 |
参数校验 |
银行账户 |
单元测试 |
JUnit5 |
16~19 位数字 |
无 |
15 位、16 位、19 位、20 位、含字母 |
16~19 数字通过;其余失败 |
| ZCZX-BTJL-UT-007 |
参数校验 |
补贴金额 |
单元测试 |
JUnit5 |
>0,2 位小数 |
无 |
0、-1、0.01、999999.99、三位小数 |
0/负/三位小数失败;合法正数通过 |
| ZCZX-BTJL-UT-008 |
参数校验 |
发放日期 |
单元测试 |
JUnit5 |
非未来 |
无 |
明天、今天、昨天、非法格式 |
未来/非法失败;今天及过去通过 |
| ZCZX-BTJL-UT-009 |
查询校验 |
日期区间 |
单元测试 |
JUnit5 |
§5.2 |
无 |
validateDateRange(start,end):start>end、仅 start、仅 end、相等 |
非法区间失败;合法通过 |
| ZCZX-BTJL-UT-010 |
Service |
新增落库 |
单元测试 |
JUnit5+Mockito |
正常登记 |
合法实体 |
insert(record) |
各字段与入参一致;有 create_time |
| ZCZX-BTJL-UT-011 |
Service |
修改全字段 |
单元测试 |
JUnit5+Mockito |
§5.3 |
已存在 id |
update(record) 改金额/日期 |
更新成功;update_time 变化 |
| ZCZX-BTJL-UT-012 |
Service |
删除记录 |
单元测试 |
JUnit5+Mockito |
§5.4 |
Mock Mapper |
deleteByIds([id]) |
调用删除;无文件清理逻辑 |
| ZCZX-BTJL-UT-013 |
Service |
列表排序 SQL |
单元测试 |
JUnit5 |
技术方案 |
无 |
检查列表查询 ORDER BY |
含 grant_date DESC, create_time DESC |
| ZCZX-BTJL-UT-014 |
脱敏 |
身份证脱敏 |
单元测试 |
JUnit5 |
§3.4 可选 |
明文 18 位 |
maskIdCard(s) |
前 4+后 4 可见,中间 * |
| ZCZX-BTJL-UT-015 |
脱敏 |
手机号脱敏 |
单元测试 |
JUnit5 |
§3.4 可选 |
11 位手机号 |
maskPhone(s) |
前 3+后 4,中间 **** |
| ZCZX-BTJL-UT-016 |
脱敏 |
无特权详情脱敏 |
单元测试 |
JUnit5+Mockito |
权限 |
用户无完整查看权 |
toListVo(record,false) |
敏感字段为脱敏值 |
二、接口测试用例
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-BTJL-API-001 |
列表 |
默认分页排序 |
接口测试 |
Postman/curl |
§5.2 |
已登录;有多条不同发放日 |
GET /industryPolicy/subsidyRecord/list |
rows≤20;按 grantDate 新在前 |
| ZCZX-BTJL-API-002 |
列表 |
姓名模糊 |
接口测试 |
Postman |
姓名筛选 |
已登录 |
recipientName= 唯一片段 |
命中姓名含该片段记录 |
| ZCZX-BTJL-API-003 |
列表 |
类型筛选-农业 |
接口测试 |
Postman |
精确 |
已登录 |
subsidyType=1 |
均为农业生产 |
| ZCZX-BTJL-API-004 |
列表 |
类型筛选-住房 |
接口测试 |
Postman |
精确 |
已登录 |
subsidyType=2 |
均为住房基建 |
| ZCZX-BTJL-API-005 |
列表 |
类型筛选-民生 |
接口测试 |
Postman |
精确 |
已登录 |
subsidyType=3 |
均为民生保障 |
| ZCZX-BTJL-API-006 |
列表 |
发放日期闭区间 |
接口测试 |
Postman |
start/end |
已知 grantDate 样本 |
startDate、endDate 含样本日 |
仅区间内记录 |
| ZCZX-BTJL-API-007 |
列表 |
仅 startDate |
接口测试 |
Postman |
≥开始 |
已登录 |
只传 startDate |
发放日 ≥ startDate |
| ZCZX-BTJL-API-008 |
列表 |
仅 endDate |
接口测试 |
Postman |
≤结束 |
已登录 |
只传 endDate |
发放日 ≤ endDate |
| ZCZX-BTJL-API-009 |
列表 |
日期区间非法 |
接口测试 |
Postman |
异常 |
已登录 |
startDate>endDate |
失败;可读 msg;不返回业务数据 |
| ZCZX-BTJL-API-010 |
列表 |
组合查询 |
接口测试 |
Postman |
多条件 |
已登录 |
姓名+类型+日期 |
同时满足 |
| ZCZX-BTJL-API-011 |
新增 |
合法全字段 |
接口测试 |
Postman |
§5.1 |
已登录 |
POST Body 八项必填合法 |
code 成功;详情可查 |
| ZCZX-BTJL-API-012 |
新增 |
项目名称非法 |
接口测试 |
Postman |
1~20 |
已登录 |
项目名空/21 字 |
失败;无新记录 |
| ZCZX-BTJL-API-013 |
新增 |
姓名非法 |
接口测试 |
Postman |
1~10 |
已登录 |
姓名空/11 字 |
失败 |
| ZCZX-BTJL-API-014 |
新增 |
类型非法 |
接口测试 |
Postman |
枚举 |
已登录 |
subsidyType=0 或 99 |
失败 |
| ZCZX-BTJL-API-015 |
新增 |
身份证非法 |
接口测试 |
Postman |
校验 |
已登录 |
错误 idCard |
失败;提示身份证类错误 |
| ZCZX-BTJL-API-016 |
新增 |
手机号非法 |
接口测试 |
Postman |
校验 |
已登录 |
10 位或非手机号 |
失败 |
| ZCZX-BTJL-API-017 |
新增 |
银行账户非法 |
接口测试 |
Postman |
16~19 |
已登录 |
15 位或含字母 |
失败 |
| ZCZX-BTJL-API-018 |
新增 |
金额非法 |
接口测试 |
Postman |
>0 |
已登录 |
subsidyAmount=0 或负数 |
失败 |
| ZCZX-BTJL-API-019 |
新增 |
未来发放日 |
接口测试 |
Postman |
日期 |
已登录 |
grantDate 为明天 |
失败 |
| ZCZX-BTJL-API-020 |
详情 |
有效 id |
接口测试 |
Postman |
§5.5 |
已登录 |
GET .../subsidyRecord/{id} |
含八项业务字段及审计字段 |
| ZCZX-BTJL-API-021 |
详情 |
无效 id |
接口测试 |
Postman |
异常 |
已登录 |
不存在 id |
404 或业务失败 |
| ZCZX-BTJL-API-022 |
修改 |
合法修改 |
接口测试 |
Postman |
§5.3 |
已登录;有记录 |
PUT 改金额、发放日 |
成功;详情已更新 |
| ZCZX-BTJL-API-023 |
修改 |
校验仍生效 |
接口测试 |
Postman |
异常 |
已登录 |
PUT 改手机号为非法 |
失败;原数据不变 |
| ZCZX-BTJL-API-024 |
删除 |
单条删除 |
接口测试 |
Postman |
§5.4 |
已登录 |
DELETE .../subsidyRecord/{id} |
成功;列表无该 id |
| ZCZX-BTJL-API-025 |
删除 |
批量删除 |
接口测试 |
Postman |
批量 |
已登录;多条 id |
DELETE .../id1,id2 |
成功;均不可查 |
| ZCZX-BTJL-API-026 |
端到端 |
CRUD 串联 |
接口测试 |
Postman |
§4 |
已登录 |
新增→查列表→详情→改→删 |
全流程成功 |
| ZCZX-BTJL-API-027 |
鉴权 |
未登录 |
接口测试 |
curl |
安全 |
无 Token |
GET .../list |
401 或统一未登录响应 |
| ZCZX-BTJL-API-028 |
权限 |
无写权限 |
接口测试 |
Postman |
越权 |
仅 list 权限 |
POST .../subsidyRecord |
无权限失败 |
| ZCZX-BTJL-API-029 |
响应 |
失败可读 |
接口测试 |
Postman |
§7 |
已登录 |
触发身份证/区间等错误 |
Body 含 code、msg 且可区分 |
| ZCZX-BTJL-API-030 |
脱敏 |
列表手机号(可选) |
接口测试 |
Postman |
§3.4 |
普通角色已登录 |
GET list |
contactPhone 为脱敏格式(若已实现) |
三、界面测试用例(UI)
测试工具:Playwright + Chromium(channel: 'chrome' 使用本机 Google Chrome)。
| 用例编号 |
测试模块 |
测试项 |
测试类型 |
测试工具 |
测试目的 |
前置条件 |
测试步骤 |
预期结果 |
| ZCZX-BTJL-UI-001 |
列表 |
默认分页排序 |
UI 测试 |
Playwright+Chrome |
§5.2 |
已登录;数据>20 |
进入「补贴发放记录」 |
默认每页 20;发放日期新在前 |
| ZCZX-BTJL-UI-002 |
列表 |
姓名模糊查询 |
UI 测试 |
Playwright+Chrome |
姓名筛选 |
存在姓名含关键词记录 |
输入姓名→查询 |
表格含该行 |
| ZCZX-BTJL-UI-003 |
列表 |
补贴类型筛选 |
UI 测试 |
Playwright+Chrome |
精确 |
多类型均有数据 |
选「农业生产」→查询 |
类型列均为农业生产 |
| ZCZX-BTJL-UI-004 |
列表 |
发放日期范围 |
UI 测试 |
Playwright+Chrome |
闭区间 |
已知样本日期 |
选 start/end→查询 |
仅区间内记录 |
| ZCZX-BTJL-UI-005 |
列表 |
日期区间非法 |
UI 测试 |
Playwright+Chrome |
异常 |
已登录 |
start>end→查询 |
提示错误;列表不刷新或空 |
| ZCZX-BTJL-UI-006 |
列表 |
组合与重置 |
UI 测试 |
Playwright+Chrome |
恢复 |
已筛选 |
多条件查询→重置 |
条件清空;恢复默认列表 |
| ZCZX-BTJL-UI-007 |
列表 |
操作按钮 |
UI 测试 |
Playwright+Chrome |
§6 |
有数据行 |
检查操作列 |
查看/编辑/删除可见(按权限) |
| ZCZX-BTJL-UI-008 |
新增 |
合法全字段提交 |
UI 测试 |
Playwright+Chrome |
§5.1 |
已登录 |
新增→填八项必填→确定 |
成功;列表出现新记录 |
| ZCZX-BTJL-UI-009 |
新增 |
项目名空或超长 |
UI 测试 |
Playwright+Chrome |
1~20 |
已登录 |
项目名空/21 字→提交 |
校验失败 |
| ZCZX-BTJL-UI-010 |
新增 |
姓名超长 |
UI 测试 |
Playwright+Chrome |
1~10 |
已登录 |
姓名 11 字→提交 |
校验失败 |
| ZCZX-BTJL-UI-011 |
新增 |
身份证/手机非法 |
UI 测试 |
Playwright+Chrome |
校验 |
已登录 |
填错误身份证或手机号→提交 |
明确错误提示 |
| ZCZX-BTJL-UI-012 |
新增 |
金额与发放日 |
UI 测试 |
Playwright+Chrome |
异常 |
已登录 |
金额 0 或发放日选明天→提交 |
校验失败 |
| ZCZX-BTJL-UI-013 |
新增 |
类型必选 |
UI 测试 |
Playwright+Chrome |
约束 |
可清空类型时 |
不选类型→提交 |
必选提示 |
| ZCZX-BTJL-UI-014 |
详情 |
字段完整 |
UI 测试 |
Playwright+Chrome |
§5.5 |
任意记录 |
点「查看」 |
项目、类型、姓名、证件、账户、金额、日期齐全 |
| ZCZX-BTJL-UI-015 |
详情 |
敏感信息脱敏(可选) |
UI 测试 |
Playwright+Chrome |
§5.5 |
普通角色 |
查看详情 |
身份证/手机/账户为脱敏展示(若已实现) |
| ZCZX-BTJL-UI-016 |
修改 |
编辑成功 |
UI 测试 |
Playwright+Chrome |
§5.3 |
有记录 |
编辑→改补贴金额→保存 |
列表/详情已更新 |
| ZCZX-BTJL-UI-017 |
修改 |
保存校验失败 |
UI 测试 |
Playwright+Chrome |
异常 |
有记录 |
清空银行账户→保存 |
校验失败 |
| ZCZX-BTJL-UI-018 |
删除 |
单条删除确认 |
UI 测试 |
Playwright+Chrome |
§5.4 |
有记录 |
删除→确认 |
记录消失 |
| ZCZX-BTJL-UI-019 |
删除 |
取消删除 |
UI 测试 |
Playwright+Chrome |
确认框 |
有记录 |
删除→取消 |
记录仍在 |
| ZCZX-BTJL-UI-020 |
删除 |
批量删除(若支持) |
UI 测试 |
Playwright+Chrome |
批量 |
勾选多条 |
批量删除→确认 |
选中行均消失 |
| ZCZX-BTJL-UI-021 |
类型 |
三类均可登记 |
UI 测试 |
Playwright+Chrome |
§2.1 |
已登录 |
各建类型 1/2/3 一条并筛选 |
筛选与展示正确 |
| ZCZX-BTJL-UI-022 |
端到端 |
CRUD 串联 |
UI 集成 |
Playwright+Chrome |
§4 |
可新增 |
新增→查→看→改→删 |
全流程界面无报错 |
| ZCZX-BTJL-UI-023 |
权限 |
只读账号 |
UI 测试 |
Playwright+Chrome |
§8 |
无 add/edit/remove |
登录进模块 |
无新增/编辑/删除或操作拒绝 |
| ZCZX-BTJL-UI-024 |
导出 |
导出按钮(可选) |
UI 测试 |
Playwright+Chrome |
技术方案 |
有 export 权限 |
点导出 |
下载 Excel 或提示成功 |
| ZCZX-BTJL-UI-025 |
表单 |
金额两位小数 |
UI 测试 |
Playwright+Chrome |
§5.1 |
已登录 |
输入 100.555→提交 |
前端或后端拒绝三位小数 |
Playwright 与谷歌浏览器(实施提示)
- 安装:
npm i -D @playwright/test;npx playwright install chromium;本机 Chrome:channel: 'chrome'。
- 登录复用:
storageState: 'auth.json'。
- 路由示例:
page.goto('/policy/subsidyRecord')(以菜单配置为准)。
- 日期:
page.locator('.el-date-editor input').first().fill('2025-01-15') 或项目日期组件封装。
- 断言:
expect(page.getByText('农业生产')).toBeVisible()。
覆盖对照
| 类别 |
单元 UT |
接口 API |
界面 UI |
| 正常流程 |
UT-010~013 |
API-001~008、010~011、020、022、024~026 |
UI-001~004、008、014、016、018、021~022 |
| 异常流程 |
UT-001~009 |
API-009、012~019、021、023、029 |
UI-005、009~013、017、019 |
| 业务约束 |
UT-003~008、009 |
API-003~005、009、015~019 |
UI-003、005、011~013、025 |
| 脱敏/权限(可选) |
UT-014~016 |
API-030、027~028 |
UI-015、023、024 |
功能需求追溯(自查)
| 需求章节 |
要点 |
主要对应用例 |
| §5.1 新增 |
八项必填、格式校验 |
UT-001~008;API-011~019;UI-008~013 |
| §5.2 列表 |
姓名模糊、类型、日期区间、排序 |
UT-009、013;API-001~010;UI-001~006 |
| §5.3 修改 |
全字段可改 |
UT-011;API-022~023;UI-016~017 |
| §5.4 删除 |
单条/批量、确认 |
UT-012;API-024~025;UI-018~020 |
| §5.5 详情 |
全字段、脱敏 |
API-020~021;UI-014~015 |
| §6 操作矩阵 |
无状态限制 |
UI-007、023 |
| §7 错误约定 |
code/msg |
API-029 |
修订记录
| 版本 |
说明 |
| 1.0 |
初版:单元 16、接口 30、UI 25;台账 CRUD 无发布下架;Playwright+Chrome;Base Path /industryPolicy/subsidyRecord |