Testkarten nach Kartennetzwerk auszuwählen ist mehr als eine Zuordnung von Marke zu Ziffernfolge. Jedes Netzwerk hat einen eigenen Nummerierungsplan mit eigenen Präfixbereichen, eigenen Längen und einer eigenen Entscheidung darüber, wie viele Stellen der Sicherheitscode hat. Wer diese Unterschiede kennt, kann Testfälle entwerfen, die tatsächlich verschiedene Codepfade erreichen; wer sie ignoriert, testet dieselbe Erkennungslogik mehrfach und glaubt, vier Fälle abgedeckt zu haben.
Dieser Beitrag stellt die veröffentlichten Bereiche zusammen, erklärt, wie man daraus eine Testmatrix mit echten Unterschieden baut, und benennt die Grenzen dieser Zuordnung.
Jedes Netzwerk hat seinen eigenen Nummerierungsplan
Ein Nummerierungsplan ist die Gesamtheit der Regeln, die festlegen, welche Zeichenfolgen als Karte eines bestimmten Netzwerks gelten dürfen. Er umfasst Präfixbereiche, zulässige Längen sowie Zusatzregeln, die für einzelne Produktgruppen gelten. Die Pläne sind öffentlich dokumentiert, weil sie von Geräten und Kassensystemen ausgewertet werden müssen, und sie werden von den internationalen Normungsgremien gepflegt.
Die Pläne überschneiden sich im Prinzip nicht; in der Praxis muss die Prüfung trotzdem sorgfältig arbeiten, weil einige Bereiche ineinander liegen. Das bekannteste Beispiel ist die Spanne, die Mastercard für neuere Nummern verwendet und die mit anderen Bereichen überlappt, sodass die Reihenfolge, in der Bereiche geprüft werden, das Ergebnis verändern kann. Ein weiteres Beispiel sind Bereiche, die in unterschiedlichen Längen registriert sind und deren Zuordnung erst nach vollständiger Eingabe eindeutig ist.
Der praktische Hinweis lautet daher, Bereiche nie nach Gefühl zu prüfen, sondern die längsten, spezifischsten Präfixe zuerst zu prüfen und breite Bereiche danach. Die Implementierungsdetails dieser Reihenfolge beschreibt der Beitrag Kreditkartennummer prüfen.
Wie wählt man ein Präfix für einen Testfall?
Die Auswahl folgt nicht der Tabelle, sondern dem Verhalten, das geprüft werden soll. Drei Fragen helfen dabei.
Erstens: Soll das Formular eine unbekannte Marke erkennen oder die richtige Marke erkennen? Bei einer unbekannten Marke wird der Testfall so konstruiert, dass die Prüfung unmöglich richtig liegen kann, denn er kennt die Marke nicht. Dann existiert ein Zweig, der für Nutzer mit einem sehr neuen oder sehr seltenen Produkt erreichbar ist.
Zweitens: Übt der Testfall die Längenprüfung aus? Ein Testfall innerhalb des Standardbereichs eines Netzwerks übt die Längenprüfung zwangsläufig aus, weil dort die erwartete Länge feststeht. Ein Testfall am Rand des Zweigs, in dem unbekannte Marken landen, übt sie gerade nicht aus, weil keine erwartete Länge existiert.
Drittens: Soll der Sicherheitscode in die Prüfung einfließen? Bei American Express mit vier Stellen ist das der einzige Weg, die abweichende Längenbehandlung zu testen.
Wer alle drei Fragen beantwortet, hat bereits eine Matrix und keine Liste.
Die veröffentlichten Bereiche auf einen Blick
Die folgende Übersicht fasst die wichtigsten Netzwerke mit ihren dokumentierten Bereichen zusammen. Alle Angaben beziehen sich auf die öffentlich dokumentierten Nummerierungspläne, und Bereiche werden gelegentlich erweitert.
| Netzwerk | Veröffentlichte Präfixbereiche | Typische Länge | Sicherheitscode |
|---|---|---|---|
| Visa | beginnt mit 4 | sechzehn Stellen, längere Formen ebenfalls registriert | drei Stellen, Rückseite |
| Mastercard | 51 bis 55 sowie 2221 bis 2720 | sechzehn Stellen | drei Stellen, Rückseite |
| American Express | 34 bis 37 | fünfzehn Stellen | vier Stellen, Vorderseite |
| Discover | 6011, 65, 644 bis 649 sowie 622126 bis 622925 | sechzehn Stellen, längere Formen registriert | drei Stellen, Rückseite |
| JCB | 3528 bis 3589 | sechzehn Stellen, längere Formen registriert | drei Stellen, Rückseite |
| Diners Club | 300 bis 305, 36 sowie 38 bis 39 | vierzehn Stellen, sechzehn ebenfalls verwendet | drei Stellen, Rückseite |
| UnionPay | 62 | sechzehn Stellen, längere Formen registriert | drei Stellen, Rückseite |
| Maestro | 50 sowie 56 bis 69 | variabel innerhalb der Standardgrenze | drei Stellen, Rückseite |
Zwei Beobachtungen fallen sofort ins Auge. Erstens sind die Längen unterschiedlich, und zwar so deutlich, dass eine Prüfung auf eine feste Länge mehrere Netzwerke ausschließt. Zweitens sind manche Bereiche sehr breit, etwa die Spanne, die Maestro abdeckt, und andere sehr eng. Ein Testfall mit einem sehr breiten Präfix prüft etwas völlig anderes als einer mit einem eng definierten.
Warum unterscheidet sich auch die Länge des Sicherheitscodes?
Die unterschiedliche Länge des Sicherheitscodes folgt aus der Kartengestaltung und nicht aus einem Sicherheitskonzept. Ein vierstelliger Code bietet keine höhere Entropie als ein dreistelliger, weil der Wert nicht geraten, sondern abgelesen wird. Die Länge ergibt sich daraus, wie viel Platz auf der jeweiligen Kartenseite zur Verfügung stand, als das Produkt entworfen wurde.
In der Software ist die Länge dennoch die wirksamste Prüfung des gesamten Feldes. Ein Formular, das einen festen Maximalwert von drei Zeichen setzt, schneidet jeden vierstelligen Code ab und erzeugt eine Ablehnung, die keine sichtbare Fehlermeldung hat. Ein Testfall mit einer American-Express-Karte deckt diesen Fehler auf, ein Testfall mit einer Visa-Karte niemals.
Achten Sie außerdem darauf, dass auch die Position des Codes sich unterscheidet. Dieser Umstand betrifft nicht die Prüflogik, sondern die Hilfetexte und die Beratungstexte in der Dokumentation für den Nutzer.
Bedeutet ein passendes Präfix, dass die Nummer echt ist?
Nein, und dieser Punkt ist wichtiger als die Tabelle selbst. Ein passendes Präfix bedeutet lediglich, dass die Zeichenfolge innerhalb eines veröffentlichten Bereichs liegt. Das Präfix ist ein Namensraum, kein Register. Jede Ziffernfolge innerhalb des Bereichs sieht für eine Prüfung wie eine Karte des entsprechenden Netzwerks aus, unabhängig davon, ob sie jemals vergeben wurde.
Das hat zwei praktische Folgen. Einerseits lassen sich für jedes Netzwerk beliebig viele synthetische Werte erzeugen, die alle Formatregeln einhalten, was die Grundlage für reproduzierbare Tests ist. Andererseits ergibt die Frage, ob eine bestimmte Nummer echt ist, aus Sicht der Anwendung keinen Sinn; sie lässt sich nur durch eine Autorisierung beim Herausgeber beantworten, und genau die soll in einer Testumgebung nicht stattfinden.
Die Grenzen der Datenerzeugung und die Frage, warum synthetische Werte gegenüber maskierten echten Werten zu bevorzugen sind, behandelt der Beitrag zu den Anforderungen an Testdaten.
Für Entwickler: eine Netzwerk-Testmatrix aufbauen
Eine brauchbare Matrix hat vier Spalten: das Netzwerk, den verwendeten Präfixbereich, das erwartete Erkennungsergebnis und das erwartete Verhalten des Formulars. Die vierte Spalte ist die entscheidende, denn sie macht aus einer Datensammlung eine Spezifikation.
Drei Regeln haben sich bewährt. Erstens: ein Testfall je unterschiedlichem Verhalten und nicht je Marke. Zwei Netzwerke mit identischer Länge und identischer Codestellenlänge üben dieselben Codepfade aus. Zweitens: Die erwartete Länge gehört in die Erwartung, damit ein Testfall sich verständlich ändert, wenn ein Netzwerk seine Pläne anpasst. Drittens: Mindestens ein Fall mit einem Präfix, das keinem Netzwerk entspricht, um den Zweig für unbekannte Marken abzudecken.
Ein weiterer Punkt betrifft die Reihenfolge der Prüfungen. Die Spanne, die mit 62 beginnt, liegt vollständig innerhalb einer breiteren Spanne, die ebenfalls mit 6 beginnt. Wird der breite Bereich zuerst geprüft, erreicht der spezifische Zweig nie einen Testfall. Diese Art von Fehler bleibt in einer Matrix unsichtbar, solange die Spalte mit dem erwarteten Erkennungsergebnis fehlt.
Eine Karte pro Netzwerk erzeugen
Die Matrix von Hand zusammenzustellen ist mühsam, weil Präfixbereiche und Längen zusammenpassen müssen. Der Kartennummern-Generator erzeugt für jedes unterstützte Netzwerk Werte mit passendem Präfix, passender Länge und passender Gruppierung und gibt die Zuordnung mit aus. Damit lässt sich die Matrix unmittelbar befüllen.
Für die Zeile mit dem absichtlich unbekannten Präfix ist das Werkzeug bewusst nicht zuständig, denn es erzeugt nur gültige Werte. Diesen Testfall schreiben Sie von Hand, und Sie sollten ihn als solchen kennzeichnen, damit niemand ihn später für ein Beispieldatum hält. Wenn Sie zusätzlich das Verhalten des Anbieters testen möchten, ergänzen Sie die Werte aus der Dokumentation, wie im Beitrag zu den Anbieter-Testkarten beschrieben.
Nächste Schritte
Bauen Sie die Matrix mit fünf Zeilen: eine für ein sechzehnstelliges Netzwerk mit dreistelligem Code, eine für ein fünfzehnstelliges mit vierstelligem Code, eine für ein vierzehnstelliges, eine für ein Netzwerk mit variablem Bereich und eine für ein unbekanntes Präfix. Fünf Zeilen decken mehr Verhalten ab als eine Liste mit zwanzig Marken, und jede Zeile hat eine überprüfbare Erwartung.