Pojmy, školy a kroky
Stručný prehľad pojmov, škôl a krokov ATDD/TDD na rýchle nahliadnutie.
Chicago vs London school
| Pojem | Vysvetlenie |
|---|---|
| Chicago school | Unit je modul (jedna alebo viac tried), testuje sa cez jeho rozhranie a overuje sa výsledný stav. Mockuje sa minimálne, len zdieľané závislosti (DB, súbory, sieť) – refaktoring je vďaka tomu jednoduchý. |
| London school | Unit je trieda, testuje sa v úplnej izolácii a overuje sa interakcia so spolupracovníkmi. Mockujú sa všetky závislosti – štrukturálna zmena preto ľahšie rozbije testy. |
Kľúčové pojmy
| Pojem | Vysvetlenie |
|---|---|
| Unit | Nie je to metóda ani trieda, ale modul (jedna trieda alebo fasáda nad viacerými triedami), ktorý reprezentuje kus správania systému. |
| Mock | Testovací dvojník, ktorý simuluje správanie objektu a zároveň overuje, že naň prišlo očakávané volanie (interakcia). |
| Stub | „Hlúpy“ testovací dvojník bez logiky, ktorý vždy vráti rovnakú, vopred pripravenú odpoveď. |
| Fake | „Šikovnejší“ testovací dvojník s malou zjednodušenou logikou – napr. in-memory implementácia repozitára namiesto reálnej DB. |
| Test double (Testovací dvojník) | Súhrnné označenie pre mock, stub, fake a spy – náhrada za skutočnú závislosť použitá v teste. |
| Given/When/Then | Štruktúra scenára: Given = počiatočný stav, When = akcia, ktorú testuješ, Then = očakávaný, pozorovateľný výsledok. |
| Akceptačné kritérium | Podmienka, ktorú musí funkcionalita spĺňať, aby ju mohol používateľ alebo zákazník akceptovať ako hotovú. |
| Scenár | Konkrétny opísaný prípad použitia (Given/When/Then), ktorý sa dá premeniť na test. |
| Spustiteľná špecifikácia | Test napísaný tak, že zároveň slúži ako čitateľný zápis požiadavky – keď prejde, požiadavka je splnená. |
| Outside-In | Prístup k návrhu, pri ktorom začínaš od vonkajšieho správania systému (UI, API) a implementáciu dopĺňaš smerom dovnútra, podľa toho, čo ti chýba na to, aby prešiel akceptačný test. |
5 krokov Canon TDD
| Pojem | Vysvetlenie |
|---|---|
| Test List | Spíš zoznam očakávaných variantov správania – čisto behaviorálna analýza, žiadne implementačné rozhodnutia. |
| Write a Test | Napíšeš jeden skutočný automatizovaný test so setupom, vyvolaním a asertáciami. |
| Make it Pass | Upravíš systém tak, aby test reálne prešiel – bez mazania asertácií alebo kopírovania vypočítaných hodnôt ako očakávaných. |
| Optionally Refactor | Vylepšíš implementáciu bez zmeny správania – len v rozsahu potrebnom teraz, duplikácia je náznak, nie príkaz na abstrakciu. |
| Opakuj | Kým zoznam testov nie je prázdny, vráť sa na krok Write a Test. |
Testovacia pyramída
| Pojem | Vysvetlenie |
|---|---|
| Akceptačné testy | Testujú správanie aplikácie ako black-box z pohľadu jej konzumenta (užívateľ UI, iný systém cez API). |
| Integračné testy | Overujú súčinnosť s reálnymi externými službami. Napríklad že aplikácia vie reálne odoslať potvrdzujúci email cez Brevo API. |
| Unit testy | Najrýchlejšie a najpočetnejšie testy, testujúce správanie jednotlivých modulov. |
3 typy unit testov
| Pojem | Vysvetlenie |
|---|---|
| Návratová hodnota alebo výnimka | Test overuje, čo funkcia/metóda vráti alebo akú výnimku vyhodí. |
| Zmena vnútorného stavu | Test overuje, že sa po akcii zmenil stav modulu. |
| Interakcia s externou komponentou | Test overuje, že modul správne zavolal svojho spolupracovníka (napr. cez test double na hranici modulu). |