Test Driven Development

Tesztelés

Az alábbi ábra mutatja a tesztelések eloszlását hagyományos és agilis fejlesztéseknél. Az egész lényege, hogy minél előbb és a fejlesztőhöz a lehető legközelebb derüljön ki a hiba, mert annál gyorsabb és olcsóbb annak javítása. Könnyen belátható, hogy egy leszállított terméket kell visszahívni az körülményesebb mintha a fejlesző a run tests gombra nyomva azonnal, helyben az adott kód részlet írása közben (amikor még az a kontextus van a fejében) kap egy képet arról, hogy mi nem jó. De még midnig jobb ha pl. sprinten belül egy automatizált integrációs teszt fogja meg a hibát, stb.

test pyramids

TDD

TDD cycle

As the tests get more specific, the code gets more generic.

-- Uncle Bob

Red

  • tesztelj egyszerre egy dolgot
  • a teszt legyen nagyon egyszerű
  • folyamatosan növeld teszt(esetek) komplexitását
  • mockold a függőségeket

Writing Unit Tests

Green

  • a lehető legegszerűbb kóddal felelj meg a teszt által támasztott követelménynek
  • nem baj ha csúnya, ebben a lépésben csak az számít, hogy a teszt ne bukjon
  • amint a teszt zöld (és másik sem bukik), ez a fázis kész

Refactor

Transformation Priority Premise

Beragadás esetén visszalépés, vagy másik módszert kell választani. A beragadás megelőzésére van a TPP.

  • Robert C. Martin (Uncle Bob) írása, összefoglalásul pedig a transformációk:
    1. ({} -> nil) no code at all -> code that employs nil
    2. (nil -> constant)
    3. (constant -> constant+) a simple constant to a more complex constant
    4. (constant -> scalar) replacing a constant with a variable or an argument
    5. (statement -> statements) adding more unconditional statements.
    6. (unconditional -> if) splitting the execution path
    7. (scalar -> array)
    8. (array -> container)
    9. (statement -> tail-recursion)
    10. (if -> while)
    11. (expression -> function) replacing an expression with a function or algorithm
    12. (variable -> assignment) replacing the value of a variable.
  • Advanced TDD: The Transformation Priority Premise
    • 1 órás videó, Robert C. Martintól

Coding Dojo

Egyéb a TDD-hez (lazábban) kapcsolódó anyagok