What Is Test Data Management? Process, Techniques, and Tools

what is test data management

What test data management is, the types of test data, the main techniques, the TDM process and strategy, compliance, a worked checkout example, and how to choose a TDM tool.

Key takeaways
The 30-second version of this article
Test data management defines, creates, masks, provisions, and maintains the data tests need, so every test gets realistic data without exposing real customers.
Choose the technique by test type: hand-crafted fixtures for unit tests, synthetic data for edge cases, and masked subsets or virtual clones for regression and UAT.
Shared, stale, or colliding data is a common cause of flaky automated tests. Unique data per run, reservation, and a reset after each run address it.
TDM platforms produce safe data, and test automation tools such as Katalon Studio use it in data-driven tests, so plan how the two connect.

Test data management decides which data each test gets, where it comes from, and how it stays safe and current. This guide covers what test data management is, the types of test data, the main techniques, the process step by step, how to build a strategy, compliance, a worked example, and how to choose a test data management tool.

What is test data management?

Test data management (TDM) is the practice of defining, creating, masking, provisioning, and maintaining the data that tests need in non-production environments. Its goal is the right data for each test, in the right format, at the right time, without exposing real customer data.

What is Test Data Management? Test data management activities

In practice, TDM covers finding sensitive data, masking it, cutting databases down to useful subsets, generating synthetic data, cloning or virtualizing databases, getting data to test environments, and refreshing it after tests change it. It is one part of test management: the test plan says which test data a release needs, and TDM is how that data gets made and delivered.

What is test data?

Test data is the set of inputs, records, and system states a test needs to run and check a result. That can be a username and password, a customer with 3 past orders, an expired card, or a product that is out of stock.

For example, test data for a login page usually has 2 columns, Username and Password. A test script opens the login page, fills in each pair, and checks the response:

Username

Password

user_123

Pass123!

testuser@email

Secret@321

admin_user

AdminPass#

jane_doe

JaneDoePass

Good test data meets 4 criteria:

  1. Relevant: it matches the scenario under test. A wrong-password test that uses a valid password gives a false result.
  2. Available: the people and pipelines that need it can get it when they need it, with access limited to the right roles.
  3. Current: it reflects the application as it is now. A schema change or a new required field can make old data useless.
  4. Compliant: it doesn't expose personal, health, or payment data that privacy rules protect.

Types of test data

Test data can be grouped by where it comes from. Most teams use several of these at once.

Type

What it is

Example

Watch out for

Production copy

A full copy of the live database

Last night's backup restored to staging

Personal data, size, and cost; rarely the right choice without masking

Masked data

Production data with sensitive fields replaced or hidden

Customer names and emails swapped for realistic fake ones

Masking has to stay consistent across tables and systems

Subset

A small slice of production that keeps related records together

1,000 customers with all their orders and addresses

Missing foreign keys break joins and tests

Synthetic data

Artificial data generated from rules or models

500 customers with valid but fictional addresses

Only as realistic as the rules behind it

Hand-crafted data

Records a tester writes by hand for a specific case

A customer whose name has an apostrophe and accented letters

Hard to scale and easy to forget to update

Generated on the fly

Data a test creates at runtime and cleans up after

A test signs up a new user with a unique email for each run

Needs reliable setup and teardown

Within each type, tests also need different input categories:

Test data types
  • Positive data: valid inputs within the expected range, such as a correct username and password.
  • Negative data: invalid or unexpected inputs, such as a wrong password, a malformed email, or an SQL injection string.
  • Boundary data: values at the edges of allowed ranges, such as a password at the minimum and maximum length.
  • Null or empty data: missing values, such as an empty username field.
  • Volume data: large data sets for performance and load tests.

Why test data management matters

Diversity

Test coverage depends on having data for every scenario you want to test. A simple registration page already needs data for many cases:

  1. Valid details
  2. Empty username
  3. Empty password
  4. Username already taken
  5. SQL injection attempt
  6. Special characters
  7. Username that is too long
  8. Password that is too long

TDM makes sure that data exists, is labeled, and can be reused, instead of being typed in again for each test cycle.

Data privacy

Without TDM, testers can end up using personally identifiable information (PII) in test environments, which usually have weaker access controls than production. Anonymization, masking, and synthetic data replace real values with realistic fictional ones, so tests behave the same without exposing real people.

Data consistency

Test data has to follow the same formats and rules across systems, and the relationships between records have to hold as the system grows. If a customer ID changes in one table but not in another, tests fail for reasons that have nothing to do with the code. For checks on the database itself, see our guide to database testing.

Why not just copy production?

Copying production looks fast, but it brings privacy and regulatory exposure, large and costly environments, data that changes under your tests, and few of the edge cases you need. TDM keeps production's realism and removes most of those problems. For the common obstacles teams hit along the way, see test data management challenges.

Test data management techniques

Technique

What it does

Best for

Watch-outs

Data discovery and classification

Finds and labels personal, health, and payment data in source systems

Any copy of production data

Needs re-running when schemas change

Data masking

Replaces or hides sensitive values while keeping format

Realistic data for regression and UAT

Must be consistent across systems so joins still work

Data subsetting

Extracts a small slice that keeps related records

Smaller, faster environments

Needs referential integrity

Synthetic data generation

Creates artificial data from rules or models

Edge cases, new features, sharing with vendors

Realism depends on the rules

Virtualization and cloning

Gives each environment a lightweight copy you can reset

Fast refresh and rollback, parallel environments

Needs tooling and storage planning

Refresh and reservation

Resets data to a known state and stops tests from sharing records

Automation and parallel runs

Needs an owner and a schedule

Data discovery and classification

Discovery scans source databases and files to find where personal, health, and payment data lives, then tags each column. Masking and subsetting rules are built from that map, so nothing sensitive is copied by accident.

Data masking

Data masking replaces or hides sensitive values in non-production data while keeping the format, so applications and tests still work. Masking is not the same as encryption: masked data is usually not meant to be reversed, while encrypted data can be decrypted by anyone with the key.

Example: in a customer table, "Maria Lopez, maria.lopez@example.com" becomes "Anna Berg, anna.berg@test.example", and the same customer gets the same fake name in the orders and support databases.

Protection technique

What it does

Example

When to use it

Substitution

Replaces real values with realistic fictional ones

Real names replaced with generated names

Names, addresses, and emails in UI and regression tests

Shuffling

Reorders values within a column to break the link to a person

Salaries shuffled between employee records

Analytics or reports that need realistic distributions

Encryption

Turns values into ciphertext that only key holders can read

Bank account numbers encrypted in an export file

Data that authorized users must be able to restore

Tokenization

Replaces values with tokens that map back in a secure vault

Social Security numbers replaced with tokens such as Token123

Payment and identity data

Character masking

Hides part of a value

All but the last 4 digits of an SSN hidden (XXX-XX-1234)

Values that people need to recognize but not read in full

Dynamic data masking

Masks values at query time based on the user's role

Salary hidden in results for users without finance access

Production or production-support access, not test copies: the real values stay stored, so test environments still hold sensitive data

Randomization

Changes values within a set range

Salaries adjusted by a random amount within 10%

Numeric fields in reports and analytics tests that need realistic ranges

Encryption and tokenization are reversible, so they protect data rather than mask it; use them when authorized users must restore the original value.

Static masking changes a copy of the data once, before it reaches the test environment. Dynamic masking leaves the stored data as it is and hides values when someone reads them. For test environments, prefer static masking, because dynamic masking leaves the real data in place.

Data subsetting

Data subsetting creates a smaller, representative slice of a production database. Good subsetting follows foreign keys, so each customer arrives with their orders, addresses, and payments.

Example: instead of copying 2 million customers, you extract 1,000 customers from 5 countries with all their related records, then mask them.

Benefits:

  • Smaller data volumes, so environments are cheaper and faster to refresh.
  • Relationships between records stay intact.
  • You choose what to include, such as one region or a set of account types.

Synthetic data generation

Synthetic data generation creates artificial data that follows the structure, rules, and patterns of real data without containing real records. There are 3 common approaches:

  • Rule-based: you define formats and rules, such as "postal code matches the country" or "order date after sign-up date".
  • Statistical: values follow distributions measured on real data, such as order sizes or ages.
  • AI-based: a model learns patterns from a source data set and generates new records. Run it on data that is already masked or approved for that use.

Example: to test a new loyalty tier, you generate 200 customers with spend just below, at, and just above the tier threshold, because production has none yet.

Synthetic data is a good fit when there is no production data yet, when you need rare edge cases, or when data has to leave the company. Its limit is realism: it only covers the cases your rules or models describe. For a walkthrough, see synthetic test data generation.

Data virtualization and cloning

Data virtualization gives each test environment a lightweight virtual copy of a database instead of a full physical copy. You can bookmark a known state, reset to it after a run, and give several teams their own copy at the same time. A gold copy is the known-good, versioned baseline that environments are refreshed or reset from.

Example: the regression suite runs against a virtual clone of the masked gold copy, and the clone is reset to the bookmark before the next run.

Data refresh and reservation

Refresh brings test data back to a known state on a schedule or after a run. Reservation lets a tester or a test job book specific records, so 2 tests don't change the same account at the same time.

Example: each nightly regression run reserves 20 customer accounts, uses them, and releases them; the environment is refreshed from the gold copy every Sunday.

Which technique fits which test

Test type

Usual data source

Why

Unit tests

Hand-crafted fixtures

Small, fast, and fully under the developer's control

API tests

Synthetic data or data generated on the fly

Easy to create in any volume and reset per run

UI regression

Masked subset or virtual clone

Realistic data with stable relationships

Performance tests

Synthetic or randomized volume data

Production-like volume without real people

User acceptance testing

Masked subset

Business users recognize realistic records

Demos and training

Synthetic data

No real customer records leave the company

Most teams combine techniques: a masked subset as the gold copy, plus synthetic rows for edge cases, plus data that tests create and clean up themselves. Keep each test environment paired with the data set it should hold.

The test data management process

  1. Define data needs. For each test case, list the accounts, states, volumes, and edge cases it needs. Start from your test cases and requirements, not from the database.
  2. Discover and classify sensitive data. Find where personal, health, and payment data lives in each source system before you copy anything.
  3. Choose a source for each need. Decide whether each need is met by a subset, masked data, synthetic data, a virtual clone, hand-crafted records, or data the test creates itself.
  4. Prepare and provision. Mask, subset, or generate the data, then deliver it to the test environment through a self-service request or a pipeline step.
  5. Use and isolate. Give each test or run its own records, or reserve them, so tests don't collide.
  6. Refresh, reset, or retire. Reset environments to the gold copy after runs, refresh on a schedule, and delete data sets that are no longer used.
  7. Govern and audit. Control who can request which data, log access, and set retention rules for test copies.

How to build a test data management strategy

A TDM strategy, sometimes called a test data management framework, is the set of rules your team follows for test data across releases. It belongs next to your test strategy, and each release's test plan applies it.

  • Name an owner. One person or team owns test data sources, masking rules, and refresh schedules.
  • Set a request model. Agree what a data request contains: environment, data entity, volume, masking level, and the date it's needed.
  • Map data sets to environments. Decide which environments get masked subsets, which get synthetic data, and which get virtual clones.
  • Set a refresh cadence. For example, nightly for CI environments and once per release for UAT.
  • Version data definitions. Keep fixtures, generation rules, and masking rules in version control with the test code.
  • Keep secrets out of data files. Store passwords, API keys, and tokens in a secrets store or protected variables, not in spreadsheets.
  • Write down data assumptions. Each test case should say which data it expects and whether it changes that data.

Track a few metrics to see whether the strategy works:

  • Time from data request to data ready
  • Share of test failures caused by data rather than code
  • Edge cases covered by available data
  • How often each environment is refreshed

Test data management best practices

  • Start from the tests, not the database. List what each test needs before you copy anything.
  • Mask before data leaves production. Treat unmasked copies in test environments as a privacy incident waiting to happen.
  • Keep masking consistent. The same person should get the same fake values in every system, so joins and end-to-end tests still work.
  • Prefer small data sets. A referentially intact subset is faster to load, refresh, and debug than a full copy.
  • Give tests their own data. Create data at runtime or reserve it, and reset after each run.
  • Keep a gold copy. Version a known-good baseline and reset environments to it.
  • Review data with test changes. When a feature or schema changes, update the data in the same change.

Test data management in test automation and CI/CD

Automated tests run often, in parallel, and without anyone watching, so test data problems show up there first.

  • Feed data into tests. Data-driven testing separates test logic from test data, so one test runs against many rows from a file or a database query.
  • Use variables per environment. Keep URLs and account names in environment profiles, and passwords in protected variables or a secrets store, so the same suite runs on dev, QA, and staging.
  • Provision per pipeline run. Create or reserve the data at the start of the run and clean it up or reset it at the end.
  • Generate data at runtime when you can. Tests that create their own unique data are less likely to break when shared data changes. This video shows how to generate test data at runtime.

Data-related flaky tests and how to fix them

Cause

What you see

Fix

Shared accounts

A test passes alone and fails in the suite

Unique data per run, or reservation

Stale data

Tests fail after a refresh or a schema change

Refresh on a schedule, or create data at runtime

Order dependence

A test only passes after another one runs

Independent setup and teardown for each test

Parallel collisions

Random failures when jobs run at the same time

Separate data per worker, or reservation

Test data compliance: GDPR, HIPAA, CCPA, and PCI DSS

This section is practical guidance, not legal advice. Check your obligations with your privacy or legal team.

Regulation

What it covers

What it means for test data

GDPR

Personal data of people in the EU and EEA

Pseudonymized data is still personal data; anonymized data is not. Mask or synthesize before data leaves production, and limit who can access test copies

HIPAA

Protected health information held by US covered entities and their business associates

De-identify health data before it reaches test environments, or treat those environments with production-level safeguards

CCPA and CPRA

Personal information of California residents

De-identified data falls outside most obligations if you keep it de-identified; raw copies carry the same duties as production

PCI DSS

Cardholder data such as card numbers

Keep live card numbers out of test environments; use your payment provider's test cards and sandbox tokens

4 practices cover most of it:

  • Minimize. Copy only the fields a test needs.
  • Anonymize or pseudonymize on purpose. Know which one you're doing, because the rules differ.
  • Control access. Apply role-based access to non-production environments that hold real or masked data.
  • Set retention. Delete test copies on a schedule and log when you do.

Example: test data for an online store's checkout release

This example follows the same fictional online store as our test plan example. Release 4.2 replaces the 3-step checkout with a single-page checkout and lets signed-in shoppers save a card. All names and numbers are illustrative.

Test need

Data source

How it's prepared

Saved cards: add, choose, and remove a card

Payment provider's published test cards and sandbox tokens

No real card numbers; the store keeps only the token and the last 4 digits, as in production

Returning customers with order history

Masked subset of production customers

500 customers with their addresses and orders; names, emails, and phone numbers substituted consistently across the orders and email systems

Guest checkout

Data generated on the fly

Each automated run creates a unique guest email in the test inbox and deletes the order afterward

Promo codes and gift cards

Hand-crafted records

An expired code, a code at its usage limit, and a gift card with a balance lower than the order total

Edge cases

Synthetic data

Long names, accented and right-to-left characters, addresses in every supported country, and carts with 1 and 50 items

Regression runs in CI

Virtual clone of the masked gold copy

Reset to the bookmark before every run; parallel jobs reserve separate customer accounts

The test plan's entry criteria include "test data and payment sandbox accounts ready", so this data set is part of the go or no-go for starting testing. The test report for the same release then shows whether any failures traced back to data.

Test data management tools and software

Test data management tools (also sold as TDM software or platforms) find sensitive data, then mask, subset, generate, or virtualize it and deliver it to test environments. Options include Broadcom Test Data Manager, Perforce Delphix, K2view, IBM Optim, and Tonic Structural, plus open-source Jailer and Faker for small teams.

How to choose a test data management tool

  • Technique coverage: which of masking, subsetting, synthetic generation, and virtualization you need.
  • Data sources: the databases, files, mainframe, and SaaS systems the tool connects to.
  • Deployment: on-premises, cloud, or inside your own environment.
  • Referential integrity: whether masking and subsetting keep relationships across systems.
  • Self-service and CI/CD: whether testers and pipelines can request data without a ticket.
  • Compliance reporting: whether it can show where sensitive data is and how it was masked.

The table below is based on each vendor's own product page, as of November 2026. "Not stated" means the vendor's page doesn't say.

Tool

Type

Main techniques

Deployment (vendor stated)

Public pricing

Broadcom Test Data Manager

Enterprise TDM

Discovery, masking, synthetic, virtual clones, reservation

Not stated

On request

Curiosity Software Enterprise Test Data

TDM with model-based generation

Discovery, masking, synthetic, self-service provisioning

Not stated

Not published

DATPROF

TDM platform

Masking, synthetic, subsetting, self-service portal

Not stated

Not published

Enov8 Test Data Manager

Masking, compliance, and data booking

Discovery, masking, booking and refresh, subset and synthetic options

Not stated

Not published

GenRocket

Synthetic data generation

Rule- and scenario-based synthetic data, provisioning

Not stated

Not published

IBM Optim Test Data Management

Enterprise TDM

Subsetting, masking, provisioning

Not stated

Not published

K2view Test Data Management

Entity-based TDM

Subsetting, masking, synthetic, self-service provisioning

On-premises, cloud, and hybrid

Not published

Mage Data

Data security platform with a TDM module

Discovery, static and dynamic masking, subsetting, virtualization

Not stated

Not published

Perforce Delphix

Virtualization, masking, and synthetic data

Virtualization, discovery and masking, synthetic

On-premises, cloud, hybrid, and multicloud

Not published

Synthesized

TDM for SAP, databases, and documents

Masking, subsetting, generation

Inside the customer's environment

Not published

Tonic Structural

Masking, synthesis, and subsetting

Discovery, masking, synthesis, subsetting

Self-hosted or Tonic Cloud

Not published

Jailer

Open-source subsetting

Subsetting, data browsing

Desktop tool, any JDBC database

Free, open source

Faker

Open-source Python library

Synthetic data

Python library

Free, MIT License

Broadcom Test Data Manager

Broadcom Test Data Manager is an enterprise TDM product. Broadcom lists PII discovery and format-preserving masking, synthetic data that keeps relationships, a Database Virtualization Engine (DAVE) for virtual clones you can snapshot and roll back, and a self-service portal for finding, reserving, and provisioning data. It also lists mainframe masking for DB2, IMS, and VSAM on z/OS, and privacy audit reports for GDPR, HIPAA, and CCPA. Pricing is on request.

Curiosity Software Enterprise Test Data

Curiosity Software's Enterprise Test Data covers data discovery, masking before provisioning, synthetic data designed from visual models, and self-service provisioning forms.

DATPROF

DATPROF offers masking, synthetic test data generation, subsetting, and test data automation in CI/CD pipelines, with a self-service portal for requesting and refreshing data.

Enov8 Test Data Manager

Enov8 Test Data Manager finds personal data, including in free-text columns, and applies non-reversible masking that stays consistent across systems. It follows a profile, mask, and validate workflow, and lets teams book and refresh test data.

GenRocket

GenRocket focuses on synthetic data: teams define the structure, rules, and scenarios they need and generate data on demand in any volume or format, without copying production. It also offers subsetting in which PII is replaced with synthetic values.

IBM Optim Test Data Management

IBM Optim Test Data Management provisions right-sized, production-like data sets as complete business objects with referential integrity. IBM lists a central policy-driven masking engine, scenario-specific data sets, reusable self-service workflows, and CI/CD integration.

K2view Test Data Management

K2view organizes test data into business entities, such as a customer, account, or order, and provisions them with referential integrity. It covers subsetting in business terms, masking that stays consistent across systems, synthetic generation, and self-service provisioning.

Mage Data

Mage Data is a data security platform that covers sensitive data discovery and dynamic masking. Its TDM module combines static masking, subsetting, and database virtualization for CI/CD.

Perforce Delphix

Perforce Delphix delivers virtualized, masked, or synthetic test data to developers, testers, and pipelines. Delphix Continuous Compliance discovers and masks sensitive data, and Delphix Synthetic Data generates test data.

Synthesized

Synthesized builds linked, privacy-safe test data from SAP systems, databases, and documents, and runs inside the customer's environment. It lists policy-based masking mapped to GDPR, DORA, and HIPAA, plus subsetting, generation, and refresh from CI/CD.

Tonic Structural

Tonic Structural provisions de-identified, production-like test data. It lists PII and PHI discovery with custom rules, masking and synthesis that keep relationships, subsetting with referential integrity, and connectors for relational and NoSQL databases, data warehouses, and files. It runs self-hosted or in Tonic Cloud.

Open-source options: Jailer and Faker

Small teams can start without a TDM platform. Jailer extracts consistent subsets of a database by following foreign keys or relationships you define, and works with any database that has a JDBC driver. Faker is a Python library, under the MIT License, that generates fake names, addresses, and other values in many locales. A simple starter path: Jailer for a small subset, a masking script, Faker for edge-case rows, and CSV or database files that your tests read.

Where Katalon fits

Katalon is not a test data management platform. It doesn't mask, subset, or virtualize test databases. TDM platforms produce safe data; the Katalon True uses that data in tests. In Katalon Studio, tests read Excel, CSV, database, or internal data files through data binding and use execution profiles and protected variables per environment, and Katalon TestOps adds a Test Data field to manual test steps.

For how to set these up, see test data management in Katalon.

Frequently asked questions

Huyen Nguyen
Huyen NguyenTechnical Writer, Katalon

Huyen Nguyen is an experienced technical writer in the software testing industry. With strong technical expertise and a deep understanding of Katalon products, she creates clear, practical guides that support testers at every skill level.

Connect on LinkedIn →
True Platform has arrived

Test everything. Ship with confidence.

From generating test cases to spotting failures, Katalon's AI works across your entire pipeline, automatically.

The Next Evolution of Manual Testing: Introducing Katalon AI Test Runner

Introducing Katalon AI Test Runner. Watch it run manual test cases live, with evidence for every pass and fail.

Live webinar
9:00 to 10:00 AM EST · Live online
Alex MartinsVP of Strategy
Gia EspositoSenior Solutions Engineer
Save your seat