TEST CASES · 128 ENTRIES · 11 MODULES

云途智报 · 测试用例设计文档

云途智报 · 多租户企业差旅报销 SaaS 平台 —— 覆盖功能 / 接口自动化 / UI 自动化 / 性能与异常测试四大主题,共 128 条用例。

功能用例 88 接口可回归 46+ UI 自动化 9 性能/异常 10
128测试用例总数
11功能模块
46接口自动化可回归
10性能/异常用例
测试环境:Gateway :8080 · TenantUser :8081 · ExpenseCore :8082 · AuditFlow :8083 · FinanceSettle :8084 · 前端 :3000 | 接口工具:Postman + Knife4j(doc.html) | 接口自动化:Pytest+Requests+Allure | UI:Selenium+PO | 性能:JMeter + Linux日志
标注说明:「层级」列 接口 = Postman/Knife4j 手动或 Pytest 接口自动化;接口自动化 = 已纳入 Pytest+Requests 回归脚本;UI = Selenium+PO;性能 = JMeter 压测 / Linux 日志分析。

1. 登录与权限矩阵(12)

用例编号用例名称前置条件测试步骤输入预期结果优先级层级
AUTH-01正确账号密码登录存在员工 13800138002POST 登录接口/或 UI 登录手机号+密码123456返回 200 及 JWT token,跳转首页P0接口 自动化
AUTH-02错误密码同上输入错误密码密码错误值401/业务码提示「密码错误」,不返回 tokenP0接口
AUTH-03不存在的手机号-登录未注册号码提示「账号不存在」P1接口
AUTH-04空参/脱敏校验-空手机号或空密码登录"" / null参数校验失败提示,非 500P1接口
AUTH-05无 token 访问受保护接口未登录直接调报销/付款接口-网关鉴权拒绝,401/无业务数据P0接口
AUTH-06过期 token取得 token 后等待过期携带过期 token 请求ex-JWT401/提示 token 失效并引导重新登录P1接口
AUTH-07员工访问管理员功能登录员工角色访问菜单/租户管理接口role=EMPLOYEE403/无权限提示,前端隐藏入口P0接口
AUTH-08财务访问审批接口登录财务角色调用审批同意接口role=FINANCE403 拒绝审批操作P0接口
AUTH-09角色按钮可见性各角色登录对比权限矩阵枚举入口5 角色仅显示该角色可用功能P1UI
AUTH-10修改他人数据越权员工A篡改单据 ownerId 为他人他人单号返回无权限,不泄露他人数据P0接口
AUTH-11登出清理会话已登录登出后再请求-前端清理、后端 token 失效P1接口
AUTH-12登录状态跨刷新保持已登录刷新页面-仍保持登录、路由不白屏P2UI

2. 多租户数据隔离(8)

用例编号用例名称前置条件测试步骤输入预期结果优先级层级
TEN-01租户A看不到租户B数据A/B 两租户均有报销单A 登录查列表仅返回 A 的数据(tenant_id 强制过滤)P0接口
TEN-02伪造 tenant_id 越权A 登录请求头/参数改为 B 的 tenant/departmenttenant=other后端忽略前端参数,仍按 A 隔离,返回 A 数据且脱敏P0接口 自动化
TEN-03不同租户同单号互不影响两租户各有单号 1001分别按单号查询详情1001各返回本租户数据,互不串扰P0接口
TEN-04租户管理员仅能管本租户成员租户企业管理员查询/编辑成员列表-仅返回本租户成员P1接口
TEN-05发票查重跨租户隔离两租户有相同发票号发票A 提报与 B 相同发票发票号相同A 内部查重,不被 B 触发重复,正常入单P0接口
TEN-06账单/对账按租户隔离存在跨租户账单财务导出对账报表-报表仅含本租户数据P1接口
TEN-07部门隔离存在多部门部门主管查本部门/其他部门单-默认仅本部门,跨部门需授权P1接口
TEN-08并发下租户上下文不串多租户并发请求压测同时触发列表查询并发ThreadLocal 无脏数据,各请求拿到本租户数据P2性能

3. 出差申请(10)

用例编号用例名称前置条件测试步骤输入预期结果优先级层级
TRIP-01正常提交出差申请登录员工填写出差单提交目的地/起止日提交成功,进入待审批P1接口
TRIP-02开始日期选未来-选未来开始日期开始=明天阻止/校验「不能选未来日期」P0接口
TRIP-03结束早于开始-结束日期 < 开始日期结束=昨天校验失败,提示结束须≥开始P0接口
TRIP-04结束=开始(当天往返)-开始=结束=今天同日允许通过(边界值)P1接口
TRIP-05目的地为空-不填目的地必填校验失败P1接口
TRIP-06跨天出差时长合理-多次 1~N 天出差天数变化天数/补贴计算正确P2接口
TRIP-07出差单编辑权限单据为草稿态编辑并保存修改字段仅草稿可编辑,审批中/已提交不可改P1接口
TRIP-08出差单删除草稿态删除-仅草稿可删,已提交逻辑禁止P2接口
TRIP-09出差全流程 UI员工登录UI 从新建→提交-页面元素、提示、跳转正确P2UI
TRIP-10同日/极端日期序列化-提交起止日为同一天且跨年边界12-31→01-01日期解析正确,无时区偏移P2接口

4. 发票查重(10)

用例编号用例名称前置条件测试步骤输入预期结果优先级层级
INV-01发票已用查重拦截租户内发票 发票号N 已入过单再次上传同号发票code+no=N提示「发票重复」,阻止入单P0接口
INV-02新发票放行无重复上传新号发票新 code+no通过,进入明细P1接口
INV-03Redis 快路径失联降级停掉/清空 Redis上传发票-兜底查 MySQL 唯一索引,仍能判重,不误放不报 500P0接口 自动化
INV-04并发重复上传同一发票双端并发并发提交同号发票并发数=2仅一笔成功,另一笔判重拒绝(幂等)P0接口自动化 性能
INV-05跨租户不误判两租户同发票号各自上传-互不影响(见 TEN-05)P1接口
INV-06发票号大小写/空格-上传 含空格 发票号" N "去空格/归一化后判重,不误判P2接口
INV-07撤销报销后发票回退可复用发票作废/单据驳回撤销后重新上传同发票-状态回退可再次入单P1接口
INV-08重复键 key 格式-查看查重记录-key 形如 invoice:dedup:{tenant}:{code}:{no}P2接口
INV-09发票核验异常上传上传损坏图片上传非发票图片损坏文件识别失败提示,不生成脏数据P2接口
INV-10列表中重复标记提示-UI 查看已用发票-标记「已使用」且不可选P2UI

5. 报销单提交 · 受理规则(18)

用例编号用例名称前置条件测试步骤输入预期结果优先级层级
EXP-01报销月份=当月通过员工登录提交当月报销月份=当月可提交P0接口
EXP-02报销月份=前6个月通过登录选择往前第7个自然月边界月份=当月-6应可提交(需求口径:当月+前6个月=7个月)P0接口 自动化
EXP-03B报销月份=前6个月被拒(缺陷验证)登录更新到最新版本前复测月份=当月-6旧实现仅放行当月+前5个月;by bug 修复后应放行 —— 关联 BUG-01P0接口自动化
EXP-03报销月份=前7个月拒绝登录选前7个月月份=当月-7拒绝并提示「需财务特批/超期」P0接口
EXP-04报销月份=未来月拒绝登录选未来月份月份=当月+1前端不可选、后端校验拒绝(硬约束)P0接口
EXP-05报销月份为空登录不选月份提交month=null必填校验失败P1接口
EXP-06金额=0 提交登录报销金额填 0amount=0拒绝「金额须大于0」P1接口
EXP-07金额为负数登录填 -100amount=-100拒绝P1接口
EXP-08金额极大值/溢出登录填超大金额9999999999.99精度/类型校验,防止溢出错乱P1接口
EXP-09金额两位小数登录填含3位小数12.345四舍五入或拒绝,金额显示一致P2接口
EXP-10无发票明细提交登录无发票直接提交-校验「至少一张发票」P1接口
EXP-11明细金额合计一致性登录明细合计≠申请金额-校验合计=申请金额,否则提示P1接口
EXP-12无出差单关联登录报销未关联有效出差单-按规则提示需关联出差单P2接口
EXP-13提报人身份校验登录为他人提报申请人≠当前人仅允许本人/被授权代报P1接口
EXP-14草稿保存登录保存草稿不提交-草稿态保存,可继续编辑P2接口
EXP-15草稿提交后态变审批中草稿提交草稿-状态 DRAFT→PENDING,进入审批流P1接口
EXP-16关账月提交被拒该月已关账对该月提交报销关账月后端 checkMonthClosed 强制拦截,前端置灰P0接口 自动化
EXP-17报销录入 UI 流程员工登录UI 新建→填→传票→提交-各元素联动与提示正确P2UI
EXP-18月份选择器限制UI打开月份选择器-未来月/超6个月不可选(灰显)P1UI

6. 审批流 · 状态机(12)

用例编号用例名称前置条件测试步骤输入预期结果优先级层级
AUD-01小额免审配置规则:≤500 免审提交 300 报销单300跳过审批直接通过/免审标记P1接口
AUD-02默认两级审批金额超阈值提交高额单8000插入 部门审批→财务/上级 两级节点P1接口
AUD-03跳过部门审批规则 skip 部门提交跨部门单-直接进入下一级P2接口
AUD-04一级通过后实时重查规则规则会变更第一级通过时修改规则后再判-按最新规则确定下一级“否跳过”P1接口
AUD-05同意推进状态机一级待审主管同意-PENDING→下一级(或 FINAL),记录操作人/时间线P0接口 自动化
AUD-06驳回终止待审审批驳回-状态 REJECTED,流程终止,可退回修改重提P0接口
AUD-07非审批人操作越权待审单非审批人调用同意-403 拒绝P0接口
AUD-08重复提交审批意见已审批再次调用同意-幂等/状态已推进,拒绝重复(防重复)P1接口自动化
AUD-09无审批意见文案-意见为空提交-允许或按配置必填校验P2接口
AUD-10审批时间线完整多级已走查看时间线-每级操作人/时间/意见按序展示P2接口
AUD-11已关账月审批放行该月已关账对关账前存量单据 APPROVE-APPROVE/PAY 放行(存量单走完),仅 SUBMIT 被拒P1接口自动化
AUD-12审批操作 UI主管/财务登录UI 完成同意/驳回-节点状态刷新、提示正确P2UI

7. 银企直连付款(14)

用例编号用例名称前置条件测试步骤输入预期结果优先级层级
PAY-01正常付款成功审批通过、余额充足发起付款→模拟银行回调-PENDING→PROCESSING→SUCCESSP0接口
PAY-02余额充足=金额余额恰好等于付款balance==amount成功且余额为0(边界值)P0接口自动化
PAY-03余额不足余额 < 金额付款-拒绝,状态不变,提示余额不足P0接口
PAY-04余额为0余额0付款-拒绝P0接口
PAY-05并发重复付款Redis/锁在位两请求并发付同一单并发=2Redisson 锁防重,仅一笔生效(幂等)P0接口自动化
PAY-06重复银行回调已 SUCCESS银行回调重复投递-幂等忽略,状态不倒退、不重复扣P0接口自动化
PAY-07回调失败自动重试首次回调失败等待延迟队列/死信重试-按策略重试至成功或进死信告警P1接口
PAY-08并发扣减原子性余额紧平衡多单并发付款并发Lua 原子扣款,总额不超、无负数P0性能
PAY-09预算扣减联动部门有预算付款后查预算-预算同步扣减、不超预算P1接口
PAY-10银行接口超时降级银行侧超时模拟超时-进入重试,不入事务失败死锁P1接口
PAY-11未审批单付款越权单据未审批通过调用付款接口-状态机拒绝付款P0接口
PAY-12关账月付款放行已关账对存量已批单据付款-PAY 放行,正常扣款P1接口
PAY-13收款账户校验非法账户填无效银行卡-账户格式/风控校验提示P2接口
PAY-14付款流水对账一致多笔付款核对流水与银行对账-流水/余额/状态一致P1接口

8. 月结关账(12)

用例编号用例名称前置条件测试步骤输入预期结果优先级层级
CLS-01正常关账财务登录发起某月关账月份关账成功,写入账务状态P0接口
CLS-02关账后 SUBMIT 拒绝该月已关账对该月提交新单-checkMonthClosed 后端强制拒P0接口自动化
CLS-03关账后 APPROVE/PAY 放行已关账+存量单审批及付款存量单-放行走完,不误锁存量流水P1接口自动化
CLS-04重复关账幂等已关账再次关账同月-提示「已关账」,不重复处理P1接口自动化
CLS-05并发关账防重同一月份两名财务并发关账并发=2Redisson 锁 + 乐观锁,仅一次生效P0接口自动化 性能
CLS-06未来月份关账拒绝-关账未来月未来月拒绝P1接口
CLS-07非财务关账越权员工登录调用关账接口-403 拒绝P0接口
CLS-08关账前需完成在途处理提示存在在途单关账-按规则提示存量单状态,而非直接异常P2接口
CLS-09关账状态前端灰显已关账UI 查看该月可提交区-表单置灰、按钮禁用并提示P1UI
CLS-10关账后修改存量单被拒已关账编辑关账月存量单-编辑被拒(不可提交/修改)P1接口
CLS-11XXL-JOB 定时关账调度配好 admin/job触发月度关账 job-job 成功执行、日志可查P1接口
CLS-12关账对账报表准确多月数据关账后导出对账-报表金额/状态与关账口径一致P1接口

9. 网关限流与异常容错(10)

用例编号用例名称前置条件测试步骤输入预期结果优先级层级
GW-01超频触发限流登录后可调接口短时间高频请求频率>上限返回 429 限流提示,拒绝放行P0性能
GW-02限流低于阈值正常放行同上低频请求频率<上限正常放行P1接口
GW-03令牌桶补充(突发池)-连续突发后隔时间请求-令牌按速率补充,可继续放行P2性能
GW-04限流先于鉴权未登录高频调用登录接口-先被限流(429),不进入鉴权P0性能
GW-05网关无 Redis 时 fail-open停 Redis请求接口-限流降级为不拦(fail-open),避免服务不可用P0接口自动化
GW-06压力下 P95 响应 SLAJMeter 压测固定并发观察响应并发 RPS错误率<阈值、P95 在 SLA 内,无 5xx 陡增P1性能
GW-07日志定位异常构造异常请求查 Linux 服务日志-按 traceId 定位异常栈,无日志缺失P2性能
GW-08非法路径 404/鉴权-访问非法路由-正确返回 404,不泄露内部错误P1接口
GW-09超时兜底下游慢请求慢接口-网关超时熔断/友好错误,不悬挂P1接口
GW-10高并发尖峰限流保护JMeter模拟峰值突发尖峰限流拦截超额请求,保护后端线程池P1性能

10. 对账与统计报表(8)

用例编号用例名称前置条件测试步骤输入预期结果优先级层级
RPT-01报表金额汇总准确有报销付款数据统计报表月份金额与明细一致P1接口
RPT-02状态汇总口径多状态单据按状态统计-待审/已审/已付/驳回计数正确P1接口
RPT-03空数据报表无数据月份统计空月-返回 0 值或友好空态,不报错P2接口
RPT-04报表租户隔离跨租户导出报表-仅含本租户P1接口
RPT-05筛选条件组合-日期+部门+状态组合筛选-结果符合交集P2接口
RPT-06分页边界大量数据翻到末页/超页页码超界不越界、返回空或末页P2接口
RPT-07导出文件格式-导出 Excel/CSV-文件可打开、表头与数据正确P1接口
RPT-08图表联动UI切换维度看图表-ECharts 渲染正确、无崩坏P2UI

11. 深度一致性:预算 / 银行异步付款 / 最终一致性(14)

用例编号用例名称前置条件测试步骤输入预期结果优先级层级
CON-01预算初始化/存在性新建部门查询部门预算-预算行存在、默认值正确P1接口
CON-02付款时预算同步扣减有预算有已批单付款后查预算-预算按金额同期扣减P1接口
CON-03预算剩余=金额边界扣减预算恰好等于报销额付款budgetLeft==amount成功且预算归 0(边界值)P1自动化
CON-04预算不足拒绝付款剩余预算 < 金额付款-拒绝、状态不前进、提示预算不足P0接口
CON-05预算并发扣减超扣(回归BUG-11)预算接近饱和同部门多单据并发付款并发数>1Lua/预算行锁保证不超预算、不为负P0自动化 性能
CON-06付款失败余额+预算原子回退(回归BUG-12)银行返回 FAILED在回退步骤注入失败/重试FAILED余额/预算/状态三者原子回退且幂等,对账一致P0自动化 接口
CON-07本地事务+发MQ双写一致(回归BUG-09)付款落库后投递失败被注入付款 → 断开发送 → 观察补偿故障注入本地消息表/事务消息补偿,扣减与银行请求最终一致,不悬挂P0自动化
CON-08银行回调丢失→超时补偿收敛(回归BUG-10)回调消息进入死信等待超时扫描/主动拉单-单据最终收敛 SUCCESS/FAILED,不永久 PROCESSINGP0自动化 性能
CON-09银行回调重复消息幂等同一回调重投重复投递回调回调×2仅生效一次,流水不重复P0自动化
CON-10回调乱序终态正确回调乱序到达先成功后失败/先失败后成功-状态机只允许合法迁移,终态不被乱序改写P1接口
CON-11重试/死信重复补偿幂等(回归BUG-13)延时队列再投同一消息重复消费-全局幂等键去重,补偿只执行一次,无脏流水P1自动化
CON-12余额+预算+状态最终一致复杂付款后对账比对三处-三者最终一致、对账差额为 0P1接口
CON-13补偿任务幂等不重复补补偿任务重复执行并发触发补偿-补偿幂等,不改写已收敛终态P1接口
CON-14关账后存量付款到终态一致已关账+存量单存量付款/回调全流程-流程可走完至终态,账务一致、不误锁P2接口
总数统计:AUTH 12 + TEN 8 + TRIP 10 + INV 10 + EXP 18 + AUD 12 + PAY 14 + CLS 12 + GW 10 + RPT 8 + CON 14 = 128 条(其中接口自动化覆盖见 api_test_automation,UI 见 web_auto_test,压测见 performance_test;CON 系列与 Bug 报告 BUG-09~13 深度一致性缺陷一一对应)。