test-data-generation

Create comprehensive test data sets including valid data, boundary values, invalid data, and realistic scenarios that support thorough testing.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "test-data-generation" with this command: npx skills add vihang-hub/integrated-sdlc-framework/vihang-hub-integrated-sdlc-framework-test-data-generation

Test Data Generation

Purpose

Create comprehensive test data sets including valid data, boundary values, invalid data, and realistic scenarios that support thorough testing.

When to Use

  • Test case implementation

  • Fixture creation

  • Database seeding

  • Performance test data

Prerequisites

  • Data models understood

  • Validation rules known

  • Test cases designed

  • Privacy requirements known

Process

Step 1: Identify Data Needs

Data categories:

  • Entity data (users, applications)
  • Reference data (countries, programs)
  • State data (statuses, dates)
  • File data (documents)

Step 2: Design Data Sets

Set types:

  • Minimal valid set
  • Full valid set
  • Boundary values
  • Invalid values
  • Edge cases

Step 3: Generate Data

Generation approaches:

  • Static fixtures (JSON/SQL)
  • Factory patterns
  • Faker libraries
  • Anonymized production data

Step 4: Handle Sensitive Data

Privacy considerations:

  • No real PII in tests
  • Anonymization rules
  • Fake but realistic
  • GDPR compliant

Step 5: Document and Version

Documentation:

  • Data structure
  • Generation scripts
  • Refresh procedures
  • Data relationships

Inputs

Input Type Required Description

data_models TypeScript Yes Entity definitions

validation_rules Markdown Yes Field constraints

test_cases Markdown Yes Data requirements

Outputs

Output Type Description

fixtures/ JSON Static test data

factories/ TypeScript Data factories

seeds/ SQL Database seeds

StudyAbroad-Specific Considerations

  • Fake but realistic student data

  • Program deadlines (past, future, today)

  • Various application statuses

  • Document file fixtures

  • University/program relationships

Integration Points

  • Developer Agent: Uses fixtures

  • DevOps Agent: Seed scripts

  • Security Agent: PII handling verification

Examples

Test Data - StudyAbroad-v1

  1. USER DATA FACTORY
// factories/user.factory.ts
import { faker } from '@faker-js/faker'

export const createUser = (overrides = {}) => ({
  id: faker.string.uuid(),
  email: faker.internet.email(),
  firstName: faker.person.firstName(),
  lastName: faker.person.lastName(),
  dateOfBirth: faker.date.birthdate({ min: 18, max: 30, mode: 'age' }),
  nationality: faker.helpers.arrayElement(['US', 'GB', 'DE', 'FR', 'IN']),
  createdAt: faker.date.past(),
  ...overrides
})

export const createUsers = (count: number) => 
  Array.from({ length: count }, () => createUser())

// Specific user scenarios
export const userScenarios = {
  newUser: createUser({ createdAt: new Date() }),
  userWithApplications: createUser({ id: 'user-with-apps' }),
  euUser: createUser({ nationality: 'DE' }), // For GDPR tests
  minorUser: createUser({ 
    dateOfBirth: faker.date.birthdate({ min: 16, max: 17, mode: 'age' })
  })
}

- APPLICATION TEST DATA

// fixtures/applications.ts
export const applicationFixtures = {
  // Status variations
  draftApplication: {
    id: 'app-draft-001',
    userId: 'user-001',
    programId: 'prog-001',
    status: 'draft',
    progress: 40,
    submittedAt: null
  },
  
  submittedApplication: {
    id: 'app-submitted-001',
    userId: 'user-001',
    programId: 'prog-002',
    status: 'submitted',
    progress: 100,
    submittedAt: '2024-01-10T10:00:00Z'
  },
  
  // Deadline scenarios
  applicationNearDeadline: {
    id: 'app-urgent',
    programId: 'prog-deadline-soon',
    status: 'draft',
    // Program deadline is in 3 days
  },
  
  applicationPastDeadline: {
    id: 'app-late',
    programId: 'prog-deadline-passed',
    status: 'draft',
    // Program deadline was yesterday
  }
}

- UNIVERSITY/PROGRAM DATA

// fixtures/universities.json
{
  "universities": [
    {
      "id": "uni-001",
      "externalId": "EXT-TUM",
      "name": "Technical University of Munich",
      "country": "DE",
      "city": "Munich",
      "programCount": 3
    },
    {
      "id": "uni-002",
      "externalId": "EXT-UVA",
      "name": "University of Amsterdam",
      "country": "NL",
      "city": "Amsterdam",
      "programCount": 2
    }
  ],
  "programs": [
    {
      "id": "prog-001",
      "universityId": "uni-001",
      "name": "MSc Computer Science",
      "degreeLevel": "master",
      "language": "English",
      "deadline": "2024-03-15",
      "tuitionAmount": 1500,
      "tuitionCurrency": "EUR"
    },
    {
      "id": "prog-deadline-soon",
      "universityId": "uni-001",
      "name": "MSc Data Science",
      "deadline": "{{TODAY+3}}"
    },
    {
      "id": "prog-deadline-passed",
      "universityId": "uni-002",
      "name": "BA Economics",
      "deadline": "{{TODAY-1}}"
    }
  ]
}

- DOCUMENT TEST FILES

fixtures/documents/
├── valid/
│   ├── transcript_small.pdf (500KB)
│   ├── transcript_medium.pdf (5MB)
│   ├── transcript_max.pdf (10MB)
│   ├── photo.jpg (2MB)
│   └── certificate.png (1MB)
├── invalid/
│   ├── too_large.pdf (15MB)
│   ├── wrong_type.exe
│   ├── wrong_type.docx
│   └── corrupted.pdf
└── edge/
    ├── unicode_名前.pdf
    ├── spaces in name.pdf
    └── special(chars)[1].pdf

- DATABASE SEED SCRIPT

-- seeds/01_users.sql
INSERT INTO users (id, email, first_name, last_name, nationality, gdpr_consent)
VALUES
  ('user-001', 'john@test.com', 'John', 'Doe', 'US', true),
  ('user-002', 'jane@test.com', 'Jane', 'Smith', 'GB', true),
  ('user-eu-001', 'hans@test.de', 'Hans', 'Mueller', 'DE', true);

-- seeds/02_applications.sql
INSERT INTO applications (id, user_id, program_id, status)
VALUES
  ('app-001', 'user-001', 'prog-001', 'draft'),
  ('app-002', 'user-001', 'prog-002', 'submitted');

- EXTERNAL API MOCK DATA

// mocks/university-api.ts
export const universityApiResponses = {
  searchSuccess: {
    universities: [
      { id: 'EXT-TUM', name: 'TU Munich', country_code: 'DE' },
      { id: 'EXT-LMU', name: 'LMU Munich', country_code: 'DE' }
    ],
    pagination: { page: 1, total: 2, hasMore: false }
  },
  
  searchEmpty: {
    universities: [],
    pagination: { page: 1, total: 0, hasMore: false }
  },
  
  rateLimited: {
    error: 'rate_limited',
    message: 'Too many requests',
    retryAfter: 60
  },
  
  serverError: {
    error: 'server_error',
    message: 'Internal server error'
  }
}

## Validation
- All test scenarios have data
- Boundary values included
- No real PII used
- Relationships maintained
- Data documented

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

environment-configuration

No summary provided by upstream source.

Repository SourceNeeds Review
General

authentication-testing

No summary provided by upstream source.

Repository SourceNeeds Review
General

migration-writing

No summary provided by upstream source.

Repository SourceNeeds Review
General

error-handling-design

No summary provided by upstream source.

Repository SourceNeeds Review