Tym razem chcemy przekazać wiedzę, która wydaje się nam, zespołowi Pragmatists, bardzo cenna. Test-Driven Development, czyli sposób programowania, w którym zaczynamy od wyrażenia w kodzie naszych intencji, wywiera ogromny pozytywny wpływ na naszą pracę. Bezpieczniejsze, pewniejsze kodowanie. Rzadsze korzystanie z debuggera. Mniej defektów. Lepszy design. Czytelniejszy kod. Krótko mówiąc - zupełnie inaczej niż kiedyś i bardzo przyjemnie.
Zatem zapraszamy na szkolenie, gdzie podzielimy się naszym doświadczeniem ze stosowania TDD w prawdziwych, komercyjnych projektach. Adresowane jest do programistów i architektów (wymagana znajomość Javy). Możecie liczyć na solidną porcję wiedzy, ale przede wszystkim mnóstwo ćwiczeń, warsztatów, oglądania i pisania kodu. Czas trwania to 3 dni, od 19 do 21 kwietnia 2010. Więcej szczegółów zamieścimy już wkrótce.
Szkolenie poprowadzi wraz ze mną Michał Margiel, pasjonat Javy, współorganizator Javarsovii, codziennie test-drive'ujący mnóstwo dobrego kodu.
Poniżej treści, które zamierzamy poruszyć, a większość z nich także przećwiczyć praktycznie podczas warsztatów.
Wprowadzenie do TDD
- czym jest TDD (cykl Red-Green-Refactor, porównanie do test-last)
- korzyści ze stosowania TDD
- TDD a projektowanie (design)
- TDD a BDD (Behaviour-Driven Design)
- rodzaje i poziomy testów: jednostkowe, integracyjne, akceptacyjne itp.
Mechanika TDD
- wprowadzenie do JUnit
- nazewnictwo testów
- wsparcie przez IDE (integracja z JUnit, automatyczne refaktoryzacje, skróty klawiaturowe)
- dyscyplina i rytm
- mocki (Mock Objects)
- tworzenie ręczne
- frameworki (szczególny nacisk na Mockito)
- inne rodzaje zaślepek (Test Doubles)
Projektowanie obiektowe
- projektowanie pod kątem testów (Testability)
- zasady wspierające dobry design (SOLID principles, Inversion of Control/Dependency Injection, powiązania, spójność)
Pokonywanie przeszkód
- tworzenie test-driven warstwy dostępu do danych
- tworzenie test-driven interfejsu użytkownika (GUI)
Praca z odziedziczonym kodem (Legacy Code)
- jak pracować bezpiecznie (testy charakteryzacyjne, zmienne ułatwiające śledzenie)
- techniki rozcinania zależności (dependency breaking)
- identyfikacja punktów newralgicznych
Gdzie iść dalej
- utrzymywanie testów
- różne podejścia (BDD, ATDD, podejście klasyczne, podejście mockowe)
- programowanie w parach
- pokrycie kodu testami (code coverage)
- wprowadzanie TDD w zespole
0 komentarze:
Prześlij komentarz