FIRST principy představují:
- Fast – rychlé
- Isolated/Independenct – izolované/nezávislé
- Repeatable – zopakovatelné
- Self-Validating – samo-ověřující
- Thorought – důkladné
Chyby se objevují v částech kódu, kterým většinou nevěnujeme pozornost, nebo v místech která jsou příliš těžko pochopitelná.
Rychlé (Fast)
Vývojář by neměl váhat se spuštěním testů v jakýkoli okamžik vývoje. I tisíce testů by se měly spustit a ukázat výsledek do pár vteřin.
Izolované (isolated)
Test by měl být nezávislý na prostředí v kterém běží případně na nastavení. Měl by být nezávislý na všem ostatním, aby jeho výsledek nebyl ovlivněn žádným jiným faktorem.
Měl by následovat strukturu zápisu – ideálně Given, When, Then zápis.
Given – popis světa a dat před tím než spustíme testovací scénář. Něco jako podmínky pro spuštění testu.
When – co se stane když něco změníme
Then – ověřování že se změna projevila
Repeatable – zopakovatelné
Testy musí být vždy zopakovatelné a deterministické, jejich hodnoty se nesmí měnit v průběhu na různých prostředích.
Každý test si musí nachystat vlastní data a nesmí záviset na jakýkoliv externích závislostech.
Self-validating – samo-ověřující
Nemělo by být potřeba ručně ověřit zda, test prošel nebo ne.
Thorought – důkladný test
- pokrýt veškeré očekávané chování
- pokrýt všechny okrajové případy u kterých očekáváme chyby
- test na nepovolené argumenty a hodnoty
- test se zaměřením na zranitelnosti funkce
- test na velké vstupní hodnoty
- ideálně pokrýt všechny scénáře, ne však se snažit dosáhnout 100% pokrytí kódu