Kernaussagen
- Verwenden Sie feste Test-Fixtures für stabile Assertions und Zufallswerte mit festem Seed für die Erkundung
- Protokollieren Sie den Seed für jeden generierten Fehler
- Trennen Sie normale, Grenz- und absichtlich ungültige Datensätze
- Verwenden Sie die E-Mail-Adresse example.com und markieren Sie Datensätze als synthetisch
Autorenschaft und Prüfung
Redaktionsgrundsätze- Verfasst von
- Redaktionsteam des Zufallsadressengenerators
- Geprüft von
- Datenmodellierungs- und QA-Überprüfungsteam
- Letzte wesentliche Aktualisierung
- Deterministische Samen, Normal-Grenze-ungültige Gruppierung, Herkunft und Produktionsisolation hinzugefügt.
Feste und zufällige Test-Fixtures erfüllen unterschiedliche Aufgaben
Feste Test-Fixtures eignen sich für Snapshots, Verträge und Migrationen. Die zufällige Generierung erweitert die Kombinationen, aber ohne einen Startwert führt sie zu Fehlschlägen, die niemand wiederholen kann.
Halten Sie einen kleinen überprüften Regressionssatz und einen Generator bereit, der Startwert, Land und Szenario akzeptiert. Fördern Sie nützliche Fehler in feste Test-Fixtures.
| Test-Fixture | Zweck | Beispiel |
|---|---|---|
| Normal | Beweisen Sie den Primärfluss | Formatorientiert und regional einheitlich |
| Grenze | Legen Sie Länge und Kodierung offen | Unicode, lange Straße, führende Null |
| Ungültig | Erholung nach körperlicher Betätigung | Stadt und Postleitzahl stimmen nicht überein |
| Fehler | Resilienz trainieren | Suchzeitüberschreitung und erneut versuchen |
Erkennbar, ohne das Format zu sprengen
Verwenden Sie reservierte Domänen wie example.com, fügen Sie dataPurpose und fixtureId hinzu und protokollieren Sie fixtureId anstelle einer vollständigen Adresse. Halten Sie die Postform realistisch, wenn Sie einen Parser testen.
Kopieren Sie niemals einen Kunden und ersetzen Sie nur den Namen. Andere Felder können weiterhin eine Person identifizieren oder Benachrichtigungen senden.
{
"fixtureId": "ca-boundary-003",
"dataPurpose": "synthetic-test",
"seed": 7319,
"countryCode": "CA",
"email": "qa-7319@example.com"
}Zufällig bedeutet nicht gleichbedeutend mit Inkonsistenz
Definieren Sie Invarianten: Das Länderformat stimmt überein, regionale Felder stammen aus einem Tupel, Postleitzahlen bleiben Text und optionale Zeilen bleiben leer statt N/A. Eigenschaftstests können diese an vielen Samen überprüfen.
Eine ungültige Test-Fixture kann eine Invariante beschädigen, sollte aber expectedError deklarieren, damit niemand sie als normale Daten behandelt.
- Jeder Samen ist wiederholbar
- Normale regionale Tupel bleiben konsistent
- Ungültige Fixtures verstoßen gegen eine benannte Regel
- Die Ausgabe zeichnet die Referenzdatenversion auf
Vermeiden Sie Produktionsnebenwirkungen
Testen Sie E-Mail-, SMS-, Druck-, Erfüllungs- und Zahlungsintegrationen über Sandboxes oder ausgehende Blöcke. Das Schreiben eines Tests an einer Adresse verhindert keinen echten Logistikanruf.
CI sollte Umgebungs- und Anmeldeinformationstypen überprüfen und synthetische Testdatensätze ablehnen, die in Produktionswarteschlangen gelangen.
Verwandeln Sie Misserfolge in Regressionsvorteile
Behalten Sie den minimalen Fehlerdatensatz, den Startwert, die Datenversion und die Behauptung bei. Deduplizieren Sie regelmäßig, aber regenerieren Sie stabile Fixtures nicht nur, um sie frisch aussehen zu lassen.
Geben Sie jedem festen Gerät einen Eigentümer, ein Szenario, ein erwartetes Ergebnis, einen Erstellungsgrund und ein Überprüfungsdatum. Eine große JSON-Datei, die das Verhalten, das sie schützt, nicht erklärt, wird schnell zu einem Haufen, dem niemand vertraut und den niemand zu löschen wagt. Identifizieren Sie bei der Überprüfung doppelte Abdeckungen und Regeln, für die das Produkt nicht mehr gilt.
Machen Sie keine UI-Snapshots von der uneingeschränkten Zufallsausgabe. Verwenden Sie einen expliziten festen Datensatz für Snapshots und lassen Sie Zufallstests Eigenschaften und Invarianten bestätigen. Diese Aufteilung verhindert bedeutungslose Snapshot-Abwanderungen, wenn sich eine generierte Straße ändert, und sorgt gleichzeitig für eine breite Erkundungsabdeckung.
Behandeln Sie ein Referenzdaten-Upgrade wie eine Abhängigkeitsänderung. Führen Sie den alten Seed-Satz mit dem neuen Snapshot aus, überprüfen Sie absichtliche Unterschiede und bewahren Sie beide Versionen lange genug auf, um zu erklären, warum sich ein zuvor reproduzierbarer Datensatz geändert hat.
Verfolgen Sie die Abdeckung nach Szenario, nicht nach der reinen Anzahl der generierten Zeilen. Zehntausend gewöhnliche Adressen ersetzen nicht eine absichtliche Eingabe einer fehlenden Einheit, einer Postleitzahl mit führender Null, eines überlangen Gebäudenamens oder einer nicht unterstützten Region. Mithilfe einer kompakten Abdeckungsmatrix können Prüfer erkennen, welche Regel jedes Spiel ausübt und wo der Generator noch tote Winkel aufweist.
- Weisen Sie einen Besitzer und ein geschütztes Verhalten zu
- Überprüfen Sie doppelte und veraltete Fälle
- Verwenden Sie feste Fixtures für Schnappschüsse und zufällige Fixtures für Eigenschaften
- Explizite Upgrades der Versionsreferenzdaten
Häufige Fragen
Sollten Testadressen fest oder zufällig sein?
Verwenden Sie beides: feste Fixtures für eine stabile Regression und Seed-Generierung für breitere Kombinationen.
Warum example.com für Test-E-Mails verwenden?
Es dient der Dokumentation und dem Testen und verringert so das Risiko, einen echten Dritten zu kontaktieren.
Können synthetische Datensätze in der Produktion ausgeführt werden?
Nicht standardmäßig. Sie können immer noch echte E-Mail-, Erfüllungs-, Zahlungs- oder Analyse-Nebenwirkungen auslösen.
