🔐 测试数据构造策略与脱敏方案

02-03 | 测试方法论数据构造脱敏数据安全

📌 一句话概括

测试数据的量级、分布和真实性直接决定性能测试结果的有效性——用百万级数据测出的TPS,上线面对百亿数据量可能完全不成立。银行业还需在数据真实性与数据安全之间取得平衡,脱敏是刚性需求。

💡 数据构造三大策略

策略一:生产数据脱敏后导入(推荐)

做法:从生产环境导出数据→经脱敏工具处理后→导入测试库。这是银行性能测试最推荐的方式,因为数据分布、关联关系和业务逻辑与生产一致。

优势:数据真实性最高,索引效率和SQL执行计划与生产接近。代价:脱敏过程复杂,数据量大时导出导入耗时长。

策略二:基于生产特征构造

做法:分析生产数据的统计特征(账号分布、金额分布、交易频率),用数据构造工具生成符合相同分布的模拟数据。

优势:灵活控制数据量、无需脱敏流程。代价:关联关系难还原,无法完全模拟真实业务场景。

策略三:纯模拟数据(不推荐)

做法:用随机函数生成完全没有业务含义的测试数据。仅适用于功能验证阶段的冒烟测试,不应用于正式性能测试。

🔐 银行数据脱敏方案

必须脱敏的数据类型

数据类型示例脱敏要求
个人身份信息姓名、身份证号、手机号、地址不可逆脱敏,无法还原为原始值
账户信息银行卡号、账号、客户号格式一致性脱敏(保持卡BIN和校验位)
交易信息交易金额、余额、密码、CVV数值偏移或替换,保持数值范围和分布
企业信息企业名称、统一社会信用代码脱敏后保持企业类型的业务特征

脱敏工具与流程

  1. 数据导出:从生产库导出原始数据(需走数据提取审批流程)
  2. 脱敏处理:使用专业脱敏工具(如数据库自带脱敏功能或第三方工具),保持数据格式和参照完整性
  3. 质量校验:验证脱敏后数据不存在可还原个人信息、业务关联关系未被破坏
  4. 导入测试库:将脱敏后数据导入性能测试环境

📊 数据量级要求

数据层级最低要求推荐要求说明
核心业务表≥生产80%≥生产100%账户表、交易流水表
历史数据表≥近3个月≥近12个月用于范围查询性能验证
关联/字典表100%同步100%同步确保关联查询能正确执行

🔍 测试实战

1. 数据量级对性能的影响验证

操作:分别用100万、1000万、1亿条数据量测试同一条SQL,对比执行计划和响应时间差异。记录数据量翻倍时索引效率的衰减曲线。

2. 脱敏后数据可用性验证

操作:脱敏完成后运行业务连通性测试——用脱敏数据执行核心业务场景(开户、转账、查询),确保所有交易能正常完成而不因数据格式问题报错。

⚠️ 常见坑点

  1. 数据量不够——测试库只有百万级数据而生产是百亿级,索引效率完全不同,TPS虚高
  2. 脱敏破坏了关联关系——卡号脱敏后与账户号的映射断裂,导致关联查询失败或结果集为空
  3. 数据分布与生产不一致——例如测试数据中所有账户余额相同,无法触发生产中的热点账户锁竞争
  4. 用简单随机构造代替真实数据——金额全是整数、账号全是顺序号,无法模拟真实业务的复杂性

📖 延伸阅读