- 需求 v1.0 定稿(md+docx)与 UI 原型入库;确认单判定 docx 为同文载体、安徽运八并行无冲突 - 全流程产物:分析 + 59 测试点 + 85 用例 + 测试数据 145 组;评审 3 阻断与覆盖缺口 GAP-001 已修复,裁决 PASS_WITH_FIX - 导出 Excel(云效模型)+ XMind + 版本快照 v1;含 docx 生成脚本与转换校验产物 - .gitignore 排除 node_modules 与 Excel 锁文件
39 KiB
39 KiB
运单资料文件包下载需求 测试点
生成时间: 2026-09-08 依据: output/analysis/运单资料文件包下载需求_分析.md(26 条 REQ)、_风险评估.md(RISK-AVAILABILITY P1 等 5 项)、_测试策略.md、_关联与冲突.md(无冲突,与安徽运八需求并行) 知识库: project_profile.md、common_missed_scenes.md、historical_defects.md、definition_of_done.md、terminology.md 原型: resources/prototypes/anhuibaba_file_package.html 术语: 批次 / 文件包(批次包)/ 运单包 / 最小序号运单 / 电子回单 / 失败清单 / 审计日志 / 幂等性,均与 knowledge_base/01_standards/terminology.md 一致
测试点概览
- 总测试点数: 59
- P0: 25 / P1: 26 / P2: 6 / P3: 2
- 来源分布: [需求] 47, [漏测清单] 14, [风险矩阵] 7, [项目画像] 7, [历史缺陷] 4, [最佳实践] 3, [冲突修订] 1([营销规则] 不适用:本项目无营销域,见"不适用说明")
覆盖维度对照(12/12 全覆盖)
| 维度 | 对应测试点 |
|---|---|
| 主流程 | TP-M-001、TP-U-001/002、TP-T-001、TP-P-001/003/004、TP-D-001 |
| 异常流程 | TP-U-003/004/005、TP-T-007、TP-P-008、TP-N-006、TP-N-003 |
| 边界条件 | TP-U-006/007、TP-P-011/012、TP-N-004 |
| 数据校验 | TP-U-008~016、TP-T-004/006、TP-P-005/006/010 |
| 状态流转 | TP-T-001/002/003/007、TP-D-004、TP-N-004 |
| 权限控制 | TP-M-002/003/004/005、TP-N-005 |
| 并发幂等 | TP-D-002、TP-U-018、TP-N-002/003、TP-P-009 |
| 弱网超时 | TP-D-006、TP-N-003、TP-U-017 |
| 规则组合 | TP-P-002/007、TP-U-015、TP-T-002 |
| 历史缺陷防御 | TP-P-012/013、TP-D-004、TP-N-003 |
| 跨需求冲突防御 | TP-N-008(关联与冲突报告未识别冲突条目,落"并行不干扰"回归验证点) |
| 项目高风险场景 | TP-N-005/006、TP-M-005、TP-U-007(OBS 依赖/敏感合规/机构隔离/Excel 边界) |
不适用说明(显式标注,非静默省略)
- [营销规则] 维度不适用:项目画像 §4 明确本项目无营销活动/优惠券/积分体系,本需求亦无营销规则。
- [历史缺陷] BUG-202607-04(省份代码硬编码)不适用:本需求为资料导出打包,无监管上报省份字段;其余 3 条历史缺陷(阶段依赖链前后端双重校验、重试幂等、跨模块数据溯源)均已转化为 TP-D-004、TP-N-003、TP-P-012/013。
待确认项汇总(评审时确认,确认后重点回归)
| 编号 | 待确认问题 | 影响测试点 |
|---|---|---|
| Q1 | "查看结构/文件包结构预览"与"失败任务删除"仅见于原型,需求正文未定义 | TP-T-008 |
| Q2 | 仅表头 0 数据行的空清单如何处理(拒绝 or 创建空任务) | TP-U-006 |
| Q3 | 2000 行上限口径是否含表头行(本文件按"数据行 2000"设计) | TP-U-006 |
| Q4 | 打包期间源数据变更(新回单/换证件照/运单关闭)按任务开始时刻快照还是实时拉取 | TP-P-013 |
| Q5 | 过期任务的列表展示形态(原型有"已过期"标签,需求状态机仅 5 态) | TP-N-004 |
| Q6 | 失败清单下载是否同样记审计日志 | TP-D-003 |
模块 TP-M 菜单与权限(5 个测试点)
TP-M-001: 菜单入口与页面骨架
- 优先级: P0
- 类型: 功能测试
- 覆盖维度: 主流程
- 来源: [需求]
- 描述: 对应 REQ-001。运八平台端"运单管理"相关模块下出现独立菜单"运单文件包",页面自上而下为上传任务入口(模板下载 + 上传按钮)与任务列表。
- 关键验证点: 菜单名称逐字为"运单文件包"且挂载位置正确;页面含"下载模板""上传清单"按钮与任务列表表格;面包屑/菜单高亮正确;上传入口在前、任务列表在后。
TP-M-002: 运营人员可见可操作
- 优先级: P0
- 类型: 权限测试
- 覆盖维度: 权限控制
- 来源: [需求]
- 描述: 对应 REQ-002。被授权的运营人员(super_admin 验证)登录后可见菜单并可完成上传、查看进度、下载文件包全链路。
- 关键验证点: 运营角色菜单可见;上传/下载操作不被拦截;页面内无其他角色越权入口;权限分配由平台管理员在角色管理完成(项目画像 §2.2)。
TP-M-003: 非授权角色不可见且 URL 直达被拦截
- 优先级: P0
- 类型: 权限测试
- 覆盖维度: 权限控制
- 来源: [需求][漏测清单]
- 描述: 对应 REQ-002。财务、客服、车队长、司机等非授权角色登录平台端不可见该菜单;未登录或低权限账号直接输入页面 URL 访问被拦截跳转登录/403。
- 关键验证点: 各非授权角色侧边栏无"运单文件包"入口;直接 URL 访问返回 403 或跳登录页(漏测清单 §3 未登录访问);页面不渲染任务列表数据。
TP-M-004: 接口层越权防御
- 优先级: P1
- 类型: 安全测试
- 覆盖维度: 权限控制
- 来源: [项目画像][风险矩阵]
- 描述: 对应 REQ-002,风险矩阵 RISK-COMPLIANCE(P2 合规)缓解。前端隐藏菜单不够,服务端接口必须独立鉴权——无菜单权限账号直接调用任务列表/上传/下载 API 应被拒绝(对应项目画像必测异常"越权操作")。
- 关键验证点: 无权限会话调用上传/列表/下载接口返回 401/403;携带他人任务编号调用下载接口被数据权限拦截;接口不因缺少前端入口而放行。
TP-M-005: 机构数据隔离
- 优先级: P2
- 类型: 安全测试
- 覆盖维度: 权限控制
- 来源: [项目画像]
- 描述: 对应 REQ-002/REQ-026。项目画像要求权限类用例必须验证机构数据隔离:多机构部署下,任务列表、上传任务、下载文件包均不得跨机构泄露运单与证件资料。
- 关键验证点: A 机构运营账号不可见 B 机构任务;上传清单含 B 机构运单号时按"运单号不存在/无权限"类行级失败处理(不导出);下载 zip 内不含他机构运单资料。
模块 TP-U 上传与校验(18 个测试点)
TP-U-001: 模板下载
- 优先级: P0
- 类型: 功能测试
- 覆盖维度: 主流程
- 来源: [需求]
- 描述: 对应 REQ-003。上传入口提供模板下载,模板为 .xlsx 且仅含三列:序号、货源单号、运单号。
- 关键验证点: 下载得到合法 .xlsx;列名与需求 4.2.1 逐字一致;用下载模板填写 1 条合法数据可直接上传成功(模板自洽);模板内含填写说明不参与数据解析。
TP-U-002: 正常上传创建任务(正向成功链路)
- 优先级: P0
- 类型: 功能测试
- 覆盖维度: 主流程
- 来源: [需求][漏测清单]
- 描述: 对应 REQ-001/REQ-004/REQ-005。合法清单上传后系统创建打包任务并开始异步处理——不能只测"校验失败",正向成功链路必须覆盖。
- 关键验证点: 上传成功提示含任务编号;任务列表置顶新增一行(待处理→处理中);源文件名/上传人/上传时间正确;总行数与清单数据行数一致;"全部任务"统计卡片计数 +1(原型)。
TP-U-003: 非 xlsx 格式整体拒绝
- 优先级: P0
- 类型: 异常测试
- 覆盖维度: 异常流程
- 来源: [需求]
- 描述: 对应 REQ-005。上传 .docx/.xls/.csv/.zip/.png 或将 zip 改后缀为 .xlsx 的文件,上传即整体拒绝。
- 关键验证点: 提示具体原因(格式不支持);不创建任务(列表无新增行);文件选择器与后端双重限制(前端过滤 + 后端再校验,防绕过前端直传 API)。
TP-U-004: 列名缺失或不符整体拒绝
- 优先级: P0
- 类型: 异常测试
- 覆盖维度: 异常流程
- 来源: [需求]
- 描述: 对应 REQ-005。表头缺列、列名错别字、多出未知列均整体拒绝;但三列名正确仅顺序不同时应允许(需求约束的是列名而非列顺序)。
- 关键验证点: 缺"序号"列拒绝、缺"货源单号"列拒绝、列名拼写错误拒绝、多余列拒绝;列顺序打乱(列名齐全)上传成功;提示信息指明具体列问题。
TP-U-005: 文件损坏整体拒绝
- 优先级: P1
- 类型: 异常测试
- 覆盖维度: 异常流程
- 来源: [需求]
- 描述: 对应 REQ-005。上传截断文件、伪造 xlsx 头的非法文件、加密带密码的 xlsx,上传即拒绝且服务端不抛 500 白屏。
- 关键验证点: 提示"文件损坏/无法读取"类明确原因;不创建任务;后台无残留半任务;加密 xlsx 给出可理解提示(非堆栈报错)。
TP-U-006: 行数边界(2000/2001/空清单)
- 优先级: P1
- 类型: 边界测试
- 覆盖维度: 边界条件
- 来源: [需求]
- 描述: 对应 REQ-004(确认决议 #9)。单文件数据行 2000 行成功、2001 行整体拒绝。
- 关键验证点: 恰好 2000 行有效清单上传成功且成功数=2000;2001 行拒绝且不创建任务;空清单(仅表头 0 数据行)的处理——⚠️ 待确认 Q2:建议拒绝并提示"清单无数据行",不得生成空 zip;⚠️ 待确认 Q3:行数口径是否含表头。
TP-U-007: 文件大小边界(10MB 临界)
- 优先级: P1
- 类型: 边界测试
- 覆盖维度: 边界条件
- 来源: [需求][项目画像]
- 描述: 对应 REQ-004(确认决议 #9)。项目画像 §8.3 提示本项目 Excel 处理有大数据量惯例,需验证行数与大小两条限制相互独立生效。
- 关键验证点: 恰好 10MB(临界值)上传成功、10MB+1B 拒绝;行数少但体积超 10MB(如嵌大图/长文本)被大小限制拒绝;行数超限但体积小于 10MB 被行数限制拒绝;两类超限提示原因可区分。
TP-U-008: 序号非正整数行级失败
- 优先级: P0
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求]
- 描述: 对应 REQ-006。序号为 0、负数、小数(1.5)、文本(abc)、空、全角数字的行计入失败清单,其余行正常处理。
- 关键验证点: 各非法序号行进入失败清单且失败原因准确;有效行不受影响;任务记"已完成·部分失败";失败数统计准确。
TP-U-009: 序号重复行级失败(全文件唯一)
- 优先级: P0
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求][最佳实践]
- 描述: 对应 REQ-006(确认决议 #13:序号全文件唯一)。同一序号出现多行时,重复行计入失败清单;重复序号跨批次出现同样生效(唯一性范围是全文件而非批次内)。
- 关键验证点: 重复行失败原因明确;保留行与剔除行的判定规则稳定(如首现行保留);序号决定"最小序号运单"判定,重复序号被剔除后不得影响证件挂载(联动 TP-P-007)。
TP-U-010: 货源单号/运单号为空行级失败
- 优先级: P0
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求]
- 描述: 对应 REQ-006。货源单号或运单号为空串、纯空格、Excel 空单元格的行计入失败清单。
- 关键验证点: 空串与纯空格均判为空;失败原因区分"货源单号为空"/"运单号为空";仅表头行不误判为数据行。
TP-U-011: 运单号在系统中不存在行级失败
- 优先级: P0
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求]
- 描述: 对应 REQ-006。运单号在系统无匹配记录的行计入失败清单(原型失败原因文案:"运单号在系统中不存在")。
- 关键验证点: 不存在运单号失败且原因准确;运单号大小写/前后空格的匹配口径一致(同一规则应用于存在性校验与实际导出);一行失败不影响同文件其他有效行。
TP-U-012: 货源单号与运单实际所属货源不一致行级失败
- 优先级: P0
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求]
- 描述: 对应 REQ-006(确认决议 #6)。运单号存在但货源单号与该运单在系统中实际所属货源不一致,该行失败;运单号+其正确货源单号配对则成功(正向配对验证)。
- 关键验证点: 错配行失败原因准确(原型文案:"文件中货源单号与该运单实际所属货源不一致");正确配对行正常打包;同一运单在不同货源下的归属以系统数据为准,不因清单填写顺序改变。
TP-U-013: 运单号文件内重复行级失败
- 优先级: P0
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求]
- 描述: 对应 REQ-006。同一运单号在文件内出现两行,重复行计入失败清单,首次出现行保留处理,防止同一运单被重复打包。
- 关键验证点: 首现行打包且仅出现一次;重复行进失败清单且原因明确(区别于序号重复的原因文案);两行序号不同的重复运单不产生两个运单包。
TP-U-014: 运单缺司机或车辆信息无法归批行级失败
- 优先级: P0
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求]
- 描述: 对应 REQ-006。运单在系统内缺少司机或车辆信息导致三要素不全、无法归批的行计入失败清单,失败原因标注"无法归批"。
- 关键验证点: 缺司机信息的运单失败且原因准确;缺车辆信息的运单失败且原因准确;该行剔除后批次划分正确重算(若其本应为某批次最小序号,联动 TP-P-007)。
TP-U-015: 单文件混合多类错误(规则组合)
- 优先级: P1
- 类型: 异常测试
- 覆盖维度: 规则组合
- 来源: [需求][最佳实践]
- 描述: 对应 REQ-006/REQ-007。同一文件同时含多类数据级错误(序号重复+运单不存在+货源不匹配+无法归批)时各行独立判定;文件级错误与数据级错误共存时文件级优先整体拒绝。
- 关键验证点: 各失败行原因分别准确、互不串行;成功行数+失败行数=总行数;任务状态"已完成·部分失败";文件级+数据级共存时整体拒绝且不进入失败清单流程。
TP-U-016: 单元格特殊字符与超长内容防御
- 优先级: P1
- 类型: 异常测试
- 覆盖维度: 数据校验
- 来源: [漏测清单]
- 描述: 对应 REQ-006。清单单元格含 Emoji、SQL 注入字符、HTML 标签、超长字符串(超过系统字段长度)时系统不崩溃、不误吞有效行;源文件名含特殊字符/超长时列表展示与 zip 命名不异常。
- 关键验证点: 单号含
'; DROP TABLE--、<script>、Emoji 的行按"运单号不存在"或对应数据级原因失败,系统无 SQL/HTML 注入副作用;超长单号行失败不截断误判;超长源文件名在任务列表截断省略并有 tooltip 完整名(原型 .te 样式)。
TP-U-017: 上传弹窗交互细项
- 优先级: P1
- 类型: 功能测试
- 覆盖维度: 主流程
- 来源: [漏测清单][需求]
- 描述: 对应 REQ-004(原型交互)。上传弹窗的按钮态与交互流:未选文件时"开始上传并创建任务"置灰;选择文件后激活并回显文件名/大小/行数;取消/关闭/遮罩点击关闭;重复打开弹窗状态重置;上传请求发出后按钮防重复点击。
- 关键验证点: 初始态按钮 disabled;选择文件后 drop 区变绿色态并显示"已选择:文件名(大小·行数)";关闭后重开弹窗不残留上一次文件;上传中快速连点"开始上传"仅产生一个任务(防抖,联动 TP-N-003);拖拽上传与点击选择均可。
TP-U-018: 同一文件重复上传生成独立任务
- 优先级: P2
- 类型: 功能测试
- 覆盖维度: 并发幂等
- 来源: [需求][漏测清单]
- 描述: 对应 REQ-023(异常场景 #7,确认决议口径:允许、不合并去重)。同一 xlsx 先后上传两次生成两个独立任务,各自打包、各自下载,互不影响。
- 关键验证点: 两个任务编号不同、总行数一致;两任务各自完成且 zip 内容一致互不覆盖;删除其中一个任务不影响另一个。
模块 TP-T 任务与列表(8 个测试点)
TP-T-001: 任务状态机正向流转与状态标签
- 优先级: P0
- 类型: 功能测试
- 覆盖维度: 状态流转
- 来源: [需求][漏测清单]
- 描述: 对应 REQ-008。待处理 → 处理中 → 已完成 全链路状态流转正确,各状态标签独立验证颜色与文案(漏测清单 §6 标签颜色映射:蓝/绿/红/橙不得混用)。
- 关键验证点: 五种状态(待处理/处理中/已完成/已完成·部分失败/失败)各自标签文案与颜色正确;状态单向推进不回跳;已完成任务完成时间有值,未完成任务完成时间为"—"。
TP-T-002: 已完成·部分失败状态
- 优先级: P0
- 类型: 功能测试
- 覆盖维度: 状态流转
- 来源: [需求]
- 描述: 对应 REQ-008/REQ-007(确认决议 #7)。存在失败行但有效行打包成功时,任务记"已完成·部分失败",且仍可下载文件包(不是失败态)。
- 关键验证点: 状态标签为橙色"已完成·部分失败";成功/失败数准确;该状态同时出现"下载文件包"与"失败清单"两个操作按钮;成功数>0 时总包内只有成功运单。
TP-T-003: 失败状态与删除重传
- 优先级: P1
- 类型: 异常测试
- 覆盖维度: 状态流转
- 来源: [需求]
- 描述: 对应 REQ-008/REQ-024(异常场景 #10)。系统级错误导致整体未生成文件包的任务置"失败",支持删除后重新上传。
- 关键验证点: 失败任务无下载按钮(总行数有值、成功 0 失败 0、完成时间"—");删除按钮仅失败任务可见(状态与按钮映射,漏测清单 §4);删除后列表移除且确认交互防误删;删除后重新上传同清单可成功。
TP-T-004: 任务列表字段、排序与分页
- 优先级: P1
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求][漏测清单]
- 描述: 对应 REQ-009。列表展示任务编号/源文件名/上传人/上传时间/任务状态/总行数/成功/失败/完成时间/操作十项字段;默认排序、分页、查询重置完整(漏测清单 §4 后台 CRUD 检查项)。
- 关键验证点: 字段与需求 4.3.2 一致无缺漏;默认按上传时间倒序(最新在上);分页总数/页码/翻页正确,翻页后数据不重复不丢失;若提供状态筛选/搜索则验证筛选结果与重置(未提供则确认设计取舍)。
TP-T-005: 异步处理与进度可见
- 优先级: P1
- 类型: 功能测试
- 覆盖维度: 主流程
- 来源: [需求]
- 描述: 对应 REQ-019。上传后无需等待,任务后台异步处理;处理中任务展示进度(成功/失败条数),离开页面再返回进度持续推进。
- 关键验证点: 上传后页面立即可操作不阻塞;处理中行显示进度条与"已处理/总数"(原型 186/200 形式);退出登录或关闭浏览器后任务仍在后台推进,重新进入进度继续;进度最终与成功/失败数一致。
TP-T-006: 失败清单下载内容
- 优先级: P1
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求]
- 描述: 对应 REQ-018。存在失败行的任务显示"失败清单"操作,下载 xlsx 含序号/货源单号/运单号/失败原因四列且与实际失败行一一对应。
- 关键验证点: 全部成功任务不显示失败清单按钮;下载的 xlsx 行数=失败数;每行四列内容与上传清单原值一致、失败原因与 TP-U-008~014 定义的文案一致;文件级被拒任务无失败清单(未创建任务)。
TP-T-007: 任务处理中系统异常的一致性
- 优先级: P1
- 类型: 异常测试
- 覆盖维度: 异常流程
- 来源: [需求][漏测清单]
- 描述: 对应 REQ-024。打包过程中服务重启/打包进程崩溃,任务置"失败"而不是永远停留在"处理中",不产生半成品 zip 供下载。
- 关键验证点: 异常后任务状态最终为"失败"(无僵尸"处理中"任务);下载接口对该任务返回不可下载;删除重传后新任务正常完成;半成品临时文件被清理不占用保留期配额。
TP-T-008: 任务详情与文件包结构预览弹窗(原型功能)
- 优先级: P3
- 类型: 功能测试
- 覆盖维度: 主流程
- 来源: [需求]
- 描述: 对应 REQ-011。原型提供"查看结构"弹窗(任务信息 + 文件包结构树预览),需求正文未定义此功能——⚠️ 待确认 Q1:若确认实现,验证弹窗展示源文件名/上传人时间/处理结果/批次划分及结构树;若确认裁剪,本点作废并从用例中移除。
- 关键验证点: 弹窗批次划分说明与实际归批一致;结构树命名与实际 zip 逐层一致;处理中任务不提供结构预览(原型仅"结构预览"按钮无下载);关闭按钮/遮罩关闭可用。
模块 TP-P 打包归批与文件包结构(14 个测试点)
TP-P-001: 三要素归批正向
- 优先级: P0
- 类型: 功能测试
- 覆盖维度: 主流程
- 来源: [需求]
- 描述: 对应 REQ-010。按系统内司机姓名+身份证号+车牌号三要素归批:需求第五章示例(序号 1、3 同为张三+皖A12345)归一批并生成一个批次包。
- 关键验证点: 归批依据是系统内数据而非清单填写内容(清单不含司机列,无法误填);zip 内批次包数量与三要素去重数一致;需求第五章示例结果逐项复现(批次①含运单包 1、3;批次②单运单 2)。
TP-P-002: 换车/换司机拆批(规则组合)
- 优先级: P0
- 类型: 功能测试
- 覆盖维度: 规则组合
- 来源: [需求]
- 描述: 对应 REQ-010。任一要素不同即拆分批次:同一司机换车牌拆两批;同一车牌换司机拆两批;同名同证司机换车不合并。
- 关键验证点: 同司机+同身份证+不同车牌 → 两个批次包;同车牌+不同司机(或同司机不同身份证)→ 两个批次包;各批次内运单包归属正确、最小序号按各自批次独立判定。
TP-P-003: 三层目录结构与命名规则
- 优先级: P0
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求]
- 描述: 对应 REQ-011。总包
运单资料_【任务编号】.zip→ 批次包【司机姓名】-【身份证号】-【车牌号】→ 运单包【序号】-【运单号】-【货源单号】,最小序号运单包追加-含司机及车辆证件后缀。 - 关键验证点: 三层命名与需求 4.4.2 示例逐字一致(含连接符"-",下划线"_");批次包身份证号为完整 18 位明文(确认决议 #3);非最小序号运单包名不含证件后缀;zip 顶层无多余目录层级。
TP-P-004: 运单包内容矩阵与单运单批次
- 优先级: P0
- 类型: 功能测试
- 覆盖维度: 主流程
- 来源: [需求]
- 描述: 对应 REQ-012(验收要点 2、3)。最小序号运单包含合同/电子回单/司机证件/车辆证件四个子目录;其余运单包仅含合同/电子回单;单运单批次的运单包仍含四个子目录。
- 关键验证点: 最小序号运单包 4 子目录齐全;其余运单包确无司机/车辆证件子目录(不是空目录也不得有文件);单运单批次运单包含 4 子目录且带证件后缀;多批次任务中每批次各自满足。
TP-P-005: 合同口径(含承运、不含委托/框架)
- 优先级: P1
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求]
- 描述: 对应 REQ-013(确认决议 #5)。合同以运单详情-合同附件为准:承运合同导出;委托合同、框架合同不导出;运单有多份合同文件时全部导出。
- 关键验证点: 合同子目录文件与运单详情页合同附件列表一致;构造含委托合同/框架合同的运单验证其不入包;多份承运合同全部出现且内容完整可打开。
TP-P-006: 电子回单与证件档案口径
- 优先级: P1
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求]
- 描述: 对应 REQ-013。电子回单=运单全部支付记录对应的银行电子回单(多笔支付多份回单);司机证件来自运单挂载司机档案(身份证人像面/国徽面、驾驶证、从业资格证等),车辆证件来自车辆档案(行驶证、道路运输证等),以最小序号运单挂载的档案为准。
- 关键验证点: 3 笔支付的运单导出 3 份回单;证件文件种类与档案一致、可打开非损坏;批次内其余运单虽挂同批司机车辆,证件只随最小序号运单出现一份(不重复导出)。
TP-P-007: 最小序号运单被剔除后证件挂载重算
- 优先级: P0
- 类型: 功能测试
- 覆盖维度: 规则组合
- 来源: [需求][最佳实践]
- 描述: 对应 REQ-015(确认决议 #8,异常场景 #6)。批次内最小序号运单因校验失败或文件缺失被剔除时,重新计算最小序号,司机/车辆证件改挂到新最小序号运单,后缀随迁。本规则为全需求最易错点。
- 关键验证点: 构造批次序号 1(校验失败)、3、5:证件挂到 3,运单包名
3-…-含司机及车辆证件,原 1 号行进失败清单;最小序号运单仅缺电子回单(文件缺失剔除)时同样重算挂载;重算后原最小序号运单包若无则不生成、若有则不得再含证件子目录;单运单批次唯一运单被剔除 → 该批次整批不出现(与失败清单一致)。
TP-P-008: 文件缺失不阻断任务
- 优先级: P0
- 类型: 异常测试
- 覆盖维度: 异常流程
- 来源: [需求]
- 描述: 对应 REQ-015(异常场景 #4)。运单无合同、无电子回单(如运单被关闭、无支付记录)不阻断任务:对应子目录不生成,原因记入失败清单。
- 关键验证点: 无支付记录运单包内无"电子回单"子目录且失败清单记"无电子回单:运单无支付记录"类原因;已关闭运单同样不阻断;任务整体状态为"已完成·部分失败"而非"失败";其余运单正常打包。
TP-P-009: 单文件下载失败自动重试 3 次
- 优先级: P1
- 类型: 异常测试
- 覆盖维度: 并发幂等
- 来源: [需求][项目画像]
- 描述: 对应 REQ-015。单个文件从 OBS 拉取失败自动重试 3 次(项目画像 §6.1 OBS 为关键依赖),仍失败记入失败清单,不阻断其余文件;重试期间不得重复落盘同一文件。
- 关键验证点: 模拟前 2 次 OBS 拉取失败第 3 次成功 → 文件正常入包且仅一份;3 次全失败 → 该文件记失败清单、任务继续;重试期间产生的临时文件/断点不导致 zip 内重复文件(历史缺陷 BUG-202607-02 重试幂等防御的同类场景)。
TP-P-010: 子目录组织与重名文件处理
- 优先级: P1
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [需求]
- 描述: 对应 REQ-014。运单包内按四个子目录组织;文件保留系统原文件名;同目录重名自动追加 (1)、(2)。
- 关键验证点: 同一运单两份同名合同 → 第二份命名为 原名(1).后缀,两份均可打开且内容对应各自原件;跨运单包同名文件互不影响(不同目录允许同名);原文件名(含中文/日期)未被篡改。
TP-P-011: 批次包命名的特殊字符与超长防御
- 优先级: P1
- 类型: 边界测试
- 覆盖维度: 边界条件
- 来源: [漏测清单]
- 描述: 对应 REQ-011。批次包名由司机姓名+身份证号+车牌号拼接,司机姓名含 Windows 非法字符(如
张三/1、A"B)、Emoji 或超长姓名导致目录名接近/超过文件系统 255 字符限制时,打包不失败、不乱码。 - 关键验证点: 非法字符被替换或转义且规则统一可解释;超长组合名不导致打包中断(截断策略需开发确认后写入用例);下载到 Windows 解压无"路径过长/非法字符"错误(联动 TP-N-007)。
TP-P-012: 大批量打包完整性与统计一致性
- 优先级: P1
- 类型: 边界测试
- 覆盖维度: 边界条件
- 来源: [历史缺陷][漏测清单]
- 描述: 对应 REQ-012/REQ-004(防御历史缺陷 BUG-202607-03 跨模块数据不一致)。2000 行上限规模打包后,zip 内运单包/批次包数量与任务统计数(成功数)严格一致,列表数字与实际包内容不得出现"两张皮"。
- 关键验证点: 成功数=N 则 zip 内恰有 N 个运单包;批次包数量=三要素去重批次数;成功/失败数之和=总行数;多批次混合成功失败的 2000 行任务全量清点无缺包无多包。
TP-P-013: 打包数据来源溯源与实时性
- 优先级: P1
- 类型: 数据校验
- 覆盖维度: 数据校验
- 来源: [历史缺陷]
- 描述: 对应 REQ-013/REQ-015(防御历史缺陷 BUG-202607-03/漏测清单"上报数据字段溯源")。打包读取的合同/回单/证件必须来源于运单详情-合同附件、支付流水、司机/车辆档案等正确数据源,而非旧缓存。
- 关键验证点: 上传清单后、打包完成前给运单新增一笔支付 → 回单是否纳入按既定口径处理——⚠️ 待确认 Q4(快照 or 实时),用例按确认结论落地;打包前司机档案更换证件照 → 包内为新档案照片;数据溯源核对至少覆盖回单(支付流水表)与合同(运单详情合同附件)两类。
TP-P-014: zip 不加密的暴露面确认
- 优先级: P2
- 类型: 安全测试
- 覆盖维度: 权限控制
- 来源: [需求][风险矩阵]
- 描述: 对应 REQ-026(确认决议 #12)与 RISK-COMPLIANCE。zip 不加密属既定决策:验证 zip 无密码可直接解压、批次包名含完整身份证号明文,据此确认补偿控制(权限+审计)必须同时生效(联动 TP-N-005),不得出现"既加密又绕过"或"不加密又无审计"的中间态。
- 关键验证点: zip 无密码可解压(决策 #12 实现);批次包目录名身份证号完整非脱敏(决策 #3 实现);zip 内容含证件照片可打开;若实现侧额外加了加密需按变更决策回归本点。
模块 TP-D 下载与幂等审计(6 个测试点)
TP-D-001: 任务完成后下载总包
- 优先级: P0
- 类型: 功能测试
- 覆盖维度: 主流程
- 来源: [需求]
- 描述: 对应 REQ-016。任务"已完成/已完成·部分失败"后列表该行显示下载按钮,下载内容为任务总包 zip(含全部批次文件包),可正常解压。
- 关键验证点: 下载文件名=
运单资料_【任务编号】.zip;zip 完整可解压无损坏;下载不改变任务状态与统计数;"已完成·部分失败"任务同样可下载(只含成功运单)。
TP-D-002: 重复下载幂等
- 优先级: P0
- 类型: 功能测试
- 覆盖维度: 并发幂等
- 来源: [需求]
- 描述: 对应 REQ-016(非功能"幂等"行)。同一任务重复点击下载不重复生成文件包,每次返回同一份完整 zip。
- 关键验证点: 连续下载 3 次,内容一致(哈希可比对)、服务端不重新打包(完成时间/存储不变化);两个运营账号先后下载同一任务均成功且不互相覆盖;下载中再次点击不产生第二个半成品文件。
TP-D-003: 下载审计日志
- 优先级: P0
- 类型: 安全测试
- 覆盖维度: 权限控制
- 来源: [需求]
- 描述: 对应 REQ-017。每次下载文件包记录审计日志:操作人、时间、任务编号(术语表"审计日志"定义),敏感个人信息导出必须可追溯。
- 关键验证点: 每次下载产生一条日志且三要素齐全;重复下载逐次留痕(不是只记首次);日志时间与实际下载时间一致;⚠️ 待确认 Q6:失败清单下载是否同样记审计(失败清单含货源/运单号,建议一并留痕)。
TP-D-004: 处理中/未完成任务不可下载(前后端双重校验)
- 优先级: P1
- 类型: 异常测试
- 覆盖维度: 状态流转
- 来源: [历史缺陷][漏测清单]
- 描述: 对应 REQ-008/REQ-016(防御历史缺陷 BUG-202607-01:仅前端控制、后端无校验)。待处理/处理中/失败/已过期任务无下载按钮,且直接调用下载 API 被后端拒绝;打包刚完成瞬间点击下载不得返回半成品。
- 关键验证点: 三类不可下载状态直接请求下载接口均返回明确错误(非 200 半成品);前端隐藏按钮 + 后端状态校验双拦截;任务完成瞬间并发请求下载 → 等待打包落库完成后返回完整包或明确"处理中"拒绝。
TP-D-005: 按批次包单独下载不做(负向范围确认)
- 优先级: P3
- 类型: 功能测试
- 覆盖维度: 主流程
- 来源: [需求]
- 描述: 对应 REQ-025(确认决议 #11:本期不做)。页面与接口均不提供按批次文件包单独下载入口,防止过度实现。
- 关键验证点: 任务行与详情弹窗无"按批次下载"类按钮;无批次包独立下载 API 暴露(探测常见路径返回 404/403);总包下载功能不受影响。
TP-D-006: 下载中断与大文件弱网
- 优先级: P1
- 类型: 异常测试
- 覆盖维度: 弱网超时
- 来源: [漏测清单]
- 描述: 对应 REQ-016。下载过程中网络中断/手动取消后,服务端文件包完好,可重新下载成功;1000 单规模大 zip 下载不因网关超时失败。
- 关键验证点: 中断后重新下载获得完整 zip(服务端不受影响);大 zip(1000 单含证件图)下载耗时在网关超时阈值内或支持断点/流式输出;浏览器取消下载不产生服务端异常日志刷屏。
模块 TP-N 非功能:性能/并发/保留期/异常恢复(8 个测试点)
TP-N-001: 性能基线——1000 单 30 分钟
- 优先级: P1
- 类型: 性能测试
- 覆盖维度: 主流程
- 来源: [需求][风险矩阵]
- 描述: 对应 REQ-020(RISK-AVAILABILITY P1 的容量侧面)。1000 单规模任务从上传到"已完成"30 分钟内完成,并记录耗时基线供回归对比。
- 关键验证点: 1000 单任务实测耗时 <30 分钟(分批混合多司机/多批次构造);进度条持续推进不长时间停滞;2000 单上限规模做观测性验证(超出需求值仅记录不设卡);任务完成质量不受规模影响(抽检包完整性)。
TP-N-002: 多任务并发排队(并发上限 1~2)
- 优先级: P1
- 类型: 并发测试
- 覆盖维度: 并发幂等
- 来源: [需求][风险矩阵]
- 描述: 对应 REQ-022(异常场景 #8,风险矩阵 RISK-AVAILABILITY P1 主场景,不得省略)。同时提交 3 个以上任务时后台排队,并发处理数不超过 1~2,全部任务最终完成不丢失。
- 关键验证点: 并发 5 任务时同时"处理中"的数量 ≤2,其余停留"待处理";排队任务按提交顺序依次转为处理中;5 个任务最终全部完成且包完整;排队期间上传入口不被锁死(可继续新建任务)。
TP-N-003: 并发提交与重复提交幂等(历史缺陷防御)
- 优先级: P1
- 类型: 并发测试
- 覆盖维度: 并发幂等
- 来源: [漏测清单][历史缺陷]
- 描述: 对应 REQ-022/REQ-023(防御历史缺陷 BUG-202607-02"重试+手动触发并发"与漏测清单"重复提交")。同一瞬间重复提交上传请求不产生重复任务;上传请求超时后重试不落双任务。
- 关键验证点: 前端防抖 + 后端幂等键双保险:同文件毫秒级并发双击仅创建 1 个任务;上传接口超时(30 秒级,漏测清单 §2)有 Loading/超时提示且重试前先查询是否已建任务;项目画像必测项"重复提交(幂等)、并发提交"全部落地。
TP-N-004: 保留期 7 天过期边界
- 优先级: P1
- 类型: 边界测试
- 覆盖维度: 状态流转
- 来源: [需求]
- 描述: 对应 REQ-021(异常场景 #9)。文件包保留 7 天,过期自动清理、不可下载,需重新上传生成。
- 关键验证点: 第 7 天内可下载、过期时刻后下载被拒并提示重新上传;过期任务在列表的展示形态——⚠️ 待确认 Q5(原型为灰色"已过期"标签,需求状态机仅 5 态,确认新增展示态 or 保持原状态+置灰按钮);过期后存储文件被清理(无静默占用);过期任务重新上传同清单可重新生成完整包。
TP-N-005: 敏感数据合规补偿控制(权限+审计组合)
- 优先级: P2
- 类型: 安全测试
- 覆盖维度: 权限控制
- 来源: [需求][风险矩阵][项目画像]
- 描述: 对应 REQ-002/REQ-026 与 RISK-COMPLIANCE。zip 不加密决策成立的前提是"权限控制+审计日志"补偿链完整:任何获取路径都必须经过授权与留痕, zip 不得通过免鉴权链接/可猜测 URL 泄露。
- 关键验证点: 下载 URL 携带鉴权(不可离线伪造/转发生效);带签名链接过期或一次性失效(如实现);审计日志可反查"谁在何时下载了哪个任务"(联动 TP-D-003);项目画像"权限隔离"必测要求落地(联动 TP-M-004/005)。
TP-N-006: OBS 依赖整体不可用的降级与恢复
- 优先级: P1
- 类型: 异常测试
- 覆盖维度: 异常流程
- 来源: [项目画像][风险矩阵]
- 描述: 对应 REQ-015/REQ-024(项目画像必测异常"依赖服务不可用")。打包期间华为云 OBS 整体不可用时:单文件级走 TP-P-009 重试;依赖持续不可用导致任务整体失败时置"失败"可删除重传,不产生僵尸任务;OBS 恢复后重传成功。
- 关键验证点: OBS 断开期间任务不无限"处理中"(超时后置失败);失败任务删除重传(OBS 已恢复)全链路成功;恢复后无需人工修数据;降级期间平台其他 OBS 业务(如装卸货图片)不受本功能拖累。
TP-N-007: 兼容性——zip 中文目录与多来源 xlsx
- 优先级: P2
- 类型: 兼容性测试
- 覆盖维度: 边界条件
- 来源: [风险矩阵][漏测清单]
- 描述: 对应 REQ-004/REQ-016(RISK-COMPATIBILITY)。zip 含中文目录名(司机姓名/车牌)在 Windows 资源管理器及常用解压工具下不乱码;WPS 等非 MS Office 生成的 xlsx 可正常解析。
- 关键验证点: 中文批次包名解压后显示正确(zip UTF-8 标志位/编码兼容,漏测清单"导入导出兼容");WPS xlsx、xls 改后缀 xlsx 分别验证接受与拒绝口径一致;Chrome/Edge/Firefox 下载文件名完整不乱码。
TP-N-008: 新增菜单对既有功能的回归隔离(跨需求防御)
- 优先级: P2
- 类型: 回归测试
- 覆盖维度: 异常流程
- 来源: [冲突修订][项目画像]
- 描述: 对应 REQ-001。关联与冲突报告确认与安徽运八需求并行(相似度 0.105)无冲突:本需求不共享其数据口径,但新增菜单与大文件打包 IO 属平台端增量,需回归验证不破坏运单管理既有功能、不与并行需求的异步任务互相干扰。
- 关键验证点: 运单管理列表/详情/导出、运单跟踪等既有菜单功能正常;打包高峰期并发的运单导出等其他下载不受磁盘/带宽拖垮(呼应并发上限 1~2 的设计动机);运单数据被本功能只读消费——打包不修改运单状态与业务数据。
REQ 追溯对照表(26/26 全覆盖)
| REQ | 测试点 |
|---|---|
| REQ-001 | TP-M-001、TP-U-002、TP-N-008 |
| REQ-002 | TP-M-002/003/004/005、TP-N-005 |
| REQ-003 | TP-U-001 |
| REQ-004 | TP-U-002/006/007/017、TP-N-007 |
| REQ-005 | TP-U-002/003/004/005 |
| REQ-006 | TP-U-008~016 |
| REQ-007 | TP-U-015、TP-T-002 |
| REQ-008 | TP-T-001/002/003、TP-D-004 |
| REQ-009 | TP-T-004 |
| REQ-010 | TP-P-001/002 |
| REQ-011 | TP-P-003/011、TP-T-008 |
| REQ-012 | TP-P-004/012 |
| REQ-013 | TP-P-005/006/013 |
| REQ-014 | TP-P-010 |
| REQ-015 | TP-P-007/008/009/013、TP-N-006 |
| REQ-016 | TP-D-001/002/004/005/006、TP-N-007 |
| REQ-017 | TP-D-003、TP-N-005 |
| REQ-018 | TP-T-006 |
| REQ-019 | TP-T-005 |
| REQ-020 | TP-N-001 |
| REQ-021 | TP-N-004 |
| REQ-022 | TP-N-002/003 |
| REQ-023 | TP-U-018、TP-N-003 |
| REQ-024 | TP-T-003/007、TP-N-006 |
| REQ-025 | TP-D-005 |
| REQ-026 | TP-P-014、TP-N-005 |