Szkolenie TDD w Javie
Test-Driven Development to sposób programowania, w którym zaczynamy od wyrażenia w kodzie naszych intencji. Definiując w postaci testów przykłady, które nasz kod ma realizować, tworzymy w swoich głowach model dziedziny problemu, prowadzimy i rozwijamy design aplikacji, oraz dostarczamy sobie narzędzia automatycznej weryfikacji poprawności kodu. Wywiera to ogromny pozytywny wpływ na naszą pracę. Dostajemy bezpieczniejsze i 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.
Do kogo jest skierowane?
Do programistów Java. To zaawansowane szkolenie dla osób biegle posługujących się językiem Java i chcących podnieść swoje umiejętności tworzenia czystego, testowalnego kodu. Zapraszamy też znających Javę architektów i testerów, którzy chcą poznać zalety tworzenia kodu z pomocą testów.
Jak to wygląda?
Forma jest mieszana wykładowo-warsztatowa. Będziesz mieć okazję nie tylko posłuchać teorii prowadzenia developmentu testami, ale przede wszystkim możliwość popracowania w ten sposób pod okiem osób na co dzień tworzących tak projekty. W ramach szkolenia zapewniamy nie tylko wysoką wiedzę i doświadczenie prowadzących oraz salę z przygotowanymi komputerami, ale również obiad i chwile na odświeżenie umysłu przy kawie i kuluarowe rozmowy z prowadzącymi i innymi uczestnikami.
Czego się nauczę?
Techniki tworzenia kodu wysokiej jakości. Dowiesz się czym różnią się różne rodzaje testów. Poznasz i przyswoisz sobie cykl pracy TDD, nauczysz się projektować oprogramowanie pod względem testowalności i tworzyć czytelny kod. Poznasz parę bibliotek ułatwiających stosowanie TDD oraz umożliwiających testowanie na różnych poziomach. Wszystkiego tego uczyć się będziesz w najskuteczniejszy możliwy sposób - poprzez praktykowanie TDD podczas serii ćwiczeń warsztatowych. Dzięki temu wyjdziesz ze szkolenia czując i rozumiejąc, czym TDD jest i jak je zastosować w pracy.
Kto prowadzi kurs?
Programiści dla których TDD jest sposobem pracy. W Pragmatists stosujemy na co dzień wiele zwinnych praktyk. TDD jest jedną z nich. Zapisując się na nasze szkolenie masz pewność, że nie będziesz uczony przez szkoleniowca-teoretyka, ale przez osoby, które żyją tym czego uczą. Które mają za sobą wiele set godzin korzystania z technik które tu poznasz.
Szczegółowy zakres
Podstawy
Dowiesz się, czym TDD jest, poznasz korzyści ze stosowania tego podejścia i stworzysz pierwsze programy w ten sposób.
- dlaczego TDD może Ci pomóc
- stosowanie cyklu TDD Red-Green-Refactor
- bezpieczne refaktoryzowanie kodu pokrytego testami
- pełne wykorzystanie możliwości IDE w celu wspierania procesu TDD (generowanie kodu, refaktoryzacje automatyczne)
Mechanika TDD
Gruntowny zestaw wiedzy i technik, potrzebny do wykorzystania TDD na co dzień.
- utrzymywanie najszybszego możliwego tempa i rytmu pracy
- jak wybrać następny test do zaimplementowania
- nazewnictwo testów
- zaawansowane możliwości JUnit
Testy współpracujących obiektów
Działający program to wiele obiektów, które współpracują ze sobą, wysyłając do siebie komunikaty. Nauczysz się, jak każdy z nich przetestować w izolacji, aby testy byłby proste i uruchamiały się maksymalnie szybko.
- wykorzystanie dublerów testowych (Test Doubles) celu izolacji klas testowanych
- rodzaje Test Doubles: mocki, stuby
- biblioteka Mockito - wygodny sposób generowania mocków w locie
- tworzenie test-driven warstwy dostępu do danych
- tworzenie test-driven interfejsu użytkownika (GUI)
Trochę szerszego spojrzenia
Usystematyzujemy i doprecyzujemy pojęcia dotyczące testów i TDD.
- rodzaje i poziomy testów: jednostkowe, integracyjne, akceptacyjne...
- TDD, a może BDD (Behavior-Driven Design) lub ATDD (Acceptance TDD)?
- Podejście klasyczne vs. podejście mockowe (Classical and Mockist Testing)
Projektowanie obiektowe
Nauczysz się jak projektować tak, aby kod był bardziej czytelny, a testy pisało się łatwo.
- testability, czyli projektowanie pod kątem testów
- zasady wspierające dobry design (SOLID principles, Inversion of Control/Dependency Injection, powiązania, spójność)
Praca z odziedziczonym kodem (Legacy Code)
Pokażemy, że TDD można stosować także wtedy, gdy masz już dużą bazę kodu, który nie ma testów.
- jak zrefaktoryzować kod, aby dało się go pokryć testem (rozcinanie zależności / Dependency Breaking)
- zrozumienie kodu i zabezpieczenie miejsca zmiany dzięki testom charakteryzacyjnym
Gdzie iść dalej
Tych tematów dotkniemy pod koniec, aby podpowiedzieć uczestnikom, jak kontynuować rozwój w zakresie Test-Driven Development
- utrzymywanie testów - jak sprawić, by służyły mi za rok równie dobrze jak dziś
- programowanie w parach jako sposób wpierania nauki TDD
- badanie pokrycia kodu testami (code coverage)
- jak wprowadzać TDD w zespole
