Test aktuálneho správania opisuje, čo systém robí dnes. Spustí existujúci kód so známymi vstupmi a zaznamená výstupy alebo vedľajšie účinky, ktoré možno po zmene skontrolovať znova. Vytvára tak porovnávací základ. Neznamená to však, že zachytené správanie je správne.
Čo test zaznamenáva
Rozsah pozorovania závisí od testovanej hranice. Funkcia môže vrátiť hodnotu alebo vyvolať chybu. Služba môže zapisovať záznamy, publikovať správy, volať iný systém alebo vytvárať súbor. Test sleduje iba výsledky, ktoré sú dôležité pre volajúcich a reálnu prevádzku.
| Pozorovanie | Príklad | Čo môže odhaliť zmena |
|---|---|---|
| Návratová hodnota | Vypočítaný súčet alebo stav | Zmenené pravidlo alebo správanie zaokrúhľovania |
| Chyba | Typ výnimky alebo kód odpovede | Zmenená zmluva o chybách |
| Zmena stavu | Databázový záznam alebo súbor | Pridaný, chýbajúci alebo zmenený vedľajší účinok |
| Odchádzajúca interakcia | Správa alebo volanie služby | Zmenené integračné správanie |
Test nemá overovať nepodstatné detaily, od ktorých volajúci nezávisia. Časové pečiatky, generované identifikátory a neusporiadané kolekcie si môžu vyžadovať kontrolované vstupy alebo vlastné pravidlá porovnania. Inak bude test reagovať na náhodné rozdiely namiesto zmien, na ktorých skutočne záleží.
Prečo legacy systémy potrebujú východiskový stav
V legacy codebase môžu byť zdokumentované požiadavky neúplné alebo staršie než prevádzkové správanie. Aktuálny kód môže obsahovať aj chyby, ktorým sa používatelia a integrácie naučili prispôsobiť. Test najprv zachytí dnešný výsledok, aby ho správcovia mohli posúdiť oddelene od štrukturálnej zmeny.
Tým sa odlišuje od testu špecifikácie. Špecifikácia hovorí, čo by mal systém robiť. Test aktuálneho správania zaznamenáva, čo systém urobil pri vytvorení porovnávacieho základu. Aj nesprávny výsledok môže neskôr ukázať, kedy a ako ho zámerná oprava zmenila.
Testovanie staviame na zmene
Zameraný proces je:
- Vyberte hranicu. Vyberte funkciu, službu alebo pracovný postup, ktorý môže plánovaná zmena ovplyvniť.
- Poskytnite známy vstup. Kontrolné údaje a externé závislosti dostatočné na zopakovanie pozorovania.
- Zachytenie aktuálneho správania. Zaznamenajte výstupy, chyby a relevantné vedľajšie účinky.
- Skontrolujte pozorovanie. Označte podozrivé správanie na samostatné rozhodnutie, než aby ste ho potichu normalizovali.
- Urobte zmenu. Porovnajte refaktorovanú alebo náhradnú cestu s východiskovým stavom.
Audit legacy codebase pomáha zvoliť hodnotné hranice tým, že prepája dôležité pracovné postupy s kódom a integráciami. Samotné široké pokrytie testami neukazuje, či má toto správanie užitočné overenia.
Ako podporuje postupnú migráciu
Refaktoring sa spolieha na zachovanie správania počas zmeny vnútornej štruktúry. Testy aktuálneho správania poskytujú dôkaz tam, kde chýba špecifikácia. Postupná výmena cez spoločné rozhranie môže použiť rovnaký porovnávací základ pre starú aj novú implementáciu.
Test zostáva užitočný iba vtedy, keď sleduje správanie, ktoré treba zachovať alebo vedome zmeniť. Po potvrdení požiadaviek môže tím široké porovnania nahradiť presnejšími testami špecifikácie. Pri postupnej migrácii legacy systému môže porovnávací základ poslúžiť aj pri vyradení starej cesty: nový systém poskytuje požadovaný výsledok a všetky zámerné rozdiely sú pred odstránením starej implementácie zdokumentované.