Generování test dat pomocí AI — od fixtures po E2E scénáře
Kde najdete reálná uživatelská data na testování, která nejsou GDPR noční můrou? Nikde. Buď je máte anonymizovaná (drahé a pracné), nebo si je vygenerujete. AI udělala ze syntetických dat prakticky použitelnou věc.
Tenhle článek pokrývá tři úrovně generování: fixtures, factory patterny a datové scénáře pro E2E.
Úroveň 1: Fixtures s AI
Fixture je statický JSON soubor v cypress/fixtures/, který test načítá. AI zvládne generovat konzistentní, schema-aware fixtures během sekund.
> Vygeneruj cypress/fixtures/users/premium-users.json
obsahujúci 20 používateľov s nasledujúcou schemou:
{
id: UUID v4,
email: unikátny gmail,
name: { first, last } — slovenské mená,
subscription: { plan: "premium", validUntil: ISO date in future },
preferences: { language: "sk" | "en", marketing: boolean }
}
Dátum validity rozlož od 30 do 400 dní od dnes.
Claude vygeneruje validní JSON, který v testu použijete okamžitě: cy.fixture('users/premium-users.json').
Úroveň 2: Factory patterns
Factory vygeneruje uživatele s možností přepsat hodnoty přímo v testu. Použijte @faker-js/faker a AI na metody:
// cypress/support/factories/userFactory.ts
import { faker } from '@faker-js/faker/locale/sk';
export const userFactory = {
build(overrides = {}) {
return {
id: faker.string.uuid(),
email: faker.internet.email({ provider: 'example.sk' }),
firstName: faker.person.firstName(),
lastName: faker.person.lastName(),
phone: faker.phone.number('+421 9## ### ###'),
address: {
street: faker.location.streetAddress(),
city: faker.location.city(),
zip: faker.location.zipCode(),
},
...overrides,
};
},
buildPremium(overrides = {}) {
return this.build({
subscription: {
plan: 'premium',
validUntil: faker.date.future({ years: 1 }).toISOString(),
},
...overrides,
});
},
};
// Use in test:
const user = userFactory.build({ email: 'test@example.sk' });
AI při psaní scénáře rozumí userFactory.buildPremium() a sáhne po něm sama.
Úroveň 3: Datové scénáře pro E2E (náročnější)
Složitý E2E test potřebuje konzistentní data napříč třemi a více entitami: uživatel + jeho objednávky + historie plateb + scénáře refundace. Ručně na to padnou hodiny. AI to vygeneruje z jednoho promptu na vysoké úrovni:
> Vygeneruj seed dáta pre E2E scenár "refund process": Scenár potrebuje: - 1 používateľ (premium plan, valid payment method) - 3 objednávky za posledných 30 dní (rôzne statusy: delivered, in-transit, cancelled) - 1 objednávka s poškodeným produktom, vhodná na refund - Admin používateľ s refund permissions Výstup: - cypress/fixtures/scenarios/refund.json — dáta - cypress/support/scenarios/refund.ts — setup helper (API calls na seednutie)
Výstupem je kompletní setup, který v testu zavoláte přes cy.setupScenario('refund').
GDPR-safe patterns
Obzvlášť kritické v pojišťovnictví, zdravotnictví a bankovnictví:
- Nikdy nepoužívejte produkční data. I anonymizovaná se dají deanonymizovat.
- Data respektující lokalizaci. České jméno, česká adresa, české rodné číslo (s platnou kontrolní číslicí).
- Rodná čísla generovaná synteticky — faker.cz má generátor RČ; pro SK dopíšeme helper, který dodrží formát
RRMMDD/XXXXs platnou kontrolní číslicí. - Žádné reálné e-maily. Používejte domény jako
example.cznebotest.local. Pokud potřebujete ověřit doručitelnost, Mailgun má sandboxovou doménu.
Schema-aware AI: inspirace z OpenAPI
Pokud máte OpenAPI spec svého backendu, AI vygeneruje fixtures pro každý endpoint automaticky:
> Pozri na api/openapi.yaml. Pre každý GET endpoint vygeneruj 1 fixture súbor v cypress/fixtures/api/ s realistickou odpoveďou podľa schémy. Použij sk locale, GDPR-safe dáta.
Claude přečte YAML, pochopí schémata a vygeneruje konzistentní JSON odpovědi. 20+ fixtures za 60 sekund.
Multi-tenant patterny
SaaS aplikace potřebují izolovat data mezi tenanty. Factory na to musí myslet:
export const orderFactory = {
buildForTenant(tenantId: string, overrides = {}) {
return {
id: `${tenantId}-${faker.string.uuid()}`,
tenantId,
// ... ostatné fields
...overrides,
};
},
};
U E2E testu, který volá AI generátor, vždy dodejte kontext tenanta: „naseeduj data pro tenanta 'acme-corp' tak, aby byla izolovaná od ostatních testů". AI to respektuje.
Praktické ROI
- Čas na napsání seed souboru: z průměrných 45 minut na 4.
- Konzistence fixtures mezi testy: vyšší (AI drží konvenci).
- GDPR: produkčních dat se vůbec nedotkneme.
Chcete stejný přístup u vás? Napište nám — domluvíme 30minutový discovery call.