generating-synthetic-test-datalisted
Install: claude install-skill Unknown-333/awesome-data-engineering-skills
# Generating Synthetic Test Data
## When to use
- Creating fixtures for pipeline/dbt unit and integration tests.
- Seeding dev/staging with realistic, privacy-safe data instead of copying prod.
- Load-testing with high volume, or crafting edge cases on purpose.
- Do NOT use for production data generation or ML training data augmentation.
## Workflow
```
- [ ] Seed the generator for deterministic, reproducible output
- [ ] Preserve referential integrity (child keys reference generated parents)
- [ ] Include edge cases: nulls, duplicates, boundaries, late/out-of-order events
- [ ] Match production distributions where behavior depends on them
- [ ] Scale volume for load tests; keep small fixtures for unit tests
```
1. **Deterministic + seeded.** Fix the random seed so tests are reproducible;
flaky data makes flaky tests. Small, fixed fixtures for unit tests.
2. **Referential integrity.** Generate parents first, then children referencing
real parent keys — otherwise join/relationship tests are meaningless.
3. **Edge cases on purpose.** Include nulls, duplicate keys, boundary values,
empty batches, and late/out-of-order timestamps so pipelines are tested against
what actually breaks them.
4. **Realistic distributions** where logic depends on them (skew, seasonality) —
uniform random data hides skew bugs.
5. **Privacy-safe.** Synthetic stand-ins let you test without copying PII
(pairs with `masking-pii-data`).
## Patterns
**Deterministic, referentially-cons