Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Praktyczne wprowadzenie do TDD

Praktyczne wprowadzenie do TDD

Chcielibyśmy pokazać Test Driven Development od praktycznej strony poprzez wykonanie z uczestnikami krótkich zadań programistycznych. Warsztat składać się będzie z: 1. Wprowadzenie do techniki TDD 2. Praktyczna prezentacja procesu TDD 3. Ćwiczenia z uczestnikami (code kata) Wymagania: 1 laptop na 2 osoby PHP >= 5.4 Zapraszamy szczególnie osoby początkujące

Leszek Prabucki

November 14, 2015
Tweet

More Decks by Leszek Prabucki

Other Decks in Programming

Transcript

  1. Wprowadzenie do
    TDD

    View full-size slide

  2. * proces - Red Green Refactor
    * korzyści wynikające ze stosowania TDD
    * code kata - ciągłe doskonalnie
    * composer - pobieranie bibliotek i
    zarządzanie ich zależnościami
    * phpspec - narzędzie do specyfikacji
    jednostek w kodzie
    O czym powiemy?

    View full-size slide

  3. * wytwarzanie oprogramowania sterowane
    testsami
    * test first
    * Kent Beck
    * specyfikacja vs test
    * London TDD vs Classic TDD
    TDD

    View full-size slide

  4. 1. Nie pisz kodu produkcyjnego bez
    specyfikacji (testu)
    2. Pisz tylko tyle specyfikacji (testów) ile jest
    potrzebne do ukazania problemów w kodzie
    produkcyjnym
    3. Pisz tylko tyle kodu produkcyjnego ile jest
    potrzebne do spełnienia specyfikacji
    3 prawa wujka Boba

    View full-size slide

  5. 1. Mniejszy czas debugowania
    2. "Żyjąca" dokumentacja
    3. Wymusza tworzenie kodu
    łatwotestowalnego = słabo powiązanego
    (low coupling)
    4. Testy regresji - odwaga do zmian w
    projekcie
    Korzyści ze stosowania TDD

    View full-size slide

  6. 1. Specyfikacja powstaje po kodzie – to nie
    TDD
    2. Testowanie i 120% pokrycia testami
    3. Testy przywiązane do implementacji
    utrudniają zmianę (beton)
    4. Testy to też kod (czytelność i utrzymanie)
    Błędy w TDD

    View full-size slide

  7. 1. Krótkie, proste zadania programistyczne
    (~30min)
    2. Ciągłe potwarzanie
    3. Trenowanie nawyków
    4. Bowling game, Prime Factors, String
    calculator, FizzBuzz
    Code Kata

    View full-size slide

  8. Rozkład liczby na czynniki pierwsze
    Przykład
    1 -> []
    2 -> [2]
    3 -> [3]
    4 -> [2,2]
    6 -> [2,3]
    8 -> [2, 2, 2]
    9 -> [3,3]
    12 -> [2,2,3]
    15 -> [3,5]
    Przykład – Prime Factors

    View full-size slide

  9. @cocoders
    Composer

    https://getcomposer.org/down
    load/

    https://packagist.org

    Zarządzanie zależnościami

    Autoloading (PSR-0, PSR-4)

    composer.json

    View full-size slide

  10. {
    "require-dev": {
    "phpspec/phpspec": "~2.3"
    },
    "config": {
    "bin-dir": "bin"
    },
    "autoload": {
    "psr-0": {"": "src"}
    }
    }
    composer.json

    View full-size slide

  11. php bin/phpspec desc "Moja\NazwaKlasy"
    php bin/phpspec run
    it_*, its_*
    $this jako testowany obiekt
    phpspec

    View full-size slide

  12. $this->getRating()->shouldBe(5);
    $this->getTitle()->shouldBeEqualTo("Star Wars");
    $this->getReleaseDate()->shouldReturn(233366400);
    $this->getRating()->shouldBeLike('5');
    $this->shouldThrow('\InvalidArgumentException')-
    >during('setRating', -3);
    $this->shouldHaveType('Movie');
    $this->getTitle()->shouldBeString();
    phpspec matchers

    View full-size slide

  13. Code Kata Time!

    View full-size slide

  14. https://goo.gl/T4geV6

    View full-size slide

  15. Dziękujemy!
    @skowii @karolsojko @l3l0

    View full-size slide