Vývoj riadený testami

Zdroj
ručne priradené
Pridané

Pozrieť na YouTube →

Preber si túto prednášku so svojou AI

Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.

Otvoriť AI: ChatGPT · Claude · Gemini

Zhrnutie prednášky

Cvičenie predstavuje vývoj riadený testami (TDD), pri ktorom sa najprv napíšu testy a až potom implementácia, takže chyby sa odhalia skoro. Vysvetľuje rozdiel medzi blackbox a glassbox (whitebox) testovaním a dôvod, prečo je testovanie dôležité pri zmenách v rozsiahlych projektoch. Prakticky sa vytvorí súbor test_bmp.c s funkciou main, do makefile sa pridá pravidlo test a rozšíri sa pravidlo clean. Na príklade Caesarovej šifry (funkcia caesar_encrypt) sa najprv napíše zlyhávajúci test s makrom assert a porovnaním cez strcmp, potom sa test rozšíri na pole slov a nakoniec sa funkcia implementuje s alokáciou pamäte, modulo 26 a uvoľnením cez free, čo sa overí valgrindom. Na záver pribudnú testy okrajových prípadov pre vstup NULL a prázdny reťazec.

  • - TDD: najprv sa píšu testy, potom implementácia, takže chyby sa odhalia skoro.
  • - Blackbox testovanie testuje funkcionalitu bez znalosti kódu, glassbox (whitebox) testuje priamo funkcie v kóde.
  • - Testovanie chráni pred nefunkčnými aktualizáciami pri zmene kľúčovej funkcionality.
  • - Makefile dostane pravidlo test, ktoré preloží a spustí testy; pravidlo clean maže aj testy.
  • - Testy sa pomenúvajú podľa vzoru „when ..., then ...“ a používajú makro assert so strcmp na porovnanie reťazcov.
  • - Caesarova šifra sa implementuje cez posun (znak − 'a' + step) % 26 a výsledok sa overuje na poli slov, pomôcka je nástroj tr.
  • - Valgrind odhalil únik pamäte, ktorý sa opravil volaním free.
  • - Dry-run testy pokrývajú okrajové prípady: vstup NULL vracia NULL a prázdny reťazec vracia prázdny reťazec.

Zhrnutie pripravené s pomocou AI z prepisu videa.