Datengenerierung
Datengenerierung
Generiere realistische Testdaten: Namen, E-Mails, Adressen, Telefonnummern, IBANs, UUIDs, Passwörter und mehr. Mit CSV, JSON, SQL und XML-Export.
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.
- 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.
- 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
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
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
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
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
Kontakt
- E-Mail: Realistisch formatiert
- Telefon: Deutsche Nummern
- Mobil: Handynummern
- Website: Beispiel-URLs
Adresse
- Straße: Deutsche Straßennamen
- Hausnummer: Realistische Werte
- PLZ: Deutsche Postleitzahlen
- Stadt: Deutsche Großstädte
- Land: Standard: Deutschland
Finanzen & Technik
- IBAN: Format DE + 20 Zeichen
- Kreditkarte: 16-stellig, Luhn-konform
- UUID: v4 Format
- Passwort: Konfigurierbar
- IP-Adresse: v4 privat/öffentlich
4. Geschichte der Testdaten-Generierung
Von handgeschriebenen Beispieldaten zu intelligenten Generator-Bibliotheken.
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.
Datenbank-Tests
Mit dem Aufstieg relationaler Datenbanken (Oracle, DB2) wurde das Testen komplexer. Entwickler begannen, SQL-Skripte zur Massengenerierung zu schreiben.
Ruby Faker
Die Bibliothek Faker wird für Ruby veröffentlicht. Erstmals können realistische Namen, Adressen und Telefonnummern automatisch generiert werden – ein Meilenstein.
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.
Mockaroo & Online-Tools
Webbasierte Tools wie Mockaroo und Generatedata.com werden populär. Nutzer können Testdaten ohne Programmierung im Browser generieren.
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.
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
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:
Best Practice: Von Anfang an synthetische Testdaten verwenden – nie echte Daten kopieren!
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:
Python-Beispiel:
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.
Die Begriffe werden oft synonym verwendet, aber es gibt einen wichtigen Unterschied:
| Aspekt | Testdaten | Synthetische Daten |
|---|---|---|
| Zweck | Software testen | Echte Daten ersetzen |
| Realismus | Ausreichend | Sehr hoch |
| Generierung | Faker-Bibliotheken | KI / ML-Modelle |
| Verwendung | Tests, Dev | Produktion, ML, DSGVO |
| Komplexität | Einfach | Komplex, 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.
Die optimale Anzahl hängt vom Testziel ab:
| Testart | Anzahl | Zweck |
|---|---|---|
| Unit-Tests | 1-10 | Einzelne Funktionen |
| Integration | 10-100 | Zusammenspiel |
| E2E | 100-1000 | Komplette Workflows |
| Load-Tests | 1M+ | Performance |
| ML-Training | 10K+ | 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).
Die Begriffe kommen aus dem Test-Driven Development und haben unterschiedliche Bedeutungen:
| Typ | Zweck | Verhalten |
|---|---|---|
| Dummy | Platzhalter | Wird nie verwendet |
| Stub | Feste Antwort | Gibt immer dasselbe zurück |
| Spy | Aufrufe beobachten | Zeichnet Aufrufe auf |
| Mock | Erwartungen prüfen | Verifiziert Interaktionen |
| Fake | Vereinfachte Implementierung | Funktioniert "richtig" |
Beispiele:
Dummy: Platzhalter, der nur für die Signatur gebraucht wird.
Stub: Gibt immer denselben Wert zurück.
Mock: Prüft, ob Methoden aufgerufen wurden.
Fake: Echte Implementierung, aber vereinfacht.
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
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
Realistische Testdaten brauchen oft Beziehungen zwischen Tabellen (1:n, n:m):
Szenario: Kunden mit Bestellungen mit Produkten
Ansatz 1: Sequenzielle Generierung
Ansatz 2: Factory-Muster (Python)
Ansatz 3: Konsistente IDs
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:
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:
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 formatieren, validieren und visualisieren mit Live-Editor.
Zum ToolUnix-Zeitstempel in lesbare Daten umwandeln und umgekehrt.
Zum ToolMD5, SHA-1, SHA-256 und SHA-512 für Text und Dateien.
Zum ToolGeneriere UUIDs v1, v4, v5 und v7 für deine Anwendungen.
Zum Tool