跳转至

CTGAN+LLM 组合拳:携程测试数据生成工程方案

Ch01.1151 CTGAN+LLM 组合拳:携程测试数据生成工程方案

📊 Level ⭐⭐ | 5.3KB | entities/ctgan-llm-test-data-generation-ctrip.md

CTGAN+LLM 组合拳:携程测试数据生成工程方案

测试人员44%的时间耗在数据构造上。携程提出CTGAN+LLM的工程化方案,让二者各司其职:CTGAN负责高丰富度独立字段生成,LLM负责关联关系字段生成。

背景

在软件测试过程中,构造测试数据是基础而关键的工作。Capgemini与Sogeti联合研究表明,测试人员通常需要耗费44%的测试时间用于测试数据的生成与管理。

常见方式:手动创建(成本高,受限于业务理解)或从线上数据库同步(隐私合规风险,无法覆盖极端用例)。合成数据(Synthetic Data)成为新解。

模型调研对比

携程测试团队评估了四种主流模型在高斯模型、TVAE、CTGAN和LLM上的表现,聚焦三个维度:

模型 字段间关系 枚举字段覆盖率 生成速度 核心局限
高斯模型 仅线性 损失约30% <1s/条 正态假设严格
TVAE 弱非线性 损失较多 <1s/条 分类变量效果差
CTGAN 隐式统计关联 100% <10s/条 无法学字段逻辑
LLM 最优(语义理解) 损失约30% 43s/条 输出不可控、低效

结论:LLM与CTGAN分别满足真实性(字段间关系)与丰富度(枚举字段覆盖率)的诉求,但各有局限。

核心方案:LLM-CTGAN协同

架构

四个模块:关联关系识别 → 数据生成 → 指标监控 → 数据修复

关联关系识别

利用LLM对样本+建表语句进行语义分析,将字段分为两类: - 独立字段 → 由CTGAN生成(最大化丰富度) - 关联字段 → 按分组由LLM生成(保持逻辑一致性)

三步流程:LLM初分组 → LLM批评修复 → 规则过滤枚举字段。

生成实现

CTGAN实现: - 训练集:线上10000条真实数据,按id倒序获取(取值覆盖率85%) - 分批训练策略解决内存崩溃问题 - 预保存模型参数 → 后续生成0.16s/条(首次1.99s/条) - 使用SDV库搭建,LLM解析DDL生成Metadata - 6张库表验证:CTGAN保持与训练集完全一致的枚举字段覆盖率

LLM实现: - 训练集:从10000条压缩至1000条(差异化抽样,平均相对熵比提升15%,枚举覆盖率+32.3%) - 模型:自部署Deepseek-R1-Friday(全参671B) - Markdown格式输入输出,三次Prompt迭代优化

Prompt工程演进

从三个版本的Prompt演化可见LLM生成的核心挑战: - V1:要求保持完全一致丰富度+均匀分布 → LLM处理非分类字段时效率极低 - V2:去掉均匀分布要求 → 仍存在非分类字段问题 - V3(最终版):按字段类型差异化约束(枚举类保持丰富度,连续类保持范围可随机) → 稳定生成

评估指标

双维度评估体系: - 字段列指标:枚举字段覆盖率、字段间关系、数据有效性 - 数据行指标:Discriminator Score(CTGAN判别器反打生成数据)+ Rule Validity(LLM规则形式化验证)

实验结果

在10000条训练集上,每次生成1000条、执行10次取平均。

直接使用LLM生成1000条数据时:生成多样性严重下降,字段取值趋向高频固定值,流程失败率>90%,生成时间>60s/条——不适合大数据量生成任务。

LLM-CTGAN协同方案在行级和列级指标上均优于CTGAN基线。

总结

LLM与CTGAN"各展所长":CTGAN最大化枚举字段丰富度,LLM学习复杂字段间逻辑规则。

未来方向:复杂表间关系识别、效率提升与成本优化(离线推理)、通用平台建设。


关联

原文存档 - 相关概念: Harness Engineering - 相关: Agent 架构