Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
proffesor-for-testing avatar

Test Data Management

  • 3 installs
  • 43 repo stars
  • Updated June 17, 2026
  • proffesor-for-testing/sentinel-api-testing

test-data-management is a Claude Code skill for testing & qa.

About

test-data-management is a Claude Code skill for testing & qa. It helps you ship faster with AI-assisted development.

  • test-data-management
  • Testing & QA
  • AI-coding skill

Test Data Management by the numbers

  • 3 all-time installs (skills.sh)
  • Ranked #1,648 of 2,153 Testing & QA skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
npx skills add https://github.com/proffesor-for-testing/sentinel-api-testing --skill test-data-management

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs3
repo stars43
Last updatedJune 17, 2026
Repositoryproffesor-for-testing/sentinel-api-testing

How do I helps with testing & qa tasks.?

Helps with testing & qa tasks.

Who is it for?

Best when you're working on testing & qa and need structured help with test data management.

Skip if: Teams with no testing & qa needs, or anyone wanting a generic chat assistant without this specific workflow.

When should I use this skill?

When you need to helps with testing & qa tasks., or when test-data-management is a claude code skill for testing & qa.

What you get

Structured output aligned to test-data-management: test-data-management, Testing & QA.

Files

SKILL.mdMarkdownGitHub ↗

Test Data Management

<default_to_action> When creating or managing test data: 1. NEVER use production PII directly 2. GENERATE synthetic data with faker libraries 3. ANONYMIZE production data if used (mask, hash) 4. ISOLATE test data (transactions, per-test cleanup) 5. SCALE with batch generation (10k+ records/sec)

Quick Data Strategy:

  • Unit tests: Minimal data (just enough)
  • Integration: Realistic data (full complexity)
  • Performance: Volume data (10k+ records)

Critical Success Factors:

  • 40% of test failures from inadequate data
  • GDPR fines up to €20M for PII violations
  • Never store production PII in test environments

</default_to_action>

Quick Reference Card

When to Use

  • Creating test datasets
  • Handling sensitive data
  • Performance testing with volume
  • GDPR/CCPA compliance

Data Strategies

TypeWhenSize
MinimalUnit tests1-10 records
RealisticIntegration100-1000 records
VolumePerformance10k+ records
Edge casesBoundary testingTargeted

Privacy Techniques

TechniqueUse Case
SyntheticGenerate fake data (preferred)
Maskingj***@example.com
HashingIrreversible pseudonymization
TokenizationReversible with key

---

Synthetic Data Generation

import { faker } from '@faker-js/faker';

// Seed for reproducibility
faker.seed(123);

function generateUser() {
  return {
    id: faker.string.uuid(),
    email: faker.internet.email(),
    firstName: faker.person.firstName(),
    lastName: faker.person.lastName(),
    phone: faker.phone.number(),
    address: {
      street: faker.location.streetAddress(),
      city: faker.location.city(),
      zip: faker.location.zipCode()
    },
    createdAt: faker.date.past()
  };
}

// Generate 1000 users
const users = Array.from({ length: 1000 }, generateUser);

---

Test Data Builder Pattern

class UserBuilder {
  private user: Partial<User> = {};

  asAdmin() {
    this.user.role = 'admin';
    this.user.permissions = ['read', 'write', 'delete'];
    return this;
  }

  asCustomer() {
    this.user.role = 'customer';
    this.user.permissions = ['read'];
    return this;
  }

  withEmail(email: string) {
    this.user.email = email;
    return this;
  }

  build(): User {
    return {
      id: this.user.id ?? faker.string.uuid(),
      email: this.user.email ?? faker.internet.email(),
      role: this.user.role ?? 'customer',
      ...this.user
    } as User;
  }
}

// Usage
const admin = new UserBuilder().asAdmin().withEmail('admin@test.com').build();
const customer = new UserBuilder().asCustomer().build();

---

Data Anonymization

// Masking
function maskEmail(email) {
  const [user, domain] = email.split('@');
  return `${user[0]}***@${domain}`;
}
// john@example.com → j***@example.com

function maskCreditCard(cc) {
  return `****-****-****-${cc.slice(-4)}`;
}
// 4242424242424242 → ****-****-****-4242

// Anonymize production data
const anonymizedUsers = prodUsers.map(user => ({
  id: user.id, // Keep ID for relationships
  email: `user-${user.id}@example.com`, // Fake email
  firstName: faker.person.firstName(), // Generated
  phone: null, // Remove PII
  createdAt: user.createdAt // Keep non-PII
}));

---

Database Transaction Isolation

// Best practice: use transactions for cleanup
beforeEach(async () => {
  await db.beginTransaction();
});

afterEach(async () => {
  await db.rollbackTransaction(); // Auto cleanup!
});

test('user registration', async () => {
  const user = await userService.register({
    email: 'test@example.com'
  });
  expect(user.id).toBeDefined();
  // Automatic rollback after test - no cleanup needed
});

---

Volume Data Generation

// Generate 10,000 users efficiently
async function generateLargeDataset(count = 10000) {
  const batchSize = 1000;
  const batches = Math.ceil(count / batchSize);

  for (let i = 0; i < batches; i++) {
    const users = Array.from({ length: batchSize }, (_, index) => ({
      id: i * batchSize + index,
      email: `user${i * batchSize + index}@example.com`,
      firstName: faker.person.firstName()
    }));

    await db.users.insertMany(users); // Batch insert
    console.log(`Batch ${i + 1}/${batches}`);
  }
}

---

Agent-Driven Data Generation

// High-speed generation with constraints
await Task("Generate Test Data", {
  schema: 'ecommerce',
  count: { users: 10000, products: 500, orders: 5000 },
  preserveReferentialIntegrity: true,
  constraints: {
    age: { min: 18, max: 90 },
    roles: ['customer', 'admin']
  }
}, "qe-test-data-architect");

// GDPR-compliant anonymization
await Task("Anonymize Production Data", {
  source: 'production-snapshot',
  piiFields: ['email', 'phone', 'ssn'],
  method: 'pseudonymization',
  retainStructure: true
}, "qe-test-data-architect");

---

Agent Coordination Hints

Memory Namespace

aqe/test-data-management/
├── schemas/*            - Data schemas
├── generators/*         - Generator configs
├── anonymization/*      - PII handling rules
└── fixtures/*           - Reusable fixtures

Fleet Coordination

const dataFleet = await FleetManager.coordinate({
  strategy: 'test-data-generation',
  agents: [
    'qe-test-data-architect',  // Generate data
    'qe-test-executor',        // Execute with data
    'qe-security-scanner'      // Validate no PII exposure
  ],
  topology: 'sequential'
});

---

Related Skills

  • database-testing - Schema and integrity testing
  • compliance-testing - GDPR/CCPA compliance
  • performance-testing - Volume data for perf tests

---

Remember

Test data is infrastructure, not an afterthought. 40% of test failures are caused by inadequate test data. Poor data = poor tests.

Never use production PII directly. GDPR fines up to €20M or 4% of revenue. Always use synthetic data or properly anonymized production snapshots.

With Agents: qe-test-data-architect generates 10k+ records/sec with realistic patterns, relationships, and constraints. Agents ensure GDPR/CCPA compliance automatically and eliminate test data bottlenecks.

Related skills

FAQ

What does test-data-management do?

test-data-management is a Claude Code skill for testing & qa.

When should I use test-data-management?

When you need to helps with testing & qa tasks., or when test-data-management is a claude code skill for testing & qa.

What are the main capabilities?

test-data-management; Testing & QA; AI-coding skill.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.