Datengenerierung

ENTWICKLER-TOOL

Datengenerierung

Generiere realistische Testdaten: Namen, E-Mails, Adressen, Telefonnummern, IBANs, UUIDs, Passwörter und mehr. Mit CSV, JSON, SQL und XML-Export.

Personen Kontakt Firmen Finanzen Entwickler

Datenschutz-Garantie: Alle Daten werden zufällig lokal in deinem Browser generiert. Es werden keine echten Personen dargestellt und keine Daten an Server gesendet. Perfekt für Tests, Demos und Prototyping.

Inhaltsverzeichnis

Schnellübersicht

  • Datengenerierung: Realistische Testdaten per Klick
  • Kategorien: Personen, Kontakt, Adresse, Firma, Finanzen, Technik
  • Presets: Benutzer, Kunden, Produkte, Logs, Bestellungen
  • Export: CSV, JSON, SQL, XML, YAML, Markdown
  • Anpassbar: Anzahl der Datensätze und Felder wählbar
  • Theorie: Was sind Testdaten? (Anfängerfreundlich)
  • Geschichte: Von Mock-Daten zu Faker-Bibliotheken
  • FAQ: Häufige Fragen zu Testdaten

1. Datengenerator

Wähle Kategorien und Felder aus – die Daten werden sofort generiert.

1 bis 1000 Datensätze
Kategorien & Felder
Presets
Ausgabe
// Wähle Felder aus, um Daten zu generieren
Wichtig: Keine echten Personen
  • Alle generierten Daten sind rein zufällig und entsprechen keinen realen Personen.
  • IBANs, Kreditkartennummern und Telefonnummern sind Fake-Nummern nach Standardformaten – sie funktionieren nicht.
  • Passwörter dienen nur zu Testzwecken – niemals in der Produktion verwenden!
  • Für Produktions-Datenbanken: immer echte Datenanonymisierung verwenden.
Wussten Sie schon?
  • Testdaten sind essentiell für Software-Tests – sie simulieren realistische Szenarien.
  • Die beliebteste Bibliothek ist Faker – verfügbar in Python, JavaScript, PHP, Ruby und mehr.
  • DSGVO-konform: Testdaten dürfen keine echten Personen abbilden – nur synthetische Daten verwenden!
  • Performance-Tests brauchen oft Millionen Datensätze – Generator-Tools sparen Zeit.
  • Seed-Werte erlauben reproduzierbare Zufallsdaten für konsistente Tests.

2. Theorie – Testdaten einfach erklärt

Verstehe die Grundlagen von Testdaten – ohne Vorkenntnisse.

Was sind Testdaten?

Testdaten sind künstlich erzeugte Daten, die für Software-Tests verwendet werden:

  • Keine echten Personen: DSGVO-konform
  • Realistisch: Format wie echte Daten
  • Reproduzierbar: Mit Seed-Werten
  • Beliebig skalierbar: 10 oder 1 Million Datensätze
Max Mustermann, max@example.com

Warum Testdaten?

Testdaten sind aus der Entwicklung nicht wegzudenken:

  • Entwicklung: Datenbanken füllen ohne echte Daten
  • Testing: Edge-Cases abdecken
  • Demos: Präsentation mit realistischen Daten
  • Performance: Last-Tests mit vielen Datensätzen
  • DSGVO: Keine echten Kundendaten kopieren
Aus 10 Datensätzen 1.000.000 machen

Wo werden Testdaten eingesetzt?

Testdaten begegnen dir in vielen Bereichen:

  • Softwareentwicklung: Seed-Daten für Datenbanken
  • Testing: Unit-, Integration-, E2E-Tests
  • Data Science: Machine Learning Trainingsdaten
  • Design: Mock-Ups mit echten Textlängen
  • Demos: Präsentationen und Screenshots
Faker: 200+ Datentypen in 40 Sprachen

Tipps für Testdaten

  • Seed verwenden: Reproduzierbare Tests
  • Realistische Größe: Auch Längen realistisch
  • Edge-Cases: Sehr lange Namen, Sonderzeichen
  • Keine echten Daten: DSGVO beachten!
  • Faker-Bibliotheken: Nicht selbst erfinden
import faker; fake.name()

Wussten Sie schon? Die bekannteste Testdaten-Bibliothek heißt Faker und wurde ursprünglich 2010 für Ruby entwickelt. Heute gibt es sie für Python, JavaScript, PHP, Java, Perl, Rust und mehr. In Python produziert fake.name() einen zufälligen Namen, fake.iban() eine gültige IBAN. Besonders clever: Faker kann auch länderspezifische Daten generieren – deutsche Adressen, US-amerikanische Telefonnummern oder japanische Namen. Fun Fact: Die Bibliothek enthält über 200 verschiedene Datentypen!

3. Die wichtigsten Datentypen

Übersicht über die generierbaren Felder nach Kategorien:

Personen

  • Vorname: Max, Anna, Tom
  • Nachname: Mustermann, Schmidt
  • Geburtsdatum: Zwischen 1950-2005
  • Geschlecht: Männlich, Weiblich, Divers
  • Alter: 18-85 Jahre
Max Mustermann, 15.03.1985

Kontakt

  • E-Mail: Realistisch formatiert
  • Telefon: Deutsche Nummern
  • Mobil: Handynummern
  • Website: Beispiel-URLs
max.mustermann@example.com

Adresse

  • Straße: Deutsche Straßennamen
  • Hausnummer: Realistische Werte
  • PLZ: Deutsche Postleitzahlen
  • Stadt: Deutsche Großstädte
  • Land: Standard: Deutschland
Hauptstraße 42, 10115 Berlin

Finanzen & Technik

  • IBAN: Format DE + 20 Zeichen
  • Kreditkarte: 16-stellig, Luhn-konform
  • UUID: v4 Format
  • Passwort: Konfigurierbar
  • IP-Adresse: v4 privat/öffentlich
DE89 3704 0044 0532 0130 00

4. Geschichte der Testdaten-Generierung

Von handgeschriebenen Beispieldaten zu intelligenten Generator-Bibliotheken.

1960er

Erste Testdaten

In den Anfängen der Softwareentwicklung wurden Testdaten per Hand erstellt – meist mit einfachen Werten wie "Test1", "Test2", "Test3". Kaum realistisch, aber funktional.

1980er

Datenbank-Tests

Mit dem Aufstieg relationaler Datenbanken (Oracle, DB2) wurde das Testen komplexer. Entwickler begannen, SQL-Skripte zur Massengenerierung zu schreiben.

2001

Ruby Faker

Die Bibliothek Faker wird für Ruby veröffentlicht. Erstmals können realistische Namen, Adressen und Telefonnummern automatisch generiert werden – ein Meilenstein.

2008

Python Faker

Python-Faker wird populär. Die Bibliothek unterstützt 40+ Sprachen und hunderte Datentypen. Wird zum Standard für Testdaten in der Python-Community.

2010

Mockaroo & Online-Tools

Webbasierte Tools wie Mockaroo und Generatedata.com werden populär. Nutzer können Testdaten ohne Programmierung im Browser generieren.

2015

Faker für alle

Faker-Bibliotheken erscheinen für JavaScript, Java, PHP, Go, Rust und viele weitere Sprachen. Die Idee setzt sich branchenübergreifend durch.

Heute

KI-gestützte Generierung

Künstliche Intelligenz revolutioniert die Testdaten-Generierung: Sprachmodelle können realistische Texte, Namen und sogar ganze Datensätze mit konsistenten Beziehungen erstellen. DSGVO-konforme synthetische Daten werden zum Standard.

5. FAQ – Spannende Fragen & Antworten

Häufige Fragen zu Testdaten

Warum darf ich keine echten Daten für Tests verwenden?

Die Verwendung echter Daten in Testumgebungen ist rechtlich problematisch und riskant:

DSGVO-Verstöße:

  • Zweckbindung: Daten dürfen nur für den ursprünglichen Zweck verwendet werden
  • Datensparsamkeit: Nicht mehr Daten als nötig verarbeiten
  • Strafen: Bis zu 20 Millionen Euro oder 4% des Jahresumsatzes

Sicherheitsrisiken:

  • Testumgebungen sind oft weniger gesichert als Produktion
  • Entwickler-Rechner können kompromittiert werden
  • Backups können in falsche Hände geraten
  • Cloud-Test-Umgebungen haben oft schwächere Zugriffskontrollen

Bekannte Vorfälle:

  • 2019: Fintech-Unternehmen verliert 24 Millionen Kundendaten aus Testsystem
  • 2020: Krankenhaus-Testdatenbank mit Patientendaten öffentlich zugänglich
  • 2022: DSGVO-Bußgeld von 900.000 € wegen Testdaten-Leak

Die Lösung: Anonymisierung oder synthetische Daten:

# Schlecht: INSERT INTO users VALUES ('Max Mustermann', 'max@firma.de'); # Gut (synthetisch): INSERT INTO users VALUES ('Testnutzer 001', 'test001@example.com');

Best Practice: Von Anfang an synthetische Testdaten verwenden – nie echte Daten kopieren!

Was ist ein Seed-Wert und warum ist er wichtig?

Ein Seed-Wert macht Zufallsdaten reproduzierbar – ein entscheidendes Konzept beim Testen:

Das Problem ohne Seed:

  • Jeder Testlauf generiert andere Daten
  • Fehler sind schwer zu reproduzieren
  • Tests schlagen manchmal fehl, manchmal nicht (flaky tests)
  • Debugging ist extrem schwierig

Die Lösung: Seed-Wert

Ein Seed initialisiert den Zufallsgenerator deterministisch:

// JavaScript const seedrandom = require('seedrandom'); const rng = seedrandom('mein-seed-123'); rng() // Immer 0.4285... rng() // Immer 0.9734... rng() // Immer 0.2156...

Python-Beispiel:

import random from faker import Faker random.seed(42) fake = Faker('de_DE') Faker.seed(42) # Bei jedem Durchlauf gleich: print(fake.name()) # z.B. immer "Anna Schmidt" print(fake.address()) # Immer dieselbe Adresse

Vorteile:

  • Reproduzierbarkeit: Gleiche Daten bei jedem Testlauf
  • Debugging: Fehler können nachgestellt werden
  • CI/CD: Konsistente Tests in Pipelines
  • Bug-Reports: "Reproduzierbar mit Seed 42"

Best Practice: Seed-Wert in Tests immer festlegen, in Produktion zufällig lassen.

Was sind synthetische Daten und wie unterscheiden sie sich von Testdaten?

Die Begriffe werden oft synonym verwendet, aber es gibt einen wichtigen Unterschied:

AspektTestdatenSynthetische Daten
ZweckSoftware testenEchte Daten ersetzen
RealismusAusreichendSehr hoch
GenerierungFaker-BibliothekenKI / ML-Modelle
VerwendungTests, DevProduktion, ML, DSGVO
KomplexitätEinfachKomplex, realitätsnah

Testdaten:

  • Werden für Tests und Entwicklung verwendet
  • Müssen nicht 100% realistisch sein
  • Können einfache Werte wie "Test1", "Test2" sein
  • Werden oft manuell oder mit Faker generiert

Synthetische Daten:

  • Ersetzen echte Daten vollständig
  • Müssen statistisch identisch mit echten Daten sein
  • Erfordern Machine-Learning-Modelle
  • DSGVO-konform als Produktionsdaten verwendbar
  • Behalten Muster, Verteilungen und Beziehungen

Beispiel:

Eine Bank braucht Kundendaten für KI-Training. Echte Daten sind DSGVO-geschützt. Synthetische Daten mit gleichem statistischem Profil (Einkommen, Alter, Kreditverhalten) ermöglichen Training ohne Datenschutzverletzung.

Wie viele Testdaten brauche ich für aussagekräftige Tests?

Die optimale Anzahl hängt vom Testziel ab:

TestartAnzahlZweck
Unit-Tests1-10Einzelne Funktionen
Integration10-100Zusammenspiel
E2E100-1000Komplette Workflows
Load-Tests1M+Performance
ML-Training10K+Modelle trainieren

Faustregeln:

  • Unit-Tests: 3-5 typische Fälle + Edge-Cases
  • Integration: Genug für realistische Szenarien
  • UI-Tests: Auch längere Namen, Sonderzeichen
  • Performance: So viele wie Produktion erwartet (×2)
  • ML: Mindestens 1000 pro Klasse

Qualität > Quantität: 100 gut gewählte Testdaten sind besser als 10.000 zufällige. Wichtig ist die Abdeckung von Edge-Cases:

  • Leere Werte: "", null, undefined
  • Sehr lange Werte: 10.000 Zeichen
  • Sonderzeichen: Emojis, Unicode, SQL-Injection
  • Grenzwerte: 0, -1, MAX_INT
  • Unicode: 中文, العربية, 😀

Tipp: Kombiniere realistische Daten (für Demos) mit extremen Daten (für Robustheit).

Was ist der Unterschied zwischen Mock, Stub und Fake?

Die Begriffe kommen aus dem Test-Driven Development und haben unterschiedliche Bedeutungen:

TypZweckVerhalten
DummyPlatzhalterWird nie verwendet
StubFeste AntwortGibt immer dasselbe zurück
SpyAufrufe beobachtenZeichnet Aufrufe auf
MockErwartungen prüfenVerifiziert Interaktionen
FakeVereinfachte ImplementierungFunktioniert "richtig"

Beispiele:

Dummy: Platzhalter, der nur für die Signatur gebraucht wird.

userService.createUser(null, "Max", "Mustermann");

Stub: Gibt immer denselben Wert zurück.

const userRepository = { findById: () => ({ id: 1, name: "Max" }) };

Mock: Prüft, ob Methoden aufgerufen wurden.

const emailService = { send: jest.fn() }; // ... Test ... expect(emailService.send).toHaveBeenCalledTimes(1);

Fake: Echte Implementierung, aber vereinfacht.

// In-Memory-Datenbank statt echter DB class FakeUserRepository { constructor() { this.users = []; } save(user) { this.users.push(user); } findById(id) { return this.users.find(u => u.id === id); } }

Faustregel:

  • Fake für Datenbanken (In-Memory)
  • Stub für externe Services (feste Antwort)
  • Mock für Interaktions-Prüfung (wurde X aufgerufen?)
  • Spy für Beobachtung (wie oft?)
  • Dummy nur zum Ausfüllen
Welche Tools und Bibliotheken gibt es für Testdaten?

Es gibt eine breite Auswahl an Tools für verschiedene Sprachen und Zwecke:

Python:

  • Faker: fake.name(), fake.iban(), fake.address()
  • Mimesis: Schneller als Faker, viele Sprachen
  • Factory Boy: Django/Flask Factories
  • hypothesis: Property-based Testing

JavaScript:

  • @faker-js/faker: Beliebteste JS-Lösung
  • chance.js: Leicht und flexibel
  • casual: Für Node.js und Browser
  • json-schema-faker: Aus JSON Schema

PHP:

  • Faker (PHP): Für Laravel, Symfony
  • Alice: Fixtures mit Beziehungen
  • DoctrineFixtures: Für Symfony

Java:

  • Java Faker: Portierung von Faker
  • RandomBeans: Für Java-Beans
  • Easy Random: Objekte generieren

Online-Tools:

  • Mockaroo: Web-Generator mit 100+ Typen
  • Generatedata.com: Umfangreich und kostenlos
  • Fake Data Generator: Schnell und einfach

Spezialisierte Tools:

  • Snowfakery: Salesforce-Daten
  • SDV (Synthetic Data Vault): KI-basierte synthetische Daten
  • Gretel: Datenschutz-konforme Daten
  • Tonic.ai: Produktionsdaten in Testdaten

Für DSGVO-konforme Produktionsdaten:

  • Tonic.ai: Anonymisiert echte Daten
  • Mostly AI: KI-generierte synthetische Daten
  • Hazy: Datenschutz durch synthetische Daten
Wie generiere ich Daten mit Beziehungen (Foreign Keys)?

Realistische Testdaten brauchen oft Beziehungen zwischen Tabellen (1:n, n:m):

Szenario: Kunden mit Bestellungen mit Produkten

Ansatz 1: Sequenzielle Generierung

// 1. Kunden generieren const customers = Array.from({length: 100}, (_, i) => ({ id: i + 1, name: faker.person.fullName(), email: faker.internet.email() })); // 2. Bestellungen mit Kunden-Referenz const orders = Array.from({length: 500}, () => ({ id: faker.string.uuid(), customer_id: faker.helpers.arrayElement(customers).id, amount: faker.commerce.price(), date: faker.date.recent() }));

Ansatz 2: Factory-Muster (Python)

import factory from models import Customer, Order, Product class CustomerFactory(factory.Factory): class Meta: model = Customer name = factory.Faker('name') email = factory.Faker('email') class OrderFactory(factory.Factory): class Meta: model = Order customer = factory.SubFactory(CustomerFactory) total = factory.Faker('pydecimal', left_digits=4, right_digits=2) date = factory.Faker('date_this_year') # Verwendung: customer = CustomerFactory() # Erzeugt Kunde order = OrderFactory() # Erzeugt Bestellung mit Kunde

Ansatz 3: Konsistente IDs

// SQL: Foreign Keys müssen gültig sein INSERT INTO customers (id, name) VALUES (1, 'Max Mustermann'), (2, 'Anna Schmidt'); INSERT INTO orders (id, customer_id, amount) VALUES (1, 1, 99.99), -- Gültig (2, 2, 149.50), -- Gültig (3, 1, 24.99); -- Gültig

Wichtige Regeln:

  • Referenzielle Integrität: Foreign Keys müssen existieren
  • Reihenfolge: Erst Parent, dann Child
  • Verteilung: Manche Kunden haben viele Bestellungen
  • Konsistenz: Bestelldatum nach Kundenerstellung

Faker-Trick für Verteilungen:

// Power-Law-Verteilung: Wenige Kunden bestellen viel const customerId = faker.helpers.weightedArrayElement([ { weight: 7, value: 1 }, // 70% von Kunde 1 { weight: 2, value: 2 }, // 20% von Kunde 2 { weight: 1, value: 3 } // 10% von Kunde 3 ]);
Wie teste ich mit Unicode und Sonderzeichen?

Unicode-Tests sind essentiell, um internationale Anwendungen robust zu machen:

Wichtige Unicode-Kategorien:

  • Umlaute: ä, ö, ü, ß, Ä, Ö, Ü
  • Akzente: é, è, ê, ñ, ç, à
  • Kyrillisch: Привет мир
  • Griechisch: Καλημέρα κόσμε
  • Arabisch: مرحبا بالعالم
  • Hebräisch: שלום עולם
  • CJK: 你好世界, こんにちは, 안녕하세요
  • Emojis: 😀 🎉 ❤️ 🚀 ⭐
  • Sonderzeichen: €, £, ¥, ₹, ₽
  • Mathematik: ∑, ∏, ∫, √, ∞

Test-Strategie:

// Beispiele für Unicode-Tests const testNames = [ "Müller", // Umlaut "García", // Akzent "Пушкин", // Kyrillisch "山田太郎", // Japanisch "محمد", // Arabisch "李明", // Chinesisch "🚀Max", // Emoji "Anna 👩‍💻", // Emoji mit ZWJ "A\u0308", // Kombinierender Umlaut "\u200BMax", // Zero-Width Space "Max\u0000Mustermann" // Null-Byte ];

Häufige Fehler bei Unicode:

  • Länge: "🚀".length = 2 (nicht 1!) in JavaScript
  • Sortierung: ö wird oft nach z sortiert
  • Groß/Klein: ß → SS, nicht ß
  • Normalisierung: é kann 1 oder 2 Codepoints sein
  • Datenbank: utf8mb4 für Emojis (nicht utf8!)

Test-Ziele:

  • Datenbank: Speichert alle Unicode-Zeichen
  • HTML: Rendert korrekt (UTF-8 Meta-Tag)
  • JSON: Escaped korrekt
  • Suche: Findet "Müller" auch bei Eingabe "Muller"
  • Sortierung: Nach Sprachregeln (ö nach o)

Tools:

  • Big List of Naughty Strings: Kuratierte Test-Strings
  • Unicode Table: Alle Unicode-Zeichen
  • Emoji-Test: Spezielle Emoji-Testreihen

Zusammenfassung

Die wichtigsten Punkte

  • Testdaten: Künstlich generierte Daten für Tests und Entwicklung
  • DSGVO: Nie echte Daten für Tests – nur synthetische Daten
  • Seed-Werte: Für reproduzierbare Tests unverzichtbar
  • Faker: Standard-Bibliothek mit 200+ Datentypen
  • Beziehungen: Foreign Keys müssen gültig sein
  • Unicode: Sonderzeichen und Emojis testen
  • Edge-Cases: Leere Werte, Grenzwerte, Sonderzeichen
  • Export: CSV, JSON, SQL, XML, YAML für alle Tools
  • Unser Tool: Realistische Daten mit einem Klick

Weitere Tools

JSON Editor

JSON formatieren, validieren und visualisieren mit Live-Editor.

Zum Tool
Timestamp Converter

Unix-Zeitstempel in lesbare Daten umwandeln und umgekehrt.

Zum Tool
Hash Generator

MD5, SHA-1, SHA-256 und SHA-512 für Text und Dateien.

Zum Tool
UUID Generator

Generiere UUIDs v1, v4, v5 und v7 für deine Anwendungen.

Zum Tool