testdatatools
Practical decision guide

Reproducible test data for CI/CD: what to freeze and verify

Reproducible test data starts with a declared output contract. Decide whether a rerun must reproduce business cases, values or the exact file bytes. Then control the inputs that affect that contract and check the result independently of the generator.

Editorial review: · Sources and scope below

What exactly must be reproducible?

Scenario equality means the required cases still exist. Value equality means the same records and multiplicities exist. Byte equality also depends on order, serialization and formatting. Two JSON files can contain the same values but differ in whitespace; two identically wrong files can share a hash. Keep business assertions separate from the replay check.

Which inputs belong in the run record?

Record the generator and dependency versions, model commit, referenced files, explicit seed, reference date, locale and time zone. For mutable data, record the selected snapshot and stable read order. Record execution topology and exporter configuration if they can affect the requested result. Store this beside the test result so a later engineer can reconstruct the run.

Which controls does the generator actually expose?

Faker documents seeded results for the same calls and version. GenRocket documents seeding for supported, configured Generators; bind the seed rather than assuming every Generator uses it. SDV reset_sampling applies to sampling a fitted model. MOSTLY AI distinguishes conditioning rows from random_state. Define the required property and confirm it for the exact route. These controls do not establish identical output across changed software or operating systems.

How do you validate a pipeline before scaling it?

First generate a small fixture and assert keys, relationships and the exact business result. Run twice with frozen inputs and compare the promised property. Next, change one input deliberately and inspect the difference. Finally, interrupt a run and rerun it in an isolated target. Count duplicates, partial writes and leftover data. Measure setup and recovery work separately from generation time.

What does a replay result not prove?

A successful replay for one runtime and exporter is not evidence for every connector, worker count or operating system. It also says nothing by itself about privacy, realistic distributions or business coverage. Learned generation needs a separately defined quality evaluation. Keep untested properties explicitly unverified and extend the proof only when the required path has been exercised.

What about statistical repeatability?

For learned data, the useful contract may be stable task performance or bounded differences in distributions rather than identical rows. Define a holdout, metrics and tolerances before training, and repeat the complete experiment. Identical samples can still be poor or disclose source information. Evaluate business utility and disclosure risk separately from a sampling seed.

Executed customer-label fixture

The local verification harness ran Faker, DATAMIMIC CE and SDV on 11 October 2026 in Linux with Python 3.12. Each product supplies four customer labels. The common Python adapter assigns IDs and the six fixed payment rows. SQLite checks this assembled fixture. The products do not build its relationships.

Label generation and shared-fixture checks; no benchmark ranking
Product/versionShared fixture resultObserved replay scope
Faker 33.3.1101, 104, 106 · 60,000 cents; no orphan paymentsSame labels and canonical JSON hash in two calls and a separate process, with pinned versions.
DATAMIMIC CE 4.3.0101, 104, 106 · 60,000 cents; no orphan paymentsSame labels and canonical JSON hash in two calls and a separate process, with pinned versions.
SDV 1.38.5101, 104, 106 · 60,000 cents; no orphan paymentsreset_sampling on the same saved fitted model; replay matched in two processes. Retraining was not tested.

Faker uses seed_instance(42); CE person/v1 uses seed 42 and a fixed clock. SDV fits a GaussianCopulaSynthesizer on 256 synthetic-only label/score rows. Only its label column enters the fixture. There is no production data, privacy score or distribution-quality evaluation. Cleanup and rollback are checked by the neutral SQLite script.

MOSTLY AI SDK 6.1.5 with LOCAL dependencies was installed without an account. Its actual training attempt was blocked when the environment denied AF_UNIX socket creation (Operation not permitted). No generated output or failed business result is attributed to the product.

This does not test product-managed relationships, Enterprise editions, database connectors, subsetting, privacy, throughput or portability. The exact tested versions are not described as the latest releases.

Execution coverage and reasons for other products
  • Faker: Four customer labels generated and checked with the shared fixture. See result scope; relationships belong to the adapter.
  • Mockaroo: Hosted generation workflow; no authorized service account or private-deployment license configured. Not a locally installed generator in this run.
  • generatedata.com: Self-hosted UI requires the documented Docker stack; Docker is absent and no supported browser surface is available. No fixture execution claimed.
  • RNDGen: Hosted generation workflow; no authorized service account or private-deployment license configured. Not a locally installed generator in this run.
  • Spawner Data Generator: Abandoned desktop project; no compatible Linux fixture CLI identified in the cited project material. Its legacy desktop workflow was not executed.
  • Delphix: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • CA Test Data Manager: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • Informatica TDM: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • DATPROF Privacy: Documented desktop/database-authoring workflow needs a compatible runtime, supported database and/or licensed distribution. Linux container has no Windows desktop, licensed installer or target DB. No license acquired and no execution claimed.
  • Solix Test Data Management: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • Tonic Structural: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • Tonic Fabricate: Hosted generation workflow; no authorized service account or private-deployment license configured. Not a locally installed generator in this run.
  • Gretel / NVIDIA: Catalog entry covers vendor synthetic-data material; no exact runnable licensed product/version and fixture interface established for this environment.
  • Synthesized TDK: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • GenRocket: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • CloudTDMS: Hosted generation workflow; no authorized service account or private-deployment license configured. Not a locally installed generator in this run.
  • DATAMIMIC Enterprise Platform: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • DATAMIMIC CE: Four customer labels generated and checked with the shared fixture. See result scope; relationships belong to the adapter.
  • IRI RowGen: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • TCS MasterCraft DataPlus: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • SB Data Generator: Documented desktop/database-authoring workflow needs a compatible runtime, supported database and/or licensed distribution. Linux container has no Windows desktop, licensed installer or target DB. No license acquired and no execution claimed.
  • Redgate SQL Data Generator: Documented desktop/database-authoring workflow needs a compatible runtime, supported database and/or licensed distribution. Linux container has no Windows desktop, licensed installer or target DB. No license acquired and no execution claimed.
  • ApexSQL Generate by Quest: Documented desktop/database-authoring workflow needs a compatible runtime, supported database and/or licensed distribution. Linux container has no Windows desktop, licensed installer or target DB. No license acquired and no execution claimed.
  • Datanamic Data Generator: Documented desktop/database-authoring workflow needs a compatible runtime, supported database and/or licensed distribution. Linux container has no Windows desktop, licensed installer or target DB. No license acquired and no execution claimed.
  • DTM Data Generator: Documented desktop/database-authoring workflow needs a compatible runtime, supported database and/or licensed distribution. Linux container has no Windows desktop, licensed installer or target DB. No license acquired and no execution claimed.
  • Upscene Advanced Data Generator: Documented desktop/database-authoring workflow needs a compatible runtime, supported database and/or licensed distribution. Linux container has no Windows desktop, licensed installer or target DB. No license acquired and no execution claimed.
  • Redgate Test Data Manager: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • K2view Test Data Management: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • IBM InfoSphere Optim TDM 11.7: Commercial platform or database-processing workflow. No licensed installation and required source/target infrastructure in this environment. Documentation is not an execution result.
  • MOSTLY AI Synthetic Data SDK: SDK 6.1.5 and LOCAL extras installed without an account. Actual LOCAL initialization/train attempt fails because the environment forbids AF_UNIX socket creation (Operation not permitted). No generated output; this is not a product limitation.
  • SDV Community / Enterprise: Four customer labels generated and checked with the shared fixture. See result scope; relationships belong to the adapter.
  • Jailer: Source-derived subset/dump workflow, not a from-scratch customer-label generator. No PostgreSQL source/restore tools or provisioned JDBC test database; not executed.
  • Greenmask: Source-derived subset/dump workflow, not a from-scratch customer-label generator. No PostgreSQL source/restore tools or provisioned JDBC test database; not executed.
  • Syntho: The documented deployment needs a vendor license key, authenticated container images and Docker infrastructure. None is configured here; no Syntho execution or output is claimed.

Download scripts, dependency lock and results (.zip) · Read the run record (.json)

python run_fixture.py
python3.12 -m venv .venv
.venv/bin/python -m pip install -r requirements-poc.lock
.venv/bin/python compare_generators.py --model-dir .fixture-model --output results-local.json

Illustrative scenarios and editorial acceptance criteria; not measured product benchmarks.

References and further reading

Choose your next step