360 Secure SkillHub
360 安全技能中心

qa-test-data-engineering

提供测试数据构造方法(手动、数据工厂、数据库脚本、接口调用)、脱敏与合规要点、数据清理策略及安全前提、命名规范与生命周期管理;脱敏详解下沉至独立参考文件按需读取,适用于批量造数与生产数据脱敏场景。

kokxi
kokxi
热度 61.24
最近更新 2026-09-29 12:31:31
分类:开发依赖:代码执行 / 读写文件 / 第三方 API应用场景:数据处理 / 自动化脚本 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add qa-test-data-engineering
Metadata
displayName
测试数据工程
name
qa-test-data-engineering
description
当需要批量构造测试数据(造 1000 条订单、准备各种状态的用户数据)、或者需要使用真实生产数据但需要脱敏时使用此技能。覆盖造数策略(API 造数/DB 直接构造/数据工厂)、脱敏方案(敏感字段识别/替换/掩码)、合规要求(GDPR/等保/个保法)和数据工厂架构设计。手工一条条造数据效率太低——测试数据工程的目标是让造数变成一键操作。 触发场景:造数、批量造数、数据构造、测试数据脱敏、测试数据合规、数据工厂、造1000条、造大量数据、环境数据不足需要批量构造时。 Use when the user asks about: bulk test data generation, production data masking and anonymization, data compliance, and data factory architecture.
license
MIT
allowed-tools
Read Grep Glob Bash
metadata
{"slug":"qa-test-data-engineering","display-name":"测试数据工程","version":"1.8.0","when-to-use":"用户说\"造数\"、\"批量造数\"、\"数据构造\"、\"测试数据脱敏\"、\"测试数据合规\"、\"数据工厂\"、\"造1000条\"、\"造大量数据\"、需要管理测试数据、环境数据不足需要批量构造时","related-skills":"{\"upstream\":[\"qa-test-env-data\",\"qa-req-deconstruction\"],\"downstream\":[\"qa-execution-observation\",\"qa-api-testing\"]}","references":"[\"references/data-masking.md\"]","input-format":"{\"required\":[{\"name\":\"测试策略\",\"type\":\"object\",\"description\":\"来自qa-test-strategy-design的测试策略\"},{\"name\":\"数据需求\",\"type\":\"string\",\"description\":\"测试数据的类型和规模需求\"}],\"optional\":[{\"name\":\"数据源信息\",\"type\":\"string\",\"description\":\"可用数据源描述\"}]}","output-format":"{\"traceability\":[\"每套造数方案带唯一ID(DATA-XXXX)\"],\"structure\":[{\"data_strategy\":\"测试数据策略\"},{\"data_generation\":\"数据生成方案\"},{\"data_mask_rules\":\"数据脱敏规则\"},{\"data_management\":\"数据管理流程\"}]}","error-recovery-guidance":"{\"on_failure\":\"造数方案遗漏合规要求时回退到需求解构补充\",\"retry_behavior\":\"补充合规要求后重新设计造数方案\"}","categories":"[\"Development\",\"Testing\",\"DevOps\"]","depth-requirement":"{\"reference_value\":\"根据数据需求调整造数深度:简单×1/中等×2/复杂×3\",\"minimum\":\"至少覆盖数据构造、脱敏、合规3个维度\"}"}

⚠️ 本技能单独使用效果有限,建议配合完整技能集(12 步工作流)使用。安装:npx skills add Kokxi/qa-test-skills

测试数据工程

核心原则

测试数据是测试的基础,好的数据管理让测试可重复、可追溯。

数据构造方法

手动构造

适用场景:
├─ 少量数据
├─ 复杂业务数据
├─ 一次性数据
└─ 调试用途

方法:
├─ 数据库直接插入
├─ 管理后台创建
├─ 接口调用创建
└─ 脚本批量创建

数据工厂

适用场景:
├─ 批量数据
├─ 标准化数据
├─ 重复性数据
└─ 自动化测试

工具:
├─ Faker(Python/JS)
├─ Mockaroo(在线)
├─ Factory Bot(Ruby)
└─ 自建工厂类

数据库脚本

-- 示例:用户数据构造
INSERT INTO users (username, email, phone, status, created_at)
VALUES 
    ('testuser001', 'test1@example.com', '13800000001', 'active', NOW()),
    ('testuser002', 'test2@example.com', '13800000002', 'active', NOW()),
    ('testuser003', 'test3@example.com', '13800000003', 'inactive', NOW());

API构造

# 示例:通过API构造订单数据
def create_test_order(user_id, product_id, quantity=1):
    response = requests.post(
        f"{BASE_URL}/orders",
        json={
            "user_id": user_id,
            "product_id": product_id,
            "quantity": quantity
        },
        headers={"Authorization": f"Bearer {token}"}
    )
    return response.json()["order_id"]

加载时机

什么时候读 读哪个
做脱敏规则与实现时 references/data-masking.md

数据脱敏的完整内容已下沉至 references/data-masking.md,避免每次触发都占用上下文。

数据清理

📌 本节与 qa-test-env-data「数据清理」内容同步,修改时请同步更新两处。

清理策略

├─ 按用例清理
│   ├─ 每个用例执行后清理
│   ├─ 优点:数据隔离好
│   └─ 缺点:效率低
│
├─ 按模块清理
│   ├─ 每个模块测试后清理
│   ├─ 优点:效率较高
│   └─ 缺点:隔离性一般
│
├─ 按批次清理
│   ├─ 每个批次测试后清理
│   ├─ 优点:效率高
│   └─ 缺点:隔离性差
│
└─ 定期清理
    ├─ 定期清理历史数据
    ├─ 优点:保持数据量可控
    └─ 缺点:可能影响测试

清理实现

⚠️ 安全警告:以下 SQL 清理示例仅适用于隔离的测试环境,切勿在生产数据库执行。 执行前必须确认:

  1. 目标数据库已确认为测试环境
  2. 先用 SELECT COUNT(*) 预览受影响行数
  3. 使用事务包裹(BEGIN; DELETE ...; ROLLBACK;)做无害验证
  4. 数据表有 is_test 等明确测试标记字段
  5. 如无把握,先向 DBA 确认清理范围
-- 示例:清理测试数据
-- 方法1:按时间清理
DELETE FROM orders WHERE created_at < DATE_SUB(NOW(), INTERVAL 7 DAY);

-- 方法2:按标记清理
DELETE FROM orders WHERE is_test = 1;

-- 方法3:按用户清理
DELETE FROM orders WHERE user_id IN (SELECT id FROM users WHERE is_test = 1);

数据管理规范

命名规范

测试用户:
├─ 格式:test_[角色]_[序号]
├─ 示例:test_user_001, test_admin_001
└─ 标记:is_test = 1

测试数据:
├─ 格式:[类型]_test_[序号]
├─ 示例:order_test_001, product_test_001
└─ 标记:is_test = 1

数据生命周期

├─ 构造:测试前准备数据
├─ 使用:测试中使用数据
├─ 验证:测试后验证数据
├─ 清理:测试后清理数据
└─ 归档:历史数据归档

输出示例

构造100条用户注册测试数据 → 手动构造:录入10条核心数据(正常用户/边界值) → 数据工厂:编写SQL脚本批量生成80条 → API构造:调用注册接口自动化生成剩余

生产数据脱敏用于测试 → 脱敏规则:手机号(中间4位***)、身份证(生日****)、姓名(张三) → 脱敏实现:Docker部署Greenplum,配置脱敏策略执行

检查清单

测试数据管理完成后检查:

  • 数据构造方法是否设计?
  • 脱敏规则是否定义?
  • 清理机制是否实现?
  • 命名规范是否统一?
  • 数据生命周期是否管理?
  • 数据可追溯性是否保证?