我的测试学习站TEST LEARNING HUB
开始学习
首页/精华文章/8. 自动化测试数据怎么管理

8. 自动化测试数据怎么管理

自动化测试能不能稳定运行,很大程度取决于测试数据管理。很多自动化项目刚开始能跑,后面越来越不稳定,不是工具问题,而是数据问题:账号被锁、订单状态被改、优惠券被用掉、测试环境数据被污染、用例互相依赖、重复执行失败。测试数据管理是自动化框架中非常核心的一环。

面试中问“自动化测试数据怎么管理”,不要只说“用 Excel 或 YAML”。更完整的回答应该包括:测试数据来源、数据隔离、数据构造、数据清理、动态参数、接口关联、环境隔离、敏感数据处理和幂等执行。

一、为什么测试数据重要

自动化失败常见原因:

  • 测试账号密码被改;
  • Token 过期;
  • 商品库存不足;
  • 优惠券被使用;
  • 订单号重复;
  • 数据库已有脏数据;
  • 用例执行顺序变化;
  • 多线程并发数据冲突;
  • 环境数据不一致。

这些都会导致用例不稳定。

二、测试数据来源

常见来源:

  • 写在 YAML/JSON/Excel 文件中;
  • 测试前通过接口创建;
  • 通过 SQL 准备;
  • 通过测试平台造数;
  • 使用 Mock 数据;
  • 使用固定测试账号;
  • 随机生成。

不同场景选择不同方式。

三、静态数据和动态数据

静态数据

比如默认账号、环境地址、固定枚举值。

适合放配置文件。

动态数据

比如手机号、订单号、用户名、流水号。

适合执行时生成,避免重复。

示例:

手机号可以使用时间戳拼接,订单号使用接口创建后返回值。

四、数据驱动文件

接口自动化常用 YAML、JSON、Excel 管理用例数据。

字段可以包括:

  • 用例名称;
  • 请求方法;
  • URL;
  • Header;
  • 请求参数;
  • 预期结果;
  • 是否执行;
  • 依赖字段。

好处:数据和代码分离,新增用例更方便。

五、接口关联数据

很多流程依赖前一个接口返回。

例如:

登录 -> token
创建订单 -> orderId
支付 -> paymentId
查询订单 -> orderId

这些数据不能写死,要在执行中提取并保存到上下文。

六、数据隔离

用例之间尽量不要共享会被修改的数据。

建议:

  • 每条用例创建自己的数据;
  • 使用独立账号;
  • 使用唯一手机号或订单号;
  • 避免依赖执行顺序;
  • 并发执行时数据隔离;
  • 不同环境数据隔离。

数据隔离能显著提升稳定性。

七、数据清理

自动化创建的数据要清理,否则环境会越来越脏。

清理方式:

  • 调删除接口;
  • SQL 删除;
  • 标记为无效;
  • 测试后置 fixture/teardown;
  • 定时清理任务。

清理要谨慎,避免误删非测试数据。测试数据最好带明显标识。

八、敏感数据管理

密码、Token、数据库账号、密钥不要明文提交到代码仓库。

可以使用:

  • 环境变量;
  • Jenkins 凭据;
  • 配置中心;
  • 加密配置;
  • 本地私有配置文件。

报告和日志中也要对 Token、密码脱敏。

九、测试数据幂等

自动化要支持重复执行。

例如注册账号,如果手机号已存在,用例就失败。解决方式:

  • 每次生成唯一手机号;
  • 执行前清理旧数据;
  • 使用可重复初始化的数据;
  • 用例结束后恢复状态。

幂等执行是稳定自动化的重要标准。

十、常见数据管理问题

  • 测试数据写死;
  • 用例强依赖顺序;
  • 数据清理不完整;
  • 并发执行共享数据;
  • 测试账号被人工使用;
  • 生产数据误用于测试;
  • 敏感信息泄露;
  • 环境切换后数据不匹配。

十一、面试回答模板

如果面试官问“自动化测试数据怎么管理”,可以这样回答:

自动化测试数据管理我会从数据来源、数据隔离、动态生成、接口关联和数据清理几个方面考虑。静态配置比如环境地址、默认账号放配置文件;用例数据可以放 YAML、JSON 或 Excel;动态数据比如手机号、订单号执行时生成,避免重复;接口链路中的 token、orderId 会从前置接口响应中提取并保存到上下文;用例之间尽量数据隔离,避免依赖执行顺序;执行后通过接口或 SQL 清理测试数据。同时密码、Token、数据库账号等敏感信息不写死在代码里,日志和报告中也要脱敏。

十二、常见追问

追问:注册接口手机号重复怎么办?

使用时间戳或随机数生成唯一手机号,或执行前清理旧数据。

追问:自动化数据清理怎么做?

优先用业务删除接口,其次用 SQL 清理。测试数据要有标识,避免误删。

追问:用例之间能不能依赖?

尽量减少依赖。业务链路可以有步骤依赖,但独立用例应能单独运行。

十三、练习清单

  1. 用 YAML 管理接口数据;
  2. 生成唯一手机号;
  3. 提取 token;
  4. 提取 orderId;
  5. 做数据清理;
  6. 用 fixture 准备数据;
  7. 避免用例顺序依赖;
  8. 并发执行数据隔离;
  9. 敏感信息脱敏;
  10. 准备测试数据面试回答。

自动化稳定性,很大一部分靠数据管理。数据可控、可隔离、可清理,自动化才可靠。

配套刷题: