测试数据准备是一套可重复执行的流程:先按测试场景列出所需的数据对象与字段,确定来源(生产脱敏、造数、手工构造或接口生成),明确脱敏与合规要求、数据量级和有效期,再由专人按批次生成并登记,最后在测试环境加载、校验并回收。核心产物是数据需求清单、脱敏规则表、批次登记记录和校验结果;判断完成的标准是数据可复现、可追溯、可清理。
要点总览(TL;DR)
- 测试数据准备按五步推进:拆解数据需求、选择来源、脱敏合规、生成加载校验、登记复用回收,每步都要有输入、输出和完成标志。
- 数据来源按场景选择:生产数据脱敏适合贴近真实分布,造数工具适合大批量构造,手工构造适合边界值,接口生成适合满足业务校验规则。
- 角色分工以交付物为准:测试负责人出数据需求清单,开发出造数脚本,DBA/运维负责加载与回收,安全合规审批脱敏规则。
- 完成判断看四项证据:需求清单覆盖用例、脱敏规则审批通过、批次登记可追溯、校验结果全部通过且数据可复现、可清理。
- 常见返工集中在需求清单不写字段数量、脱敏事后补、脚本无版本、批次未隔离、校验只核总数不核关联,提前设卡可避免。
测试数据准备的核心步骤
测试数据准备按五个步骤推进:拆解需求、选择来源、脱敏合规、生成加载校验、登记复用回收。每一步都有明确的输入、动作、输出和完成标志,前一步的输出就是后一步的输入,这样整条链路才能被复核和重跑。
第一步:按测试场景拆解数据需求
输入是测试用例、需求说明和业务规则。动作是把每个测试场景需要的数据对象、字段、取值范围和数量逐条列出来,例如“订单表:订单号、用户ID、金额、状态、创建时间;每个状态至少3条;金额覆盖0.01元、正常值、上限值”。输出是一份数据需求清单,按场景分组,标注必填字段和边界值。完成标志是清单能覆盖本轮所有测试用例,且每条需求都能对应到具体字段和数量,没有“需要一些用户数据”这类模糊描述。
拆解时容易漏掉关联数据。一个订单场景往往同时需要用户、商品、库存、支付流水等对象,清单里应写明对象之间的关联关系,例如订单必须挂在一个已存在的用户ID下。关联关系写清楚,后续造数和校验才有依据。
第二步:确定数据来源方式
输入是数据需求清单。动作是根据数据特征选择来源,常见方式及适用条件如下:
| 来源方式 | 适用条件 | 注意事项 |
|---|---|---|
| 生产数据脱敏 | 需要贴近真实分布、字段组合复杂、造数难以模拟的场景 | 必须先完成脱敏和合规审批,控制抽取范围 |
| 造数工具生成 | 数据量大、需要批量构造、字段规则明确 | 规则要写入配置并版本化,保证可复现 |
| 手工构造 | 数据量小、边界值和异常值为主、需要精确控制 | 记录构造脚本或表格,避免只存在于个人电脑 |
| 接口生成 | 系统已有创建接口,需要数据满足业务校验规则 | 注意接口调用顺序和依赖,避免产生脏数据 |
输出是来源选择说明,写明每类数据用哪种方式、由谁执行。完成标志是清单中每条需求都有确定的来源方式,且来源方式与数据敏感程度匹配。
第三步:脱敏与合规处理
输入是涉及生产数据或真实个人信息的数据项。动作是识别敏感字段(姓名、手机号、身份证号、地址、银行卡号等),制定脱敏规则表,写明字段、脱敏方法(替换、掩码、哈希、随机化)、保留格式要求和审批人。输出是脱敏规则表和审批记录。完成标志是规则表覆盖全部敏感字段,且经过安全合规角色确认;脱敏后的数据在测试环境中不再能还原到具体个人。
脱敏规则要固定下来并纳入版本管理。同一字段每次用相同规则处理,测试结果才具备可比性;规则变更时保留变更记录,便于回溯某批次数据用的是哪版规则。
第四步:生成、加载与校验
输入是数据需求清单、来源选择和脱敏规则表。动作是按批次生成数据,记录批次号、生成时间、数据量、执行人和所用规则版本,然后加载到测试环境。加载完成后执行校验:记录数是否与需求一致、关键字段取值是否落在预期范围、关联关系是否完整、敏感字段是否已脱敏。输出是批次登记记录和校验结果。完成标志是校验项全部通过,未通过项有明确处理结论。
第五步:登记、复用与回收
输入是批次登记记录和校验结果。动作是把批次信息登记到统一位置,标注数据有效期和适用测试范围,供后续测试复用;测试结束后按约定清理数据,避免批次之间互相污染。输出是可查询的登记台账和回收记录。完成标志是每个批次都能查到来源、规则版本、校验结果和当前状态(在用、已回收、已过期)。
这五步的产物——数据需求清单、来源选择说明、脱敏规则表、批次登记记录、校验结果——构成一套可交接的证据链。团队规模较小时可以由一人兼多个角色,但产物不能省,否则数据出问题时无法定位是需求漏了、规则错了还是加载失败。
角色分工与各环节交付物
测试数据准备涉及四类角色:测试负责人、开发、DBA/运维、安全合规。分工的关键是每个环节都有明确的责任人和可交接的交付物,交接点以文档或记录为准,减少口头约定。
| 角色 | 主要职责 | 交付物 | 交接与评审节点 |
|---|---|---|---|
| 测试负责人 | 拆解数据需求,确定测试范围和优先级,组织校验 | 数据需求清单、校验结果确认 | 需求清单评审通过后移交造数环节;校验结果确认后关闭批次 |
| 开发 | 提供数据模型和字段规则,编写造数脚本或接口调用逻辑,处理关联数据 | 造数脚本、字段规则说明、接口调用记录 | 脚本提交评审;加载前确认脚本版本与需求清单一致 |
| DBA/运维 | 执行数据抽取、加载和清理,管理测试环境数据库权限 | 抽取与加载记录、环境变更记录、回收记录 | 加载前确认目标环境和批次号;回收后更新台账状态 |
| 安全合规 | 审核脱敏规则,审批生产数据使用申请,检查合规要求 | 脱敏规则表审批记录、数据使用审批单 | 脱敏规则表评审通过后才能抽取生产数据;定期抽查脱敏效果 |
交接节点集中在三处:需求清单评审、脱敏规则审批、批次加载确认。需求清单评审由测试负责人组织,开发和DBA参与,确认字段、数量和关联关系可实现;脱敏规则审批由安全合规角色完成,未通过审批不得抽取生产数据;批次加载确认由DBA和测试负责人共同完成,确认环境、批次号和校验项。三个节点都留下记录,后续出现数据问题时可以按节点回溯。
在研发管理平台中承载这些产物,可以让需求清单、批次登记和校验结果与测试用例、测试计划关联起来。ONES 测试管理支持测试用例与需求、任务关联,测试计划与迭代关联,形成测试流程闭环;未通过的用例可快速创建缺陷任务,在测试与研发团队间流转。数据准备过程中发现的需求遗漏或校验失败,可以按同样方式登记为任务并指派责任人,避免问题停留在聊天记录里。ONES 还支持为不同用户组配置不同权限,用例库和测试计划可单独配置权限,便于把数据需求清单和脱敏规则表限定在相关角色范围内查看和编辑。
示例:一个订单场景的数据准备过程
以下为演示情景,用于说明流程如何走通,不对应真实客户案例。某电商系统本轮要测试订单创建、支付、取消和退款四个功能,测试负责人据此拆解数据需求。
需求拆解与清单片段
| 数据对象 | 字段 | 取值要求 | 数量 | 关联关系 |
|---|---|---|---|---|
| 用户 | 用户ID、手机号、实名状态 | 已实名、未实名各一半 | 20 | 订单必须关联已存在用户 |
| 商品 | 商品ID、价格、库存 | 覆盖正常价、促销价、库存为0 | 15 | 订单明细关联商品 |
| 订单 | 订单号、金额、状态、创建时间 | 待支付、已支付、已取消、退款中四种状态 | 每状态10条 | 关联用户和商品 |
| 支付流水 | 流水号、支付方式、金额 | 微信、支付宝各若干 | 20 | 关联已支付订单 |
来源选择与脱敏处理
用户数据需要贴近真实分布,选择从生产库抽取后脱敏:手机号中间四位掩码,姓名替换为随机中文名,用户ID保留原值以维持关联。商品和订单数据用造数脚本生成,脚本中固定随机种子,保证每次执行结果一致。支付流水通过支付系统的测试接口生成,按“创建订单—发起支付—回调”的顺序调用。脱敏规则表由安全合规角色审批,审批通过后才执行抽取。
批次生成、加载与校验
本批次编号为 ORDER-20240612-01,执行人生成数据后由DBA加载到测试环境。校验记录样式如下:
| 校验项 | 预期 | 实际 | 结论 |
|---|---|---|---|
| 用户记录数 | 20 | 20 | 通过 |
| 订单状态覆盖 | 四种状态各10条 | 四种状态各10条 | 通过 |
| 订单与用户关联完整性 | 无孤立订单 | 0条孤立订单 | 通过 |
| 手机号脱敏 | 中间四位为掩码 | 抽查20条全部符合 | 通过 |
| 库存为0的商品可下单校验 | 下单被拦截 | 拦截成功 | 通过 |
校验全部通过后,批次信息登记到台账:批次号、生成时间、数据量、规则版本、校验结果、有效期两周、适用测试范围为本轮订单功能测试。测试结束后由DBA按批次号清理数据,台账状态更新为已回收。下一轮测试需要相同数据时,按同一脚本和规则版本重新生成,得到可复现的结果。
完成检查与常见返工点
判断测试数据准备是否完成,可以逐项核对下面的清单。每项都要求有可查的记录,口头确认不算通过。
| 检查项 | 通过标准 | 证据 |
|---|---|---|
| 需求覆盖 | 数据需求清单覆盖本轮全部测试用例,字段和数量明确 | 清单及评审记录 |
| 来源明确 | 每条需求都有确定的来源方式和执行人 | 来源选择说明 |
| 脱敏合规 | 敏感字段全部纳入规则表并审批通过 | 脱敏规则表、审批记录 |
| 批次可追溯 | 批次号、生成时间、规则版本、执行人齐全 | 批次登记记录 |
| 校验通过 | 记录数、取值、关联关系、脱敏效果均校验通过 | 校验结果记录 |
| 可复现 | 按脚本和规则版本可重新生成相同数据 | 脚本版本、随机种子配置 |
| 可清理 | 数据可按批次号定位并回收,台账状态同步更新 | 回收记录 |
常见返工原因集中在几处。一是需求清单只写对象不写字段和数量,造数时反复确认,导致批次延期;预防办法是清单评审时逐条对照测试用例。二是脱敏规则事后补,生产数据已经进入测试环境才想起审批,只能整批作废重来;预防办法是把脱敏审批设为抽取生产数据的前置条件。三是造数脚本没有版本管理和固定随机种子,同一需求两次生成的数据不一致,测试结果无法对比;预防办法是脚本入库并记录版本号。四是批次之间没有隔离,上一轮数据未清理就加载新批次,校验时记录数对不上;预防办法是加载前确认环境状态,回收后再加载下一批。五是校验只核对总数不核对关联关系,测试执行时才发现孤立数据;预防办法是把关联完整性列为固定校验项。
把这些检查项和返工点固化为模板,每轮测试数据准备按同一套清单执行,团队就能逐步把数据准备从临时协调变成稳定流程。数据需求清单、脱敏规则表、批次登记和校验结果在研发管理平台中与测试用例、测试计划关联留存,后续复盘时可以直接查到某轮测试用的是哪批数据、由谁准备、校验结论如何。
常见问题
测试数据准备和测试环境准备是一回事吗?
两者关注的对象不同。测试环境准备解决的是服务器、中间件、数据库实例、配置和网络是否就绪;测试数据准备解决的是环境里有没有符合测试场景的数据对象、字段取值和关联关系。实际执行时两者有先后依赖:环境未就绪,数据无法加载;数据未准备,环境就绪也无法开始执行用例。本文聚焦数据这一侧,环境侧的部署与运维不在讨论范围。
小团队没有专职DBA和安全合规角色,流程还能执行吗?
可以执行,但产物不能省。小团队常由一人兼多个角色,例如测试负责人同时承担造数和加载,开发协助编写脚本。此时仍要保留数据需求清单、脱敏规则表、批次登记记录和校验结果,只是审批人可能由团队负责人兼任。关键是把“谁在什么节点确认了什么”记录下来,否则数据出问题时无法判断是需求漏了、规则错了还是加载失败。涉及真实个人信息的场景,建议至少保留一次独立复核。
生产数据脱敏后就能直接用于测试吗?
脱敏是必要条件,还需要完成合规审批和范围控制。执行顺序上,先识别敏感字段并制定脱敏规则表,经安全合规角色审批通过后再抽取生产数据,抽取范围按测试需要限定,避免整库搬运。脱敏后的数据应确认无法还原到具体个人,并在测试环境中控制访问权限。规则表要版本化,同一字段每次用相同规则处理,测试结果才具备可比性;规则变更时保留记录,便于回溯某批次数据用的是哪版规则。
同一批测试数据能否在多轮测试中重复使用?
可以复用,前提是登记清楚有效期和适用测试范围。批次登记记录中写明批次号、生成时间、规则版本、数据量和有效期,后续测试按需引用同一批次,减少重复造数。需要注意两点:一是测试过程中数据会被修改或消耗,复用前要确认数据状态是否仍满足场景要求;二是上一批数据未清理就加载新批次,容易造成记录数对不上,建议加载前确认环境状态,回收后再加载下一批。需要完全一致的数据时,按同一脚本和规则版本重新生成。
数据准备过程中发现需求清单漏了字段,应该怎么处理?
按变更处理,不要在原批次上直接改数据。先更新数据需求清单并记录变更原因,评估是否影响已生成批次;若影响,标记原批次作废或部分作废,重新生成新批次并登记新批次号。这样校验结果和测试结论仍能对应到具体批次。把这类遗漏登记为任务并指派责任人,在清单评审环节增加逐条对照测试用例的检查,可以减少后续重复出现。
