Tworzenie i testowanie aplikacji z użyciem Test Driven Development (TDD)

Kod: craft-test-TDD
Kategoria: Testowanie automatyczne
Forma: 40% wykłady / 60% warsztaty
Czas trwania: 3 dni
Grupa docelowa: developerzy
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.
Data i dokładny zakres do ustalenia podczas analizy przed-szkoleniowej.

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.

Wyróżniki szkolenia

Podczas zajęć możesz oczekiwać szczególnych akcentów położonych na poniższe aspekty:

  • nacisk na praktyczne "poczucie" tematu
  • efektywne techniki testowania
  • dobre praktyki i wzorce

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.

  1. Jednostkowe testowanie kodu - niezbędnik do pisania dobrych testów w TDD
    1. dlaczego warto automatycznie testować kod
    2. dobre testy jednostkowe - FIRST
    3. struktura testów jednostkowych (given-when-then/arrange-act-assert)
    4. nazewnictwo testów (metod testowych)
    5. konstrukcje wspierające testowalność kodu (m.in. dziedziczenie -> kompozycja, małe klasy, wstrzykiwanie zależności)
    6. antywzorce dla testowalnego kodu (m.in. singletony, elementy statyczne, pola i metody final)
    7. zadania frameworku testowego
    8. formułowanie naturalnie wyglądających asercji (AssertJ)
    9. ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
  2. Spock Framework - pisanie testów szybciej, zwięźlej i czytelniej
    1. nowa jakość w testowaniu kodu - dlaczego warto poznać Spocka
    2. konstrukcje i techniki upraszczające kod testowy (Groovy w pigułce na potrzeby pisania testów)
    3. podział testu na bloki/sekcje
    4. testy parametryzowane
    5. testowanie wyjątków
    6. warunkowe wykonywanie testów
    7. inicjowanie i sprzątanie w testach
    8. porównanie trio JUnit/Mockito/AssertJ ze Spockiem
    9. efektywne przejście w projekcie z JUnit/TestNG na Spocka
    10. ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
  3. Test Driven Development
    1. historia TDD
    2. podstawowe założenia
    3. cykl red-green-refactor
    4. przejrzysta struktura testu
    5. wybór kolejnych funkcji do zaimplementowania
    6. sprawne uruchamianie testów z IDE (przydatne wtyczki, skróty klawiaturowe, ciągłe uruchamianie testów)
    7. ćwiczenia praktyczne z TDD w formie Kata/Coding Dojo
    8. korzyści ze stosowania TDD
  4. Bezpieczny refaktoring
    1. cel refaktoringu
    2. przydatne przekształcenia kodu
    3. automatyczny refaktoring w IDE z użyciem skrótów klawiaturowych (Idea lub Eclipse)
    4. ćwiczenia praktyczne - Golf refaktoryzacyjny
  5. Stosowanie separacji od obiektów współpracujących przy TDD
    1. potrzeba, kiedy i dlaczego warto
    2. testowe zastępniki obiektów współpracujących
    3. mockowanie ze Spock Framework
    4. mockowanie z Mockito (mocki w Spocku mają swoje ograniczenia)
    5. ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
  6. TDD i testowanie integracyjne (Spring Framework)
    1. dlaczego tylko testy jednostkowe nie wystarczą
    2. wsparcie w Spock/JUnit
    3. konfiguracja i zarządzanie kontekstem Springa
    4. wstrzykiwanie zależności
    5. odcinanie zależności w kontekście Springa (wstrzykiwanie zależności testowych, w tym mocków)
    6. ręczne tworzenie kontekstu w teście (do testowania specyficznych przypadków)
    7. cache'owanie kontekstu między testami (i problemy z tym związane)
    8. wydzielanie wspólnej konfiguracji dla wielu testów
    9. ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
  7. Test Driven Development - dobre praktyki i techniki unikania typowych problemów
    1. małe kroki a efektywność pracy
    2. TDD i programowanie w parach (ang. pair programming)
    3. test-first vs test-last
    4. wykorzystanie TDD do pracy nad dobrym designem systemu
    5. wybór właściwego poziomu odcięcia zależności
    6. wykorzystanie TDD/BDD na poziomie testowania akceptacyjnego (wstęp)
    7. wprowadzenie TDD w organizacji
    8. 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
  8. Testowanie - zaawansowane zagadnienia (podzbiór ustalany indywidualnie)
    1. techniki testowania asynchronicznych wywołań (Awaitility, Spock)
    2. badanie jakości testów z testowaniem mutacyjnym (PIT)
    3. testowanie kodu wykorzystującego mechanizm feature toogle
    4. techniki przyśpieszania testów
    5. uproszczenie niektórych aspektów testowania z Java 8
    6. testowanie z losowymi danymi wejściowymi
      1. powstarzalność w testach z danymi losowymi
      2. property based testing - QuickCheck
    7. zaawansowany Spock
      1. tworzenie własnych rozszerzeń
    8. miarodajne microbeanchmarki
      1. kiedy i dlaczego warto stosować
      2. naiwne podejście i jego znikoma przydatność
      3. optymalizacja kodu w JVM
      4. ćwiczenia praktyczne z JMH (Java Microbenchmarking Harness)
    9. testowanie reaktywnego kodu RxJava
    10. system legacy bez testów - jak do tego podejść?
    11. testowanie architektury Event-Driven
    12. testowanie architektury mikroserwisów - TDD na poziomie architektury
    13. consumer-Driven-Contracts
    14. testowanie projektów stosujących Event Sourcing


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.

Materiały związane ze szkoleniem

Idea renesansowej pracowni - Bottegi zakłada nieustanną pracę jej członków i dzielenie się jej wynikami.

Zapytaj o szkolenie

Imię i nazwisko:
Firma:
E-mail:
Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń