Ein Fake-Adressgenerator erzeugt Adressen, die strukturell korrekt aussehen, aber keinen realen Haushalt, kein Unternehmen und kein Postfach beschreiben. Genau diese Unterscheidung macht das Produkt aus. Die Ausgabe ist ein Fixture für Formulartests, Datenbank-Seeding, Screenshot-Mockups und Demo-Umgebungen. Sie ist kein Weg, eine Person zu erreichen, und kein Ersatz für einen Adressverifizierungsdienst. Jede Adresse, die diese Seite zurückgibt, wird aus synthetischen Fixtures zusammengesetzt.
Das Nützliche an einer generierten Adresse ist ihre Form: die Zeilenreihenfolge, das Muster der Postleitzahl, der Bundesstaats- oder Provinzcode, der Zeichensatz. Genau diese Dinge bringen Formulare in der Produktion zum Scheitern. Eine generierte Adresse, die sie ignoriert, ist schlimmer als gar kein Fixture, weil sie Ihr Formular besteht und dann bei Live-Daten versagt – oder Ihr Formular aus einem Grund ablehnt, der gar nicht auftreten kann. Dieser Leitfaden behandelt, was ein Generator richtig machen muss, wie man ihn seedet und wie synthetische Daten an Orte gelangen, an die sie niemals gehören.
Was eine synthetische Adresse tatsächlich enthält
Jedes Ergebnis wird aus einer Länderdefinition, einer von fünf Stadt-Fixtures dieses Landes, einer Straßennamenliste, einer Hausnummer und einem Postleitzahlenmuster zusammengesetzt. Der Generator wählt ein Land, wählt darin ein Stadt-Fixture, baut eine Straßenzeile in der lokalen Reihenfolge und füllt die Postleitzahl aus dem Muster. Nichts wird aus einer Lieferdatenbank entnommen, und nichts wird von einem echten Briefkasten kopiert.
Das ergibt zwei Garantien und zwei Nicht-Garantien. Garantiert: Das Format folgt den Konventionen des Landes, und derselbe Seed liefert dieselbe Adresse. Nicht garantiert: dass die Straße unter dieser Nummer existiert oder dass eine nicht-US-Postleitzahl zu einem realen Zustellgebiet gehört. Für US-ZIPs gibt es eine separate Existenzprüfung gegen einen Datensatz mit 40.979 Zeilen im Postleitzahlen-Checker. Außerhalb der Vereinigten Staaten ist die Prüfung rein strukturell, und die Seite sagt das auch, statt mehr zu suggerieren.
- Format: bei jeder Ausgabe korrekt für das gewählte Land
- Reproduzierbarkeit: deterministisch für einen gegebenen Seed
- Existenz: nur US-ZIP-Lookup, gegen 40.979 Zeilen
- Zustellbarkeit: nie zugesagt und nie durch ein grünes Häkchen impliziert
- Personenbezogene Daten: keine, da keine reale Person repräsentiert wird
Warum Formatkorrektheit auch bei Wegwerfdaten zählt
Adressformulare testen selten die Adresse. Sie testen die Validierungsschicht, die Maskierung, die Längenbegrenzungen, die Abhängigkeit von Land zu Region und den Serializer, der die Zeile in die Datenbank schreibt. Ein Fixture, das bereits fehlerhaft ist, verdeckt all das. Wenn Ihr kanadisches Fixture „123 Main St, Toronto, ON 12345“ lautet, akzeptiert das Formular ein Muster, das eine echte kanadische Postleitzahl niemals erfüllen kann, und der Bug geht in Produktion.
Der umgekehrte Fehler ist ebenso häufig. Teams schreiben von Hand ein Fixture, das echt aussieht, aber für das Land falsch ist, und bauen dann einen Workaround in den Validator ein, damit er es akzeptiert. Ein halbes Jahr später ist der Workaround tragend, und niemand erinnert sich, warum das deutsche Postleitzahlenfeld Buchstaben erlaubt. Generierte Daten, die den veröffentlichten Mustern folgen, beseitigen beide Arten der Drift – solange der Generator selbst ehrlich darüber ist, was er weiß.
Wo synthetische Adressen das richtige Werkzeug sind
Synthetische Adressen gehören in jede Schicht unterhalb der Produktion: Unit-Tests für Parser und Validatoren, Integrationstests, die Adresszeilen schreiben und lesen, End-to-End-Tests, die ein Checkout-Formular ausfüllen, Lasttests, die Volumen brauchen, ohne einen echten Kunden zu berühren, und lokalisierte Screenshot-Läufe für eine Marketingseite. Sie sind auch für Fuzzing nützlich, weil man gezielt Werte an der Grenze eines Längenlimits oder eines Zeichensatzes erzeugen kann.
Sie sind das falsche Werkzeug für alles, was von einem realen Zustellpunkt abhängt. Verwenden Sie sie nicht für Betrugsprüfungen, Identitätsverifizierung, Sperrumgehung, Account-Farming, Bewertungsmanipulation oder das End-to-End-Testen einer Versandintegration. Eine synthetische Adresse hat keinen Briefkasten, daher wird jeder Schritt scheitern, der einen tatsächlichen Carrier-Scan erfordert, und die Verwendung generierter Identitäten, um Waren oder Dienstleistungen zu erlangen, ist Betrug – unabhängig davon, wie die Daten erzeugt wurden.
- Gut: Unit-Tests für Validatoren, Staging-Seeds, E2E-Formularausfüllung, Lastvolumen
- Gut: Lokalisierungs-QA, bei der jedes Locale eine plausible lokale Adresse braucht
- Gut: Screenshot- und Demo-Umgebungen, die niemals einen Kunden zeigen dürfen
- Schlecht: KYC, Betrugsbewertung, Sanktionsprüfung oder alles, was eine Zustellung erwartet
- Schlecht: Produktionsanalysen, weil generierte Zeilen die Conversion-Berechnung verfälschen
Abdeckung: 38 Länder mit je fünf Stadt-Fixtures
Der Generator deckt 38 Länder ab. Jedes Land enthält fünf Stadt-Fixtures, insgesamt also 190 Stadtdefinitionen, und jede Stadt kennt ihren Regionscode, ihr Postleitzahlenmuster und die lokalen Straßenkonventionen. Der Schwerpunkt liegt auf Märkten, in denen Adressformulare tatsächlich gebaut werden: Nordamerika, West- und Nordeuropa sowie die größeren Märkte im asiatisch-pazifischen Raum und in Lateinamerika.
Zwei Länder im Set haben überhaupt keine Postleitzahl: Hongkong und die Vereinigten Arabischen Emirate. Der Generator lässt das Feld für beide leer, statt eine Nummer zu erfinden. Das ist das korrekte Verhalten. Ein Formular, das die Postleitzahl in diesen Ländern als Pflichtfeld markiert, ist fehlerhaft, und ein Fixture, das einen Fake-Code liefert, verdeckt den Defekt, bis ein echter Nutzer darauf stößt.
| Region | Länder im Fixture-Set | Anzahl | Postleitzahl |
|---|---|---|---|
| Nordamerika | Vereinigte Staaten, Kanada, Mexiko | 3 | Ja, alle drei |
| Westeuropa | Vereinigtes Königreich, Irland, Frankreich, Deutschland, Niederlande, Belgien, Schweiz, Österreich | 8 | Ja, alle acht |
| Nordeuropa | Schweden, Norwegen, Dänemark, Finnland | 4 | Ja, alle vier |
| Süd- und Osteuropa | Spanien, Portugal, Italien, Polen, Tschechien, Griechenland, Rumänien, Ungarn | 8 | Ja, alle acht |
| Asien-Pazifik | Japan, Südkorea, Singapur, Australien, Neuseeland, Indien, China, Hongkong | 8 | Nein für Hongkong |
| Lateinamerika | Brasilien, Argentinien, Chile, Kolumbien, Peru | 5 | Ja, alle fünf |
| Naher Osten und Afrika | Vereinigte Arabische Emirate, Südafrika | 2 | Nein für die VAE |
| Gesamt | 38 Länder, je fünf Stadt-Fixtures | 38 | Zwei ohne Code |
Feldreihenfolge und Postleitzahlenmuster zum Nachprüfen
Ein Generator ist nur so gut wie seine Ländertabelle. Die folgenden Muster sind diejenigen, die am häufigsten in eine einzige US-förmige Vorlage gepresst werden. Beachten Sie, dass Japan die Reihenfolge vollständig umkehrt, dass die Niederlande Buchstaben nach die Ziffern setzen und dass Brasilien und Japan beide einen Bindestrich verwenden, der konventionell und nicht strukturell bedingt ist.
Postleitzahlen müssen als Strings gespeichert werden. Deutschland, Frankreich, Spanien, Italien und Polen vergeben allesamt Codes mit führenden Nullen, und eine Integer-Spalte macht aus 01067 stillschweigend 1067. Dasselbe gilt für australische und brasilianische Codes. Wenn Ihr Schema eine numerische Postleitzahlenspalte hat, wird das Fixture sie in dem Moment aufdecken, in dem Sie eine deutsche Adresse seeden.
| Land | Zeilenreihenfolge | Postleitzahlenmuster | Hinweis zur Speicherung |
|---|---|---|---|
| Vereinigte Staaten | Straße, Stadt, ST ZIP | 5 Ziffern oder 12345-6789 | Bindestrich bei ZIP+4 beibehalten |
| Kanada | Straße, Stadt, ST A1A 1A1 | Buchstabe Ziffer Buchstabe, Leerzeichen, Ziffer Buchstabe Ziffer | D, F, I, O, Q, U als erster Buchstabe nicht zulassen |
| Vereinigtes Königreich | Straße, Stadt, A9A 9AA | 2-4 Zeichen außen, Leerzeichen, 3 Zeichen innen | Nur ein Leerzeichen; Großbuchstaben |
| Deutschland | Straße, 5-stellige Stadt | 5 Ziffern | Führende Nullen sind signifikant |
| Niederlande | Straße, 4-stellige AB Stadt | 4 Ziffern, Leerzeichen, 2 Großbuchstaben | Die Buchstaben gehören zum Code |
| Japan | Postleitzahl, Präfektur, Stadt, Straße | 3 Ziffern, Bindestrich, 4 Ziffern | Größte Einheit zuerst |
| Brasilien | Straße, Stadt - ST, 12345-678 | 8 Ziffern, Bindestrich nach der fünften | Bindestrich ist konventionell |
| Hongkong | Straße, Bezirk, Hongkong | Keine | Niemals einen Code verlangen |
| Vereinigte Arabische Emirate | Straße, Stadt, Emirat | Keine | P.O. Box ist die übliche Konvention |
Seeding: dieselbe Fake-Adresse zweimal zurückbekommen
Ein Generator, der bei jedem Aufruf eine andere Adresse liefert, ist kein Fixture, sondern Rauschen. Geseedete Generierung legt eine Eingabe fest, sodass die Ausgabesequenz über Maschinen und Läufe hinweg stabil bleibt. Übergeben Sie den Seed in Tests explizit, protokollieren Sie ihn mit jedem generierten Datensatz und behandeln Sie eine Änderung des Seeds als Änderung des Fixtures, die überprüft werden muss.
Das praktische Muster besteht darin, pro Entität Seeds aus einem übergeordneten Seed abzuleiten, zum Beispiel einen Hash aus Seed und Datensatzindex. Das hält den Datensatz stabil und erzeugt trotzdem unterschiedliche Werte pro Zeile. Es macht Fehler außerdem reproduzierbar: Wenn CI eine fehlerhafte Adresse meldet, reichen Seed plus Index, um genau diese Zeile erneut zu erzeugen. Leiten Sie den Seed niemals aus der Uhr oder aus einem Zufallsaufruf ab, denn so wird aus einem flaky Test ein dauerhaftes Rätsel.
- Den Seed neben dem generierten Datensatz speichern, nicht in einem Kommentar
- Datensatz-Seeds als hash(seed, index) ableiten, damit Reihenfolgeänderungen sichtbar bleiben
- In Tests niemals mit Date.now() oder der Zufallsquelle des Prozesses seeden
- Den ersten und letzten Datensatz jedes Sets als Snapshot sichern, nicht alle
- Große JSON-Blobs mit Fake-Adressen lieber neu generieren als committen
Strukturelle Validierung versus Existenzprüfung
Das sind zwei verschiedene Aussagen, und sie zu vermischen ist der häufigste Weg, auf dem eine Testsuite ihre Eigentümer belügt. Eine strukturelle Prüfung beantwortet die Frage „Entspricht dieser String dem Muster des Landes?“. Eine Existenzprüfung beantwortet die Frage „Kommt dieser Code in einem Referenzdatensatz vor?“. Der Postleitzahlen-Checker auf dieser Seite erledigt das Erste für jedes Land und das Zweite nur für US-ZIPs, wo er 40.979 Zeilen konsultiert.
Ein struktureller Durchlauf sagt Ihnen, dass das Formular einen wohlgeformten Wert nicht ablehnen wird. Er sagt Ihnen nichts darüber, ob ein Carrier dorthin zustellen kann, ob die Hausnummer für diese Straße im gültigen Bereich liegt oder ob die Stadt zur Postleitzahl passt. Dafür braucht es Postreferenzdaten, die diese Seite nicht mitliefert. Formulieren Sie Ihre Assertions passend zu der Prüfung, die Sie tatsächlich durchführen, sonst versprechen die Testnamen jahrelang zu viel.
| Prüfung | Was ein Bestehen beweist | Was es nicht beweist |
|---|---|---|
| Übereinstimmung mit dem Ländermuster | Der Wert ist für dieses Land wohlgeformt | Dass der Code vergeben ist |
| US-ZIP-Existenz (40.979 Zeilen) | Die 5-stellige ZIP kommt im Datensatz vor | Dass Straße oder Stadt passen |
| Pflichtfeldprüfung | Das Formular wird abgeschickt | Dass die Adresse kohärent ist |
| Parser-Roundtrip | Der String lässt sich zerlegen und wieder zusammensetzen | Dass die Zerlegung semantisch richtig ist |
| Ausgabe des Adressgenerators | Das Fixture hat die richtige Form | Irgendetwas über die reale Welt |
Felder, die dieser Generator bewusst nicht erzeugt
Die Seite erzeugt keine Sozialversicherungsnummern, Zahlungskartennummern, IMEI- oder IMSI-Werte, Bluetooth-Adressen oder Geräteseriennummern. Das ist eine bewusste Grenze, kein fehlendes Feature. Diese Identifikatoren tragen Prüfsummen, Vergaberegister oder rechtliche Beschränkungen, und ein plausibel aussehender generierter Wert ist weit gefährlicher als ein offensichtlich falscher, weil er einen naiven Validator bestehen und in einem Screenshot, einem Ticket oder einem Commit landen kann.
Dieselbe Grenze gilt für Kontaktdaten. Generierte E-Mail-Adressen verwenden immer die reservierte Domain example.test, die niemals zu einem echten Postfach auflösen kann. Generierte Telefonnummern sind auf den NANP-Block 555-0100 bis 555-0199 in den USA und Kanada beschränkt, den für fiktive Nutzung reservierten Bereich. Wenn ein Workflow eine Kartennummer oder eine Steuer-ID benötigt, verwenden Sie die offiziellen Testwerte, die der Prozessor oder die Steuerbehörde veröffentlicht, und niemals einen aus einem Generator gescrapten Wert.
- Nicht generiert: SSN, ITIN, EIN oder eine nationale ID
- Nicht generiert: Kredit- oder Debitkartennummern, auch nicht Luhn-gültige
- Nicht generiert: IMEI, IMSI, MEID oder Bluetooth-Geräteadressen
- Nicht generiert: Seriennummern, Kfz-Kennzeichen oder Passnummern
- Generierte E-Mails: nur example.test, eine reservierte, nicht auflösende Domain
- Generierte Telefonnummern: nur US und Kanada NANP 555-0100 bis 555-0199
Fragen
- Nein. Jede Adresse wird aus synthetischen Fixtures zusammengesetzt und beschreibt keinen realen Zustellpunkt. Die Seite erhebt keinen Anspruch auf Zustellbarkeit, und nur US-ZIPs erhalten eine Existenzprüfung gegen einen Datensatz mit 40.979 Zeilen.
- 38 Länder mit je fünf Stadt-Fixtures. Hongkong und die Vereinigten Arabischen Emirate sind enthalten, liefern aber eine leere Postleitzahl, da keines der beiden Länder Postleitzahlen verwendet.
- Ja. Die Generierung ist geseedet, sodass derselbe Seed und Index auf jeder Maschine dieselbe Adresse liefern. Speichern Sie den Seed mit dem Datensatz, damit Fehler reproduzierbar bleiben.
- Nein. Sie sind Test-Fixtures. Generierte Zeilen in Produktionsanalysen oder Kundentabellen verfälschen das Reporting und können jeden irreführen, der sie später für echte Datensätze hält.
- Diese Identifikatoren sind reguliert, mit Prüfsummen versehen oder beides, und ein plausibler Fake kann an einer naiven Validierung vorbei in Screenshots und Tickets gelangen. Verwenden Sie stattdessen offizielle Testwerte vom Prozessor oder von der Behörde.
Sind die Adressen echt?+
Wie viele Länder deckt der Generator ab?+
Kann ich dieselbe Adresse zweimal bekommen?+
Kann ich generierte Adressen in der Produktion verwenden?+
Warum weigert sich das Tool, SSNs oder Kartennummern zu generieren?+
Beispiele sind synthetisch. Verwenden Sie eine generierte Adresse nicht für Identitätsprüfungen, Kontoregistrierungen oder Lieferungen.