Generujeme testovací data v JavaScriptu – model a schéma

V předchozím článku Generujeme testovací data v JavaScriptu – zkracujeme Then jsme vytvořili továrničku s náhodnými vstupními daty a tím docílili zkrácení části Then v testu. Nyní se podíváme na alternativní definici modelu user pomocí schéma.

Psaní validací pro vstupní data v programu je obvykle časově náročné a obsahuje chyby – zapomenuté případy. V předchozím článku jsme měli pouze definici v Typescriptu a žádnou validaci. Prozkoumejme možnost definovat entitu user pomocí schéma z knihovny yup:

Definice je čitelná a přesná. Knihovna yup umožňuje široké možnosti definice několika úrovňových entit se speciálními pravidly.

Generujeme testovací data v JavaScriptu – zkracujeme Then

Abychom mohli naše testy považovat za Důkladné – Thorought podle testovacího principu FIRST, musíme zjednodušit samotné testovací případy. V minulém článku jsme zkracovali část Given, teď se zaměříme na zkrácení části Then.

Mějme následující test jako ukázku s dlouhou částí Then:

Část Then obsahuje pouze jeden expect, nicméně v něm ověřujeme mnohem více dat než je pro tento testovací případ nutné. Měli bychom testovat zda jediná změněná hodnota z updateData se opravdu aplikovala a ostatní data nechat na další testovací případy.

Generujeme testovací data v JavaScriptu – zkracujeme Given

Abychom mohli naše testy považovat za Důkladné – Thorought podle testovacího principu FIRST, musíme zjednodušit samotné testovací případy.

Předpokládejme že naše testy následují strukturu Given-When-Then, zaměřme se na zjednodušení části Given – příprava dat před spuštěním testovaného scénáře. Mějme následující test:

Výše uvedený příklad testovacího případu v sekci Given obsahuje vytvoření entity user za účelem změny atributu department na „IT Support“. Pokud bychom takto chtěli napsat další dva testy, pravděpodobně bychom celý testovací případ zkopírovali, neboť „duplicita v testech je dovolena“. Bohužel tím ale znesnadníme jakékoliv následující změny v entitě user – přidání nového atributu znamená změnu na 3 místech.

Generujeme testovací data v JavaScriptu – zopakovatelně

V předchozím článku jsme se podívali na to, jak generovat testovací data v Javascriptu. Bohužel jsme náhodným generováním porušili testovací princip FIRSTRepeatable – zopakovatelný. Pojďme to tedy napravit.

Faker.js umožňuje nastavit tzv. seed neboli počáteční číslo pro pseudonáhodný generátor čísel.

Díky možnosti nastavení seedu je možné celý test při uvedení počátečního čísla vždy deterministicky zopakovat.

Generujeme testovací data v JavaScriptu – Faker

Abychom mohli dostát testovacímu principu FIRST, a především aby test byl Důkladný – Thorough, je třeba opustit standardní psaní testů a přejít na vyšší úroveň.

Vytváření testovacích dat pro testy není zábavné, a nakonec skončíme u jednoduchý čísel, řetězců a příkladů. Bohužel taková data nemají vysokou entropii, a tudíž nám neotestují aplikaci i v krajních situacích. Jeden ze způsobů, jak tomu předejít je využít náhodná data pro vytváření testovacích dat.