Přeskočit na obsah
_CORE
AI & Agentic Systems Core Information Systems Cloud & Platform Engineering Data Platform & Integration Security & Compliance QA, Testing & Observability IoT, Automation & Robotics Mobile & Digital Banking & Finance Insurance Public Administration Defense & Security Healthcare Energy & Utilities Telco & Media Manufacturing Logistics & E-commerce Retail & Loyalty
Reference Technologie Blog Know-how Nástroje
O nás Spolupráce Kariéra
Pojďme to probrat

Syntetická data pro enterprise testování — kompletní průvodce 2026

05. 02. 2026 14 min čtení CORE SYSTEMSdata
Syntetická data pro enterprise testování — kompletní průvodce 2026

Testování enterprise aplikací s produkčními daty je v roce 2026 nejen riskantní, ale v mnoha případech přímo nelegální. GDPR, NIS2 a rostoucí regulace nutí české firmy hledat alternativy. Syntetická data — uměle vygenerované datasety, které statisticky odpovídají produkčním datům bez jakýchkoliv osobních údajů — jsou odpovědí. V tomto průvodci projdeme vše od teorie přes nástroje až po konkrétní implementační vzory.

Proč produkční data v testovacím prostředí nejsou řešení

Stále překvapivé množství firem kopíruje produkční databáze do testovacích prostředí. Problémů je celá řada:

  • GDPR porušení: Osobní údaje zákazníků v testovacím prostředí znamenají rozšíření účelu zpracování bez právního základu. Pokuty dosahují 4 % obrotu.
  • NIS2 regulace: Od roku 2025 platí NIS2 i pro dodavatele ICT služeb. Nedostatečná ochrana testovacích dat je audit finding kategorie “high”.
  • Datové úniky: Testovací prostředí mají typicky slabší zabezpečení — širší přístupy, méně monitoringu, slabší šifrování. 67 % datových úniků v roce 2025 pocházelo z non-production prostředí.
  • Maskování nestačí: Anonymizace a pseudonymizace produkčních dat je křehká. Re-identifikace je možná kombinací kvazi-identifikátorů (věk + PSČ + pohlaví = 87 % populace unikátně identifikovatelných).
  • Provozní náklady: Kopírování terabajtových databází, správa přístupů, audit logování — to vše stojí čas a peníze.

Syntetická data tyto problémy řeší fundamentálně: neexistuje žádný reálný člověk, kterého by bylo možné identifikovat, protože data nikdy reálného člověka nereprezentovala.

Co jsou syntetická data a jak fungují

Syntetická data jsou umělé datasety generované algoritmy tak, aby zachovávaly statistické vlastnosti, distribuce a korelace původních dat — bez jakékoliv vazby na konkrétní osoby nebo záznamy.

Klíčové vlastnosti kvalitních syntetických dat

Statistická věrnost (fidelity): Distribuce hodnot, průměry, rozptyly a korelace mezi sloupci odpovídají originálu. Pokud v produkci mají zákazníci z Prahy průměrný věk 34 let a z Brna 38 let, syntetická data tuto distribuci zachovají.

Privátnostní záruky: Žádný syntetický záznam nesmí být příliš podobný reálnému záznamu. Měří se metrikami jako Distance to Closest Record (DCR) nebo membership inference resistance.

Užitečnost (utility): ML modely trénované na syntetických datech dosahují srovnatelné přesnosti jako na originálních datech. Benchmarkuje se poklesem metriky (accuracy drop, F1 drop).

Konzistence: Referenční integrita mezi tabulkami je zachována. Objednávka odkazuje na existujícího zákazníka, který má validní adresu ve správném formátu.

Generativní přístupy

V praxi se používají tři hlavní kategorie generátorů:

1. Statistické modely (rule-based) Nejjednodušší přístup. Definujete distribuce pro každý sloupec a generátor produkuje data podle pravidel. Vhodné pro jednoduché datasety bez komplexních závislostí.

# Příklad: Faker + vlastní distribuce
from faker import Faker
import numpy as np

fake = Faker('cs_CZ')

def generate_customer():
    age = int(np.random.normal(38, 12))  # normální distribuce
    age = max(18, min(99, age))
    return {
        'name': fake.name(),
        'email': fake.email(),
        'age': age,
        'city': np.random.choice(
            ['Praha', 'Brno', 'Ostrava', 'Plzeň'],
            p=[0.45, 0.20, 0.15, 0.20]
        ),
        'monthly_spend': max(0, np.random.lognormal(7.5, 1.2))
    }

Výhody: rychlé, deterministické, snadno vysvětlitelné. Nevýhody: nepostihují komplexní korelace mezi sloupci.

2. GAN-based generátory (CTGAN, TableGAN) Generativní adversariální sítě natrénované na tabulkových datech. Generator produkuje syntetické záznamy, discriminator se učí rozlišovat reálná od syntetických. Po konvergenci generator produkuje statisticky věrná data.

from sdv.single_table import CTGANSynthesizer
from sdv.metadata import SingleTableMetadata

metadata = SingleTableMetadata()
metadata.detect_from_dataframe(real_data)

synthesizer = CTGANSynthesizer(metadata, epochs=500)
synthesizer.fit(real_data)

synthetic_data = synthesizer.sample(num_rows=100_000)

Výhody: automaticky zachycují komplexní korelace. Nevýhody: vyžadují dostatek trénovacích dat (tisíce záznamů), trénink trvá hodiny.

3. LLM-based generátory Nejnovější přístup — využití velkých jazykových modelů pro generování kontextově bohatých syntetických dat. Zvláště efektivní pro nestrukturovaná a semi-strukturovaná data (texty objednávek, lékařské zprávy, zákaznická komunikace).

# Příklad s Claude API pro generování realistických zákaznických ticketů
import anthropic

client = anthropic.Anthropic()

prompt = """Vygeneruj 5 realistických zákaznických ticketů 
pro český e-shop s elektronikou. Každý ticket musí obsahovat:
- předmět, popis problému, kategorii, prioritu, sentiment
Formát: JSON array. Tickety mají být rozmanité — reklamace, 
dotazy, stížnosti, pochvaly."""

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=2000,
    messages=[{"role": "user", "content": prompt}]
)

Výhody: generují kontextově bohatá data s realistickými vztahy, nepotřebují trénovací dataset. Nevýhody: nákladnější pro velké objemy, horší reprodukovatelnost.

Architektura systému syntetických dat v enterprise

V enterprise prostředí nepotřebujete jen generátor — potřebujete celý pipeline. Zde je referenční architektura, kterou nasazujeme u klientů:

1. Metadata Layer — porozumění datům

Než cokoliv vygenerujete, potřebujete porozumět schématu, distribucím a vztahům:

# schema-profile.yaml
tables:
  customers:
    columns:
      - name: customer_id
        type: integer
        role: primary_key
        generator: sequential
      - name: email
        type: string
        role: pii
        pattern: "{first_name}.{last_name}@{domain}"
      - name: birth_date
        type: date
        distribution: normal
        mean: "1988-06-15"
        std_days: 4380  # ~12 let
      - name: segment
        type: categorical
        values: [premium, standard, basic]
        weights: [0.15, 0.55, 0.30]

    constraints:
      - type: unique
        columns: [email]
      - type: range
        column: birth_date
        min: "1940-01-01"
        max: "2008-12-31"

  orders:
    columns:
      - name: order_id
        type: integer
        role: primary_key
      - name: customer_id
        type: integer
        role: foreign_key
        references: customers.customer_id
      - name: total_amount
        type: decimal
        distribution: lognormal
        mean: 1250.0
        std: 2800.0

    relationships:
      - type: one_to_many
        parent: customers
        child: orders
        distribution: poisson
        mean: 4.2  # průměrný počet objednávek na zákazníka

2. Generation Engine — tvorba dat

Orchestrátor, který: - Respektuje referenční integritu (generuje rodiče před dětmi) - Aplikuje constrainty (unique, range, null rates) - Zachovává temporální konzistenci (objednávka po registraci) - Podporuje inkrementální generování (nové záznamy k existujícím)

3. Validation Layer — ověření kvality

Každý vygenerovaný dataset prochází automatickou validací:

from sdmetrics.reports.single_table import QualityReport
from sdmetrics.single_table import NewRowSynthesis

# Statistická kvalita
report = QualityReport()
report.generate(real_data, synthetic_data, metadata)
print(f"Overall quality score: {report.get_score()}")
# Cíl: > 0.85

# Privátnostní validace
privacy_score = NewRowSynthesis.compute(
    real_data, synthetic_data, metadata
)
print(f"New row synthesis: {privacy_score}")
# Cíl: > 0.95 (95%+ záznamů je unikátních)

4. Distribution Layer — doručení dat

Syntetická data musí být snadno dostupná vývojářům a CI/CD pipeline:

  • Self-service portál: Vývojář si vybere schéma, počet záznamů, seed → generuje on-demand
  • CI/CD integrace: Každý build automaticky generuje fresh dataset
  • Snapshot management: Verzované datasety pro reprodukovatelné testy
  • Format flexibility: SQL dump, CSV, Parquet, API endpoint

Praktické vzory pro české enterprise

Vzor 1: Bankovní transakce

České banky musí testovat AML (Anti-Money Laundering) systémy s realistickými transakcemi. Syntetická data musí obsahovat:

  • Normální transakční vzory (výplata → nájem → nákupy)
  • Anomálie pro detekci (structuring, layering, round-tripping)
  • České specifika (formáty účtů, IBAN CZ, variabilní symboly)
def generate_czech_transaction():
    """Generuje českou bankovní transakci s realistickými vzory."""
    tx_type = np.random.choice(
        ['incoming', 'outgoing', 'internal'],
        p=[0.35, 0.55, 0.10]
    )

    # České specifické formáty
    iban = f"CZ{np.random.randint(10,99)}" + \
           f"{np.random.randint(1000,9999):04d}" + \
           f"{np.random.randint(10**15, 10**16):016d}"

    vs = f"{np.random.randint(1, 9999999999):010d}"  # variabilní symbol

    # Realistické částky podle typu
    if tx_type == 'incoming' and np.random.random() < 0.3:
        # Výplata — normální distribuce kolem mediánu
        amount = max(15000, np.random.normal(42000, 15000))
    else:
        amount = np.random.lognormal(7.5, 1.8)

    return {
        'iban': iban,
        'amount': round(amount, 2),
        'currency': 'CZK',
        'variable_symbol': vs,
        'type': tx_type,
        'timestamp': fake.date_time_between(
            start_date='-90d', end_date='now'
        )
    }

Vzor 2: E-commerce objednávky

Pro testování logistických systémů potřebujete konzistentní objednávky:

  • Zákazník → košík → objednávka → platba → expedice → doručení
  • Každý krok má realistické časové rozestupy
  • České adresy (PSČ odpovídá městu, ulice existují)
  • Sezónní vzory (Vánoce, Black Friday, léto)
class CzechOrderGenerator:
    """Generátor českých e-commerce objednávek se sezónními vzory."""

    SEASONAL_MULTIPLIERS = {
        1: 0.7, 2: 0.65, 3: 0.8, 4: 0.85,
        5: 0.9, 6: 0.85, 7: 0.75, 8: 0.8,
        9: 0.95, 10: 1.0, 11: 1.4, 12: 1.8
    }

    PSC_CITY_MAP = {
        '110 00': 'Praha 1', '120 00': 'Praha 2',
        '602 00': 'Brno', '301 00': 'Plzeň',
        '702 00': 'Ostrava', '500 02': 'Hradec Králové',
        '370 01': 'České Budějovice', '460 01': 'Liberec',
    }

    def generate_order(self, date: datetime) -> dict:
        month = date.month
        base_items = np.random.poisson(2.3)
        items = max(1, int(base_items * self.SEASONAL_MULTIPLIERS[month]))

        psc = np.random.choice(list(self.PSC_CITY_MAP.keys()))

        return {
            'order_date': date,
            'items_count': items,
            'shipping_address': {
                'city': self.PSC_CITY_MAP[psc],
                'psc': psc,
                'street': fake.street_name(),
            },
            'payment_method': np.random.choice(
                ['card', 'bank_transfer', 'cod', 'gopay'],
                p=[0.45, 0.25, 0.15, 0.15]
            ),
            'delivery_method': np.random.choice(
                ['zasilkovna', 'dpd', 'ppl', 'ceska_posta', 'personal'],
                p=[0.35, 0.20, 0.20, 0.15, 0.10]
            )
        }

Vzor 3: Zdravotnická data

Nemocnice a pojišťovny potřebují testovat systémy s pacientskými daty, kde je GDPR obzvlášť přísné:

  • Diagnózy odpovídající MKN-10 (česká klasifikace)
  • Realistické hospitalizační vzory
  • Demografické korelace (věk ↔ diagnóza)
  • Žádné reálné rodné číslo — generované s platným formátem ale neexistující
def generate_czech_birth_number(birth_date, gender):
    """Generuje syntetické rodné číslo ve validním formátu."""
    year = birth_date.year % 100
    month = birth_date.month
    if gender == 'F':
        month += 50  # Ženy mají měsíc + 50
    day = birth_date.day

    # Poslední 4 cifry — zajistíme dělitelnost 11
    base = f"{year:02d}{month:02d}{day:02d}"
    for _ in range(1000):
        suffix = f"{np.random.randint(0, 9999):04d}"
        full = base + suffix
        if int(full) % 11 == 0:
            return f"{base}/{suffix}"

    return f"{base}/0000"  # fallback

Nástroje pro generování syntetických dat v roce 2026

Open-source nástroje

Nástroj Přístup Vhodné pro Licence
SDV (Synthetic Data Vault) GAN/statistické Tabulková data, multi-table MIT
Faker Rule-based PII nahrazení, jednoduché datasety MIT
Gretel.ai SDK GAN + LLM Komplexní enterprise data Freemium
DataSynthesizer Bayesian network Akademické / jednodušší use cases MIT
Synthcity GAN/VAE/diffusion Healthcare data Apache 2.0
Mimesis Rule-based Vysoký výkon, multi-locale MIT

Enterprise platformy

Mostly AI: Lídr v Gartner Magic Quadrant pro syntetická data. Silná podpora tabulkových dat, automatická privátnostní validace, self-hosted i cloud. Cena: od €50K/rok.

Tonic.ai: Zaměřený na databázové subsetting + syntetizaci. Přímá integrace s PostgreSQL, MySQL, Oracle. Silný v CI/CD pipeline. Cena: od $30K/rok.

Hazy: Britský startup s fokusem na finanční sektor. Diferenciální privátnost jako default. Cena: na vyžádání.

Gretel.ai: Cloud-native platforma s nejlepší LLM integrací. Generuje i nestrukturovaná data (texty, JSON, logy). Free tier pro menší objemy.

Naše doporučení pro české firmy

Pro většinu českých enterprise klientů doporučujeme kombinovaný přístup:

  1. Faker + vlastní pravidla pro jednoduché referenční datasety (číselníky, konfigurace)
  2. SDV/CTGAN pro komplexní transakční data s korelacemi
  3. LLM generování pro textová data (tickety, dokumenty, komunikace)
  4. Vlastní validační framework pro české specifika (rodná čísla, IČO, DIČ, IBAN)

GDPR a právní aspekty

Jsou syntetická data osobním údajem?

Klíčová otázka. Odpověď závisí na metodě generování:

Plně syntetická data (de novo): Generovaná čistě ze statistických distribucí bez přímého mapování na konkrétní osoby. Podle stanoviska EDPB (European Data Protection Board) z roku 2025 se nejedná o osobní údaje, pokud: - Nelze žádný záznam zpětně přiřadit konkrétní osobě - Generátor neprovádí 1:1 transformaci - Distance to Closest Record (DCR) je nad bezpečným prahem

Pseudonymizovaná data: Transformace produkčních dat (maskování, hashing). Stále jsou osobní údaje podle GDPR — pseudonymizace není anonymizace.

Diferenciálně privátní data: Přidání kalibovaného šumu, který matematicky garantuje, že přítomnost/nepřítomnost jednoho záznamu neovlivní výstup. Nejsilnější právní pozice — prokazatelná anonymizace.

Praktická doporučení

  1. Dokumentujte metodu generování — auditor musí vidět, že syntetická data nelze zpětně propojit
  2. Provádějte re-identifikační testy — pravidelně ověřujte, že syntetické záznamy nelze linkovat na reálné osoby
  3. Uchovávejte metadata — jaký model, jaká konfigurace, jaký seed generoval data
  4. Oddělte prostředí — generátor, který má přístup k produkčním datům, běží v chráněném prostředí

Implementace v CI/CD pipeline

Syntetická data mají největší hodnotu, když jsou automatizovaná v CI/CD:

# .github/workflows/integration-tests.yml
name: Integration Tests with Synthetic Data

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:16
        env:
          POSTGRES_DB: testdb
          POSTGRES_PASSWORD: test
        ports: ['5432:5432']

    steps:
      - uses: actions/checkout@v4

      - name: Generate synthetic data
        run: |
          pip install sdv faker
          python scripts/generate_test_data.py \
            --schema config/data-schema.yaml \
            --rows 50000 \
            --seed ${{ github.run_number }} \
            --output /tmp/synthetic_data/

      - name: Load data into test DB
        run: |
          psql -h localhost -U postgres -d testdb \
            -f /tmp/synthetic_data/load.sql
        env:
          PGPASSWORD: test

      - name: Run integration tests
        run: pytest tests/integration/ -v --tb=short

      - name: Validate data quality
        run: |
          python scripts/validate_synthetic_data.py \
            --data /tmp/synthetic_data/ \
            --min-quality 0.85 \
            --min-privacy 0.95

Deterministické vs. stochastické generování

Pro CI/CD je kritický reprodukovatelný výstup:

class DeterministicGenerator:
    """Seed-based generátor pro reprodukovatelné CI/CD testy."""

    def __init__(self, seed: int = 42):
        self.rng = np.random.RandomState(seed)
        self.fake = Faker('cs_CZ')
        Faker.seed(seed)

    def generate_dataset(self, n_rows: int) -> pd.DataFrame:
        """Stejný seed = stejná data pokaždé."""
        records = [self._generate_record() for _ in range(n_rows)]
        return pd.DataFrame(records)

    def _generate_record(self) -> dict:
        return {
            'id': self.fake.uuid4(),
            'name': self.fake.name(),
            'email': self.fake.email(),
            'amount': round(self.rng.lognormal(7, 1.5), 2),
            'created_at': self.fake.date_time_this_year()
        }

Měření kvality syntetických dat

Nestačí generovat — musíte měřit. Klíčové metriky:

Fidelity metriky

  • Column Shape: Distribuce každého sloupce vs. originál (KS test, chi-squared)
  • Column Pair Trends: Korelace mezi páry sloupců
  • Parent-Child Relationships: Referenční integrita a distribuční konzistence

Privacy metriky

  • DCR (Distance to Closest Record): Minimální vzdálenost syntetického záznamu od nejbližšího reálného. Medián by měl být > 5. percentil reálných dat.
  • Membership Inference: Dokáže ML model rozhodnout, zda byl konkrétní záznam v trénovacím datasetu? Cíl: accuracy ≤ 52 % (blízko náhody).
  • Attribute Inference: Dokáže útočník odvodit citlivý atribut ze syntetických dat lépe než z veřejných statistik? Cíl: minimální advantage.

Utility metriky

  • ML Efficacy: Trénujte stejný model na reálných a syntetických datech, porovnejte výkon na reálném test setu
  • Query Accuracy: Analytické dotazy (agregace, filtry) na syntetických datech by měly dávat výsledky ±5 % od reálných
  • Statistical Tests: Kolmogorov-Smirnov test pro spojité proměnné, chi-squared pro kategorické
from sdmetrics.reports.single_table import QualityReport, DiagnosticReport

# Kvalita
quality = QualityReport()
quality.generate(real_data, synthetic_data, metadata)

print("Column Shapes:", quality.get_details('Column Shapes'))
print("Column Pair Trends:", quality.get_details('Column Pair Trends'))

# Diagnostika
diag = DiagnosticReport()
diag.generate(real_data, synthetic_data, metadata)
print("Coverage:", diag.get_details('Coverage'))
print("Boundaries:", diag.get_details('Boundary'))

Časté chyby a jak se jim vyhnout

1. Generování bez profilování

Generujete data, aniž byste pochopili distribuce originálu. Výsledek: syntetická data s uniformními distribucemi, která neodpovídají realitě.

Řešení: Vždy začněte data profilingem — YData Profiling, pandas-profiling, nebo vlastní analýza.

2. Ignorování temporálních závislostí

Objednávky s datem před registrací zákazníka. Platby před vystavením faktury. Absurdní, ale běžná chyba.

Řešení: Definujte explicitní temporální constrainty v konfiguraci generátoru.

3. Příliš uniformní data

Syntetická data bez outlierů a edge cases. Testy pak prochází, ale produkce padá na neočekávaných hodnotách.

Řešení: Záměrně injektujte edge cases — null hodnoty, extremní částky, unicode znaky v jménech, adresy se speciálními znaky.

4. Jednorázová generace

Vygenerujete dataset jednou a používáte ho měsíce. Data zastarávají, nové features nemají testovací data.

Řešení: Automatizujte generování v CI/CD, aktualizujte schéma s každou migrací.

5. Chybějící validace privátnosti

Generujete data a předpokládáte, že jsou bezpečná. Bez měření nemůžete vědět.

Řešení: Automatická privátnostní validace v každém generovacím runu. Fail build při překročení prahu.

Case study: Implementace pro českého retailera

Jeden z našich klientů — český retailer s 2M+ zákazníky a 50M+ transakcemi ročně — potřeboval testovací prostředí pro nový loajalitní systém.

Výchozí stav

  • Kopie produkční DB (PostgreSQL 14, 800 GB) v testovacím prostředí
  • Maskování přes vlastní SQL skripty (nespolehlivé, 3 auditní nálezy)
  • Refresh jednou měsíčně (manuální, 6h downtime testu)
  • 12 vývojářů s přístupem k produkčním datům

Řešení

  • SDV + Faker pro tabulková data s českými specifiky
  • Vlastní generátor pro věrnostní body a kampaně
  • CI/CD integrace — fresh data na každý PR
  • Validační pipeline — automatické ověření kvality a privátnosti

Výsledky po 3 měsících

  • 0 vývojářů s přístupem k produkčním datům (z 12)
  • Audit compliance: Všechny GDPR nálezy uzavřeny
  • Generování: 50M syntetických transakcí za 45 minut (vs. 6h kopírování)
  • Bug detection: +23 % více bugů nalezeno díky edge case injekci
  • Náklady: -40 % na testovací infrastrukturu (menší DB, žádné security overlays)

Budoucnost: kam směřují syntetická data v roce 2026

Trend 1: Foundation Models pro tabulková data

Modely jako TabPFN a TabDDPM umožňují zero-shot generování — natrénujte jednou na tisících datasetů, pak generujte pro nová schémata bez přetrénování.

Trend 2: Federated Synthetic Data

Organizace sdílejí syntetické reprezentace dat bez sdílení dat samotných. Umožňuje kolaborativní analýzu v healthcare, finance a supply chain.

Trend 3: Regulatorní standardy

EU AI Act kategorizuje syntetická data jako klíčový nástroj pro AI compliance. Očekávejte formální certifikační rámce v průběhu 2026–2027.

Trend 4: Real-time syntetická data

Streamové generování syntetických dat pro testování real-time systémů — Kafka, event sourcing, CDC pipeline.

Závěr

Syntetická data nejsou luxus — jsou nutnost. České firmy, které stále kopírují produkční databáze do testovacích prostředí, riskují GDPR pokuty, datové úniky a audit findings. Technologie v roce 2026 jsou dostatečně zralé pro enterprise nasazení.

Začněte jednoduše: Faker pro referenční data, SDV pro komplexní datasety, automatická validace v CI/CD. Klíč je v systematickém přístupu — ne jednorázový skript, ale integrovaný pipeline s měřitelnou kvalitou a privátností.

CORE SYSTEMS pomáhá českým firmám implementovat kompletní platformy syntetických dat — od analýzy datového modelu přes nasazení generátorů až po CI/CD integraci a GDPR compliance dokumentaci. Ozvěte se nám, pokud potřebujete zbavit testovací prostředí produkčních dat.

synthetic-datatestinggdpraidata-engineeringprivacy
Sdílet:

CORE SYSTEMS

Stavíme core systémy a AI agenty, které drží provoz. 15 let zkušeností s enterprise IT.

Potřebujete pomoc s implementací?

Naši experti vám pomohou s návrhem, implementací i provozem. Od architektury po produkci.

Kontaktujte nás