| Tytuł: | Tworzenie i testowanie aplikacji z użyciem Test Driven Development (TDD) w Spock (lub JUnit 5) |
| Kod: | craft-test-TDD |
| Kategoria: | Testowanie automatyczne |
| Forma: | 40% wykłady / 60% warsztaty |
| Czas trwania: | 3-4 dni |
| Odbiorcy: | developerzy |
| Zapisy: |
Indywidualne zamówienie i dopasowanie dla grupy. |
| Logistyka: |
W siedzibie klienta lub w innym dowolnym miejscu. |
Szkolenie prezentuje techniki tworzenia i testowania aplikacji z użyciem Test Driven Development (TDD).
Dodatkowo uczestnicy zdobędą/rozszerzą wiedzę dotyczącą programowania w parach, skutecznego refaktoringu, separacji zależności (mockowania) czy testowania integracyjnego.
Materiały wstępne
Przed szkoleniem możesz zapoznać się z serią naszych artykułów: Testowanie automatyczne.
Wyróżniki szkolenia
- nacisk na praktyczne "poczucie" tematu
- efektywne techniki testowania
- dobre praktyki i wzorce
- nowoczesne narzędzia: Spock lub JUnit 5
Program Szkolenia
Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.-
Jednostkowe testowanie kodu - niezbędnik do pisania dobrych testów w TDD- dobre testy jednostkowe - FIRST
- struktura testów jednostkowych (given-when-then/arrange-act-assert)
- nazewnictwo testów (metod testowych)
- konstrukcje wspierające testowalność kodu (m.in. dziedziczenie -> kompozycja, małe klasy, wstrzykiwanie zależności)
- antywzorce dla testowalnego kodu (m.in. singletony, elementy statyczne, pola i metody final)
- zadania frameworku testowego
- formułowanie naturalnie wyglądających asercji (AssertJ)
- ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
- dobre testy jednostkowe - FIRST
-
Spock Framework - pisanie testów szybciej, zwięźlej i czytelniej (alternatywnie JUnit 5)- nowa jakość w testowaniu kodu - dlaczego warto poznać Spocka
- konstrukcje i techniki upraszczające kod testowy (Groovy w pigułce na potrzeby pisania testów)
- podział testu na bloki/sekcje
- testy parametryzowane
- testowanie wyjątków
- warunkowe wykonywanie testów
- inicjowanie i sprzątanie w testach
- porównanie trio JUnit/Mockito/AssertJ ze Spockiem
- efektywne przejście w projekcie z JUnit/TestNG na Spocka
- ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
- nowa jakość w testowaniu kodu - dlaczego warto poznać Spocka
-
Test Driven Development- historia TDD
- podstawowe założenia
- cykl red-green-refactor
- przejrzysta struktura testu
- wybór kolejnych funkcji do zaimplementowania
- sprawne uruchamianie testów z IDE (przydatne wtyczki, skróty klawiaturowe, ciągłe uruchamianie testów)
- ćwiczenia praktyczne z TDD w formie Kata/Coding Dojo
- korzyści ze stosowania TDD
- historia TDD
-
Bezpieczny refaktoring- cel refaktoringu
- przydatne przekształcenia kodu
- automatyczny refaktoring w IDE z użyciem skrótów klawiaturowych (Idea lub Eclipse)
- ćwiczenia praktyczne - Golf refaktoryzacyjny
- cel refaktoringu
-
Stosowanie separacji od obiektów współpracujących przy TDD- potrzeba, kiedy i dlaczego warto
- testowe zastępniki obiektów współpracujących
- mockowanie ze Spock Framework
- mockowanie z Mockito (mocki w Spocku mają swoje ograniczenia)
- ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
- potrzeba, kiedy i dlaczego warto
-
TDD i testowanie integracyjne (Spring Framework)- dlaczego tylko testy jednostkowe nie wystarczą
- wsparcie w Spock/JUnit
- konfiguracja i zarządzanie kontekstem Springa
- wstrzykiwanie zależności
- odcinanie zależności w kontekście Springa (wstrzykiwanie zależności testowych, w tym mocków)
- ręczne tworzenie kontekstu w teście (do testowania specyficznych przypadków)
- cache'owanie kontekstu między testami (i problemy z tym związane)
- wydzielanie wspólnej konfiguracji dla wielu testów
- ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
- dlaczego tylko testy jednostkowe nie wystarczą
-
Test Driven Development - dobre praktyki i techniki unikania typowych problemów- małe kroki a efektywność pracy
- TDD i programowanie w parach (ang. pair programming)
- test-first vs test-last
- wykorzystanie TDD do pracy nad dobrym designem systemu
- wybór właściwego poziomu odcięcia zależności
- wykorzystanie TDD/BDD na poziomie testowania akceptacyjnego (wstęp)
- wprowadzenie TDD w organizacji
- zestaw ćwiczeń praktycznych uwypuklających typowe problemy spotykane przy tworzeniu kodu produkcyjnego i testów z pomocą TDD oraz pokazanie sposób ich unikania/rozwiązywania
- małe kroki a efektywność pracy
-
Testowanie - zaawansowane zagadnienia (podzbiór ustalany indywidualnie)- techniki testowania asynchronicznych wywołań (Awaitility, Spock)
- badanie jakości testów z testowaniem mutacyjnym (PIT)
- testowanie kodu wykorzystującego mechanizm feature toogle
- techniki przyśpieszania testów
- uproszczenie niektórych aspektów testowania z Java 8
- testowanie z losowymi danymi wejściowymi
- powstarzalność w testach z danymi losowymi
- property based testing - QuickCheck
- powstarzalność w testach z danymi losowymi
- zaawansowany Spock
- tworzenie własnych rozszerzeń
- tworzenie własnych rozszerzeń
- miarodajne microbeanchmarki
- kiedy i dlaczego warto stosować
- naiwne podejście i jego znikoma przydatność
- optymalizacja kodu w JVM
- ćwiczenia praktyczne z JMH (Java Microbenchmarking Harness)
- kiedy i dlaczego warto stosować
- testowanie reaktywnego kodu RxJava
- system legacy bez testów - jak do tego podejść?
- testowanie architektury Event-Driven
- testowanie architektury mikroserwisów - TDD na poziomie architektury
- consumer-Driven-Contracts
- testowanie projektów stosujących Event Sourcing
- techniki testowania asynchronicznych wywołań (Awaitility, Spock)
Pobierz program w formacie PDF
Trenerzy
Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.