Chrono Mock

Daty warte testowania

Oprogramowanie nie psuje się w zwykłe wtorki. Psuje się ostatniego dnia kwartału, 29 lutego, w chwili przełomu roku i sekundę po wygaśnięciu licencji. To są daty, które znajdują takie błędy - 14 z nich jest dostarczanych jako nazwane scenariusze.

Granice okresów

Cokolwiek zamyka okres, numeruje dokument rokiem albo nalicza do daty granicznej, myli się na nich w pierwszej kolejności.

  • Ostatni dzień miesiąca - czy zamknięcie miesiąca i naliczenia okresowe zachowują się poprawnie ostatniego dnia miesiąca?
  • Ostatni dzień kwartału - czy zamknięcie kwartału i raportowanie zachowują się poprawnie ostatniego dnia kwartału?
  • Ostatni dzień roku obrotowego - czy aplikacja zamyka rok obrotowy właściwego dnia, czyli w dniu poprzedzającym start nowego?
  • Przełom roku, na żywo - czy numeracja dokumentów, rok w nazwie i raporty roczne radzą sobie z przełomem w trakcie, a nie dopiero po restarcie?

Tego ostatniego zwykle nie da się przetestować w ogóle, bo wymaga, żeby zegar przeszedł przez północ 31 grudnia w czasie działania aplikacji. Z przyspieszonym zegarem to robota na dziesięć sekund.

Krawędzie kalendarza i reprezentacji

  • 29 lutego - dzień przestępny, który istnieje tylko co cztery lata i który zaskakująco dużo kodu walidującego odrzuca wprost.
  • Zero epoki uniksowej - czy aplikacja traktuje 1 stycznia 1970 jako prawdziwą datę, czy jako pustą wartość, której nie powinna była zapisać?
  • Granica 2038 - chwila, w której kończy się 32-bitowy time_t ze znakiem, czyli 2038-01-19T03:14:07Z. Sekundę później licznik przepełnia się w rok 1901.

Licencje, wersje próbne i instalacja

Te są do testowania własnego licencjonowania i dokładnie po to powstały.

  • Ostatni dzień wersji próbnej - czy aplikacja nadal działa w ostatniej chwili jej trwania?
  • Pierwszy dzień po wygaśnięciu - czy odmawia dostępu dokładnie w momencie końca i w jaki sposób? Sensownym komunikatem czy zrzutem stosu?
  • Licencja wygasła rok temu - czy radzi sobie z licencją, która wygasła dawno, a nie wczoraj?
  • Data sprzed instalacji - czy zachowuje się poprawnie, gdy zegar jest ustawiony przed jej własną datą instalacji? Ten scenariusz czyta datę pliku celu, więc nie potrzebuje parametru.

Reguły biznesowe i zachowanie zegara

  • Płatność za N dni roboczych - czy płatność wymagalna za N dni roboczych ląduje we właściwym dniu, pomijając weekendy i święta właściwego kraju? To jedyny scenariusz wymagający kalendarza, a odpowiedź różni się między rynkami.
  • Granica pełnoletności - czy aplikacja wpuszcza kogoś dokładnie na granicy i odmawia komuś, komu brakuje jednego dnia?
  • Dryf zegara, +90 s - czy aplikacja radzi sobie, gdy jej zegar wyprzedza prawdziwy o dziewięćdziesiąt sekund? To przypadek psujący hasła jednorazowe oparte na czasie i walidację tokenów.

Jak użyć

Scenariusz to nazwane wyrażenie daty. Kalkulator wylicza, co ono znaczy, a podmiana uruchamia w nim aplikację - ta sama nazwa w obu miejscach.

# Jaka to data i co ta data testuje?
chrono calc --preset month-end

# Uruchom w niej aplikację
chrono run "C:\apps\test.exe" --preset year-rollover --report session.txt

# Scenariusze wersji próbnej biorą datę startu z daty pliku celu
chrono run "C:\apps\test.exe" --preset trial-first-day-after

W oknie są to przyciski nad polem daty - jedno kliknięcie je wypełnia. Każdy niesie własne zdanie mówiące, co wyłapuje, czyli część, której kalkulator dat online nie ma jak ci dać.

Górna połowa panelu podmiany Chrono Mock: wiersz celu, osiem przycisków scenariuszy, w tym granica 2038, 29 lutego i przełom roku, dalej pole daty, strefa sesji, wybór prędkości i przycisk Start.
Osiem scenariuszy to jedno kliknięcie każdy. Trzy, które biorą parametr, są wymienione pod spodem, a nie ukryte.

Czego tu nie ma

Zmian czasu na letni i zimowy. Przeprowadzenie aplikacji przez taką granicę jest naprawdę użytecznym testem i jest celowo nieobecne, bo strefa czasowa sesji to stały offset bez czasu letniego - nie ma jeszcze przejścia do zasymulowania. Dostarczenie scenariusza, który po cichu nic by nie robił, byłoby gorsze niż niedostarczenie go.

Wróci razem z modelem reguł stref czasowych. Co strefa robi, a czego nie →

Wypróbuj