Testenswerte Daten
Software scheitert nicht an gewöhnlichen Dienstagen. Sie scheitert am letzten Tag des Quartals, am 29. Februar, im Moment des Jahreswechsels und eine Sekunde nach Ablauf einer Lizenz. Das sind die Daten, die diese Fehler finden - 14 davon liegen als benannte Szenarien bei.
Periodengrenzen
Alles, was eine Periode abschließt, ein Dokument nach Jahr nummeriert oder bis zu einem Stichtag aufläuft, macht hier zuerst Fehler.
- Letzter Tag des Monats - verhalten sich Monatsabschluss und periodengerechte Abgrenzung am letzten Tag des Monats richtig?
- Letzter Tag des Quartals - verhalten sich Quartalsabschluss und Berichterstattung am letzten Tag des Quartals richtig?
- Letzter Tag des Geschäftsjahres - schließt die App das Geschäftsjahr am richtigen Tag ab, am Tag vor dem Beginn des neuen Geschäftsjahres?
- Jahreswechsel, live - kommen Dokumentnummerierung, Jahr im Namen und Jahresberichte mit dem Wechsel zurecht, während er stattfindet, statt danach neu gestartet zu werden?
Der letzte ist der, den man meist gar nicht testen kann, weil die Uhr dafür um Mitternacht des 31. Dezember überschreiten muss, während die Anwendung läuft. Mit einer beschleunigten Uhr ist das eine Sache von zehn Sekunden.
Kalender- und Darstellungsgrenzen
- 29. Februar - der Schalttag, den es nur alle vier Jahre gibt und den erstaunlich viel Validierungscode rundheraus ablehnt.
- Unix-Epoche null - behandelt die App den 1. Januar 1970 als echtes Datum oder als leeren Wert, den sie nie hätte speichern dürfen?
- 2038-Grenze - der Moment, in dem ein vorzeichenbehaftetes 32-Bit-
time_tausläuft, bei2038-01-19T03:14:07Z. Eine Sekunde später läuft der Zähler ins Jahr 1901 über.
Lizenzen, Testversionen und Installation
Diese sind zum Testen Ihrer eigenen Lizenzierung gedacht, dafür wurden sie geschrieben.
- Letzter Tag der Testversion - funktioniert die App im allerletzten Moment der Testphase noch?
- Erster Tag nach Ablauf der Testversion - verweigert sie den Zugriff genau in dem Moment, in dem die Testphase endet, und wie? Mit einer sinnvollen Meldung oder einem Stacktrace?
- Lizenz vor einem Jahr abgelaufen - kommt sie mit einer Lizenz zurecht, die vor langer Zeit abgelaufen ist, nicht nur gestern?
- Datum vor der Installation - verhält sie sich richtig, wenn die Uhr vor ihr eigenes Installationsdatum gestellt ist? Dieses liest das Dateidatum des Ziels selbst und braucht daher keinen Parameter.
Geschäftsregeln und Uhrverhalten
- Zahlung fällig, +N Werktage - landet eine in N Werktagen fällige Zahlung am richtigen Tag, unter Auslassung von Wochenenden und den Feiertagen des richtigen Landes? Das einzige Szenario, das einen Kalender braucht, und die Antwort unterscheidet sich zwischen den Märkten.
- Grenze der Volljährigkeit - lässt die App jemanden genau an der Grenze zu und weist jemanden ab, dem ein Tag fehlt?
- Uhrenabweichung, +90 s - kommt die App zurecht, wenn ihre Uhr neunzig Sekunden vorgeht? Das ist der Fall, der zeitbasierte Einmalpasswörter und die Token-Validierung bricht.
Eines verwenden
Ein Szenario ist ein benannter Datumsausdruck. Der Rechner ermittelt, was er bedeutet, und die Ersetzung führt eine Anwendung damit aus - derselbe Name an beiden Stellen.
# Welches Datum ist das, und was prüft dieses Datum? chrono calc --preset month-end # Eine Anwendung damit ausführen chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt # Die Testversions-Szenarien nehmen das Startdatum aus dem Dateidatum des Ziels chrono run "C:\apps\test.exe" --preset trial-first-day-after
Im Fenster sind sie Chips über dem Datumsfeld - ein Klick füllt es aus. Jedes trägt seinen eigenen Satz, der sagt, was es findet, und das kann Ihnen ein Online-Datumsrechner nicht geben.
Was hier nicht dabei ist
Die Sommerzeitwechsel. Eine Anwendung über die Grenze der Umstellung auf Sommerzeit oder zurück zu schicken, ist ein wirklich nützlicher Test, und er fehlt absichtlich, weil die Sitzungszeitzone ein fester Offset ohne Sommerzeit ist - es gibt noch keinen Wechsel zu simulieren. Ein Szenario auszuliefern, das stillschweigend nichts täte, wäre schlimmer, als es nicht auszuliefern.
Es kommt mit einem Modell der Zeitzonenregeln zurück. Was die Zeitzone tut und was nicht →