3. 测试数据需求分析:如何识别测试场景、确定数据需求、制定数据获取策略

做测试这么多年,我见过太多团队在数据准备上栽跟头。有的测到一半发现数据不对,有的上线后才发现场景没覆盖到。说白了,测试数据需求分析这一步没做好,后面全是坑。

今天我就把压箱底的经验拿出来,聊聊怎么把这件事做扎实。

3.1 识别测试场景:从业务出发,别拍脑袋

识别测试场景,不是让你对着需求文档瞎猜。我个人习惯是,先搞清楚业务到底在干什么。

第一步:梳理业务流程

拿电商下单来说,别光想着「用户点击购买」。你得把整个链路走一遍:

  • 用户浏览商品 → 加入购物车 → 填写地址 → 选择支付方式 → 提交订单 → 支付成功 → 订单状态变更
  • 中间还有优惠券计算、库存扣减、物流分配这些环节

我在项目中遇到过,有个团队只测了正常下单流程,结果上线后用户用优惠券时系统直接崩溃。为什么?因为优惠券叠加逻辑根本没测到。

第二步:找边界和异常

你想想看,用户不会按你的剧本走。他们可能会:

  • 同时打开10个页面下单同一件商品
  • 在支付页面停留半小时才付款
  • 用一张已经过期的优惠券

这些场景,你都得列出来。

核心原则:测试场景 = 正常流程 + 异常流程 + 边界条件 + 并发场景

3.2 确定数据需求:场景定了,数据怎么配?

场景识别完了,接下来就是数据需求。这一步很多人会忽略,觉得「随便造点数据就行」。嗯,这里要注意,数据不对,测试结果就是废的。

数据需求分析清单:

维度 说明 示例
数据量 需要多少条数据 订单表至少1000条,包含不同状态
数据范围 数据的取值范围 金额从0.01到999999.99
数据关系 表与表之间的关联 订单必须关联有效用户和商品
数据状态 数据所处的生命周期 订单状态:待支付、已支付、已发货、已完成
数据时效 数据是否有时效性 优惠券有效期、活动开始结束时间

我曾经接手过一个项目,测试环境的数据全是开发随手造的。结果呢?订单金额有负数,用户ID重复,商品库存是负数。这种数据能测出什么来?

我的建议:每个测试场景都要对应一份数据需求文档。别嫌麻烦,后面能省你80%的排查时间。

3.3 制定数据获取策略:数据从哪来?怎么造?

数据需求明确了,接下来就是怎么拿到这些数据。我一般分三种情况处理:

策略一:生产数据脱敏

最真实的数据当然来自生产环境。但直接拿来用肯定不行,得脱敏。

-- 脱敏示例:手机号中间四位用*代替
UPDATE user SET phone = CONCAT(
  LEFT(phone, 3),
  '****',
  RIGHT(phone, 4)
);

策略二:自动化造数

对于边界测试、压力测试,生产数据往往不够用。这时候就得自己造。

# Python 造数脚本示例
import random
import datetime

def generate_orders(count=100):
    orders = []
    for i in range(count):
        order = {
            'order_id': f'ORD{datetime.now().strftime("%Y%m%d")}{i:05d}',
            'user_id': random.randint(1000, 9999),
            'amount': round(random.uniform(0.01, 9999.99), 2),
            'status': random.choice(['pending', 'paid', 'shipped', 'completed']),
            'create_time': datetime.now() - datetime.timedelta(days=random.randint(0, 30))
        }
        orders.append(order)
    return orders

策略三:手工构造特殊数据

有些场景自动化搞不定,比如:

  • 刚好卡在优惠券门槛上的订单金额
  • 跨年、跨月的结算数据
  • 特定时间点的并发数据

这些就得手工构造,或者写专门的脚本。

避坑指南:我曾经在造数时没注意数据之间的关联性,结果订单关联的商品ID在商品表里根本不存在。测试跑起来全是空指针异常。所以造数时一定要检查外键约束。

3.4 知识体系总览

下面这张图,是我梳理的测试数据需求分析整体流程。你照着这个思路走,基本不会漏掉关键环节。

测试数据需求分析流程 识别测试场景 业务流程梳理 边界异常识别 确定数据需求 数据量/范围/关系 数据状态/时效 制定获取策略 生产脱敏/自动化造数 手工构造特殊数据 输出产物:测试数据需求文档 + 造数脚本 + 数据字典 关键检查点 数据完整性:所有外键都有对应主键 数据一致性:同一业务的数据在不同表中保持一致 数据时效性:过期数据、未来数据都要覆盖 数据安全性:敏感信息必须脱敏处理

3.5 实战中的几个坑

最后分享几个我踩过的坑,你遇到了能少走弯路:

  • 别信「开发说数据没问题」——我吃过这个亏,开发说数据都准备好了,结果一查全是空值。
  • 造数脚本要版本管理——有一次改需求,造数脚本没更新,跑出来的数据全是错的,排查了两天。
  • 数据量别太少——测分页功能,你只造10条数据,能测出什么来?至少造个几百条。
  • 别忘了清理数据——测试环境的数据越积越多,最后跑个查询都要半分钟。定期清理是必须的。

一句话总结:测试数据需求分析,说白了就是「场景想全、数据配准、策略选对」。这三步走扎实了,后面的测试工作才能站得住脚。


公众号:蓝海资料掘金营,微信deep3321