Menü

Testdaten über Länder skalieren: Invarianten und eine Ausnahmeliste

Testdaten über Länder skalieren gelingt, wenn wenige Invarianten überall gelten und jede Abweichung als benannte Ausnahme aufgeschrieben ist.

Veröffentlicht am

  • Testdaten
  • Erzeugen
  • Länderdaten

Testdaten über Länder skalieren wird üblicherweise dadurch versucht, dass man demselben Erzeuger weitere Länder hinzufügt. Das funktioniert eine Weile und hört dann auf, weil die Unterschiede zwischen Ländern keine Varianten einer Vorlage sind; manche widersprechen ihr.

Der Ausweg besteht darin, festzulegen, was für jedes Land gilt, und alles andere als ausdrückliche Ausnahme zu behandeln. Dieser Beitrag behandelt diese Trennung, warum eine erzeugte Grundgesamtheit reproduzierbar sein muss und wie Länder so ausgewählt werden, dass die schwierigen Fälle darin vorkommen und nicht nur die leichten.

Was gehört in die Menge der Invarianten?

Eine Invariante ist eine Eigenschaft, die für jedes Land der Menge ohne Einschränkung gilt. Sie verdient diesen Status dadurch, dass sie für das Datenmodell gilt und nicht für ein bestimmtes Land.

Typische Mitglieder sind strukturell: jedes Land hat eine stabile Kennung, jede Kennung verweist auf genau ein Land, jedes Land trägt einen Anzeigenamen und einen Code, und kein Feld ist für ein Land erforderlich, dessen System es nicht besitzt. Diese Aussagen sind kurz, prüfbar und überall wahr.

Der Test, ob etwas tatsächlich invariant ist, besteht im Versuch, ein Gegenbeispiel zu finden. Die meisten Eigenschaften überstehen ihn, und die wenigen, die ihn nicht überstehen, sind genau die, die sonst über die ganze Grundgesamtheit erzwungen würden und eine Reihe von Fehlschlägen erzeugen, die sich am Ende als Fehler des Modells und nicht der Daten erweisen.

Halten Sie die Menge der Invarianten klein. Eine lange Liste von Invarianten ist meist eine Liste von Ausnahmen in Verkleidung, und es wird unmöglich, eine echte Regression von einem Land zu unterscheiden, das sich normal verhält.

Wie sieht eine Ausnahmeliste aus?

Eine Ausnahme ist eine benannte, dokumentierte Abweichung von einer Invariante, begrenzt auf bestimmte Länder und mit einer Begründung versehen.

Element Warum es nötig ist
Das betroffene Land oder die betroffenen Länder Damit die Liste abfragbar ist statt gelesen werden zu müssen
Die Invariante, von der abgewichen wird Damit die Abweichung eindeutig ist
Die Begründung Damit ein späterer Leser beurteilen kann, ob sie noch zutrifft
Was der Erzeuger stattdessen tun soll Damit die Abweichung ausführbar ist und nicht nur beratend

Die letzte Zeile trennt eine Ausnahmeliste von einer Beschwerdeliste. Eine Ausnahme, die nur besagt, ein Land sei ungewöhnlich, kann von nichts angewendet werden; der Erzeuger ignoriert sie daher oder behandelt das Land an anderer Stelle als Sonderfall, und die Liste gerät aus dem Tritt mit dem Code.

Gilt eine Ausnahme für eine Gruppe von Ländern, schreiben Sie sie einmal für das gemeinsame Merkmal und verweisen Sie von dort auf die Länder. Die Gruppierung nach Merkmal statt nach Codeliste hält die Aussage bedeutsam, wenn ein Land zur Menge hinzukommt oder aus ihr entfernt wird.

Warum muss das Erzeugen reproduzierbar sein?

Weil eine nicht reproduzierbare Grundgesamtheit nicht zu untersuchen ist. Wenn ein Fehlschlag auftritt, lautet die erste Frage, ob sich die Daten oder der Code geändert haben, und ein Erzeuger, der bei jedem Lauf eine andere Grundgesamtheit liefert, nimmt die Möglichkeit, sie zu beantworten.

Reproduzierbarkeit bedeutet, dass eine gegebene Eingabe eine identische Ausgabe erzeugt, einschließlich der Reihenfolge der Datensätze und der Werte in ihnen. Das erfordert einen festen Startpunkt für die zufälligen Entscheidungen und eine Regel, die die Entscheidungsfolge stabil hält, wenn die Ländermenge wächst, sodass ein zusätzliches Land die Daten aller anderen nicht neu mischt.

Die zweite Anforderung wird leicht übersehen. Ein Erzeuger, der Werte aus einer langen, an die Gesamtzahl gebundenen Folge zieht, liefert eine völlig andere Grundgesamtheit, sobald ein Land hinzukommt, und zerstört damit die Möglichkeit, zwei Läufe zu vergleichen. Ein Startwert je Land oder je Land und Feld hält jeden Eintrag stabil und lässt die Grundgesamtheit zugleich erweiterbar.

Wie sollen Länder ausgewählt werden?

Bewusst und nicht gleichverteilt. Eine Grundgesamtheit, die jedes Land mit gleicher Wahrscheinlichkeit zieht, verwendet den größten Teil ihres Umfangs auf die Mitte der Verteilung und enthält fast keinen der Fälle, um derentwillen die Suite existiert.

Geschichtete Auswahl ist die praktische Form: Teilen Sie die Menge in Gruppen, die die wichtigen Merkmale gemeinsam haben, und ziehen Sie dann aus jeder Gruppe statt aus dem Ganzen. Die Gruppen sollten den Achsen folgen, entlang derer das Produkt tatsächlich variiert – ob ein Feld existiert, ob Daten dünn oder vollständig sind, ob ein Land ein abhängiges Gebiet oder ein vollständig beschriebener Eintrag ist, ob die Sprache vom üblichen Standard abweicht.

Füllen Sie dann die schwierigen Zellen absichtlich, statt zu hoffen, sie zu treffen. Eine Grundgesamtheit mit einem Land ohne Postleitzahlensystem, einem kleinen Territorium und einem Land, dessen Name sich geändert hat, ist nützlicher als eine mehrfach größere, die nichts davon enthält.

Achse Was das Variieren prüft
Vorhandensein von Feldern Codepfade für ein Feld, das nicht gilt
Datendichte Unvollständige Einträge und unbekannte Zustände
Art der Einheit Abhängige Gebiete und Sondercodes
Sprache des Anzeigenamens Sortierung und Normalisierung

Entlang aller Achsen zugleich auszuwählen, erzeugt eine unbrauchbare Matrix; wählen Sie deshalb die Achsen, die für die betreffende Suite zählen, und benennen Sie, welche ausgelassen wurden. Ein unausgesprochenes Auslassen liest sich als Abdeckung.

Für Entwickler: Invarianten und Ausnahmen prüfen

Zwei Prüfebenen halten die Grundgesamtheit ehrlich. Die eine prüft die Invarianten über jeden erzeugten Datensatz und fängt versehentliche Sonderbehandlung ab. Die andere prüft, dass jede dokumentierte Ausnahme tatsächlich erzeugt wird, und fängt eine Ausnahmeliste ab, die sich vom Erzeuger entfernt hat.

Die zweite Ebene ist die, die übersprungen wird, und sie ist die, die den stillen Fehler erkennt, bei dem ein Land nicht mehr so erzeugt wird, wie die Dokumentation behauptet. Prüfen Sie die Ausnahme nach Namen und nach erwarteter Gestalt, damit eine Änderung am Erzeuger von einer Änderung an der Liste begleitet werden muss.

Führen Sie die Zustände aus der Checkliste zur Länderdatenabdeckung in die Erzeugungsregeln ein, statt sie als Bericht zu behandeln, damit ein Land, dessen Feld nicht gilt, einen Datensatz erzeugt, der das aussagt, und nicht einen, der unfertig aussieht. Für die Codeschicht darunter bietet der Leitfaden zu den ISO-Länder- und Unterteilungscodes den passenden Hintergrund, und das Länder- und Regionenverzeichnis zeigt die Art von Grundgesamtheit, der diese Erzeugung ähneln soll.

Die Invariantenliste, die Ausnahmeliste und die Auswahlachsen in diesem Beitrag sind veranschaulichende Struktur und keine Spezifikation. Sie beschreiben keine reale Testsuite, keinen realen Datensatz und keine Menge von Ländern, die zu einer Organisation gehört, und sie sollten angepasst statt übernommen werden.

Nächste Schritte

Schreiben Sie Ihre Invarianten auf eine Seite und Ihre Ausnahmen auf eine andere und prüfen Sie dann, welche davon der aktuelle Erzeuger tatsächlich einhält. Ein Eintrag, der gealtert ist, ist nicht dasselbe Problem wie ein Eintrag, der nie vollständig war, und der Leitfaden zur Aktualität von Länderdaten behandelt, wie die beiden unterschiedlich zu behandeln sind.

Weiterlesen

Artikel zu Formate für Adress- und Identitätsdaten in 86 Ländern