【每日一题】让你设计一个测试造数平台,你怎么做(附参考答案)

题目:面试官:「你们团队做自动化和性能测试时,最痛的是造数据。现在让你从零设计一个测试造数平台/工具,你怎么做?」(面试口述)

难度:高级
题型:面试口述题

:point_right:参考答案/答题要点:

  1. 先问清需求再谈方案:谁在用(功能/接口/自动化/AI 评测)、造什么对象(用户、商品、订单、审批流实例)、量级(单条精准造 vs 百万级批量)、是否要推进到指定状态。性能压测要的是"量",自动化要的是"准和稳",两类设计目标不同。
  2. 三条实现路径与选型口径:① 调业务接口/走真实链路——数据最真、缓存/消息/ES/埋点都齐全,但慢、受校验和风控限制;② 直写 DB——快,但要自己维护缓存一致性、分库分表路由、关联外键,绝不能连生产库;③ Mock/流量回放补齐依赖不到的下游。结论:默认接口造数保一致性,批量场景用「接口造主链路 + 少量直连补状态」,性能大数据用批量导入并绕开非关键校验。
  3. 实体依赖建模(核心采分点):造一个"已完成的退款订单"需要先有账号 → 商户 → 门店 → 商品 → 库存 → 已支付订单。把实体关系建成 DAG,按拓扑顺序生成,缺什么自动补什么,支持只造某个节点或整条链。
  4. 参数与约束:字段级规则(正则、字典、边界值、合法/非法/异常三类数据都能造)、唯一性保证(手机号、身份证、订单号做池化发号,避免唯一索引冲突导致批量假失败)、可复现(同一种子同一模板,跑两次结果一致)。
  5. 生命周期治理:造出的数据统一打标(环境、来源、创建人、关联用例、过期时间)→ 支持领用/归还的数据池模式,避免并发用例抢同一账号 → 定时清理与软删回收 → 环境隔离(多套环境、影子表)→ 脱敏合规(禁止把生产真实用户数据直接搬到测试)。
  6. 平台化与集成:Web 界面 + OpenAPI + CLI 三入口;CI 里在 setup 阶段调造数、teardown 阶段回收;失败可重试且不污染;提供造数成功率与耗时看板;再往前一步可以给 AI/Agent 用(封成工具或 MCP 接口,让 AI 生成的用例能自助取数)。
  7. 怎么证明它自己是对的(很多人漏):造完必须读回校验——用业务查询接口/页面能查到且状态正确,而不是只看接口返回 200;定期抽检唯一性与约束;对造数服务本身做压测(它是瓶颈时会拖慢整套自动化)。
  8. 落地与 ROI:先扫最高频的 3~5 类数据切入,统计"人工造数工时/周 → 平台化后工时"和"因数据问题导致的用例失败数"两条曲线;配文档、责任人和需求准入,避免做成第二个没人用的平台。
  9. 加分:能主动说风险(直写库导致脏数据扩散、造数打挂下游、生产数据泄露)和边界(复杂金融账务类数据不适合纯自动造,需要基线快照 + 回放)。