Techniki efektywnego testowania kodu dla programistów Java (Spock/JUnit 5)

Tytuł: Techniki efektywnego testowania kodu dla programistów Java (Spock/JUnit 5)
Kod: craft-test-effective
Kategoria: Testowanie automatyczne
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 3-5 dni
Odbiorcy: developerzy
Zapisy: Indywidualne zamówienie i dopasowanie dla grupy.
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.

Podczas szkolenia uczestnicy poznają techniki programowania i testowania ułatwiające codzienną pracę z kodem.

Podczas warsztatów praktycznych uczestnicy posiądą umiejętność pisania i utrzymywania testów oraz pracy techniką Test-Driven Development oraz nowoczesnych narzędzi (Spock Framework lub JUnit 5).

Przedstawiona propozycja programu przy szerokim potraktowaniu wszystkich zagadnień przekracza zaproponowane ramy czasowe. Wcześniej przeprowadzone szkolenia potwierdzają, iż różne elementy szkolenia mogą być mnie lub bardziej istotne dla konkretnej grupy uczestników w zależności od specyfiki pracy, doświadczenia, czy posiadanej już znajomości rozwiązań. Dlatego też po zaakceptowaniu oferty konieczne będzie ustalenie nacisku, jaki ma być położony na poszczególne części szkolenia.

Materiały wstępne

Przed szkoleniem możesz zapoznać się z serią naszych artykułów: Testowanie automatyczne.

Wyróżniki szkolenia

  • Tworzenie skutecznych i łatwych w utrzymaniu testów automatycznych
  • Najlepsze wzorce i praktyki (w tym TDD)
  • Sensowne testowanie integracyjne (ze Spring Framework)
  • Testowanie na poziomie API mikroserwisów (Consumer Driven Contract - CDC)
  • Techniki pracy z kodem legacy (opcjonalnie)
  • Praca z nowoczesnymi narzędziami do testowania - do wyboru Spock Framework 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.

  1. Jednostkowe testowanie kodu
    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 (alternatywnie JUnit 5)
    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. Ć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)
    7. Ćwiczenia praktyczne z TDD w formie Kata/Coding Dojo
    8. Korzyści ze stosowania TDD
  4. Bezpieczny refaktoring
    1. Przydatne przekształcenia kodu (refaktoring)
    2. Automatyczny refaktoring w IDE z użyciem skrótów klawiaturowych (Idea lub Eclipse)
    3. Ćwiczenia praktyczne
  5. Separacja od obiektów współpracujących
    1. Potrzeba, kiedy i dlaczego warto
    2. Testowe zastępniki obiektów współpracujących (ang. test doubles)
    3. Mockowanie ze Spock Framework
    4. Mockowanie z Mockito (mocki w Spocku mają swoje ograniczenia)
    5. Ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
  6. Testowanie integracyjne aplikacji opartej o Spring Framework
    1. Dlaczego tylko testy jednostkowe nie wystarczą
    2. Wsparcie w JUnit/JUnit 5/Spock/TestNG
    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. Testowanie aplikacji Spring MVC
    1. Testowanie kontrolerów w Spring MVC bez kontenera serwletów
    2. Pełne testy integracyjne z kontenerem serwletów
    3. Mockowanie wywołań do zewnetrznych serwisów (WireMock)
    4. Testowanie asynchronicznych wywołań HTTP
    5. Ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
  8. Testowanie z bazą danych
    1. Rozwiązywanie problemów z zależnościami między testami
    2. Zarządzanie transakcjami bazodanowymi w testach
    3. Utrzymywanie zestawu danych testowych
    4. Testowanie z bazą danych w pamięci
    5. Kiedy warto mockować warstwę dostępu do bazy danych
    6. Ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
  9. Wybrane tematy z testowania akceptacyjnego
    1. Wstęp do BDD (Behavior-Driven Development)
    2. Kryteria akceptacyjne (w Cucumber lub JBehave)
    3. Techniczne aspekty testowania GUI
      1. Web Driver/Selenium 2 + GEB
      2. Testowanie asynchronicznych elementów strony
      3. Łatwiejsze utrzymywanie testów GUI z Page Object Pattern
    4. Architektura microserwisów i wprowadzenie do Consumer Driven Contract (Spring Cloud Contract)
    5. Ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
  10. (Opcjonalnie) Praca z odziedziczonym kodem (legacy code)
    1. Czym jest, dlaczego powstaje i jak temu przeciwdziałać
    2. Techniki rozbijania zależności
    3. Techniki testowania
    4. Techniki refaktoryzacji
    5. Przydatne narzędzia
    6. Ćwiczenia praktyczne
  11. Zaawansowane zagadnienia
    1. Techniki testowania asynchronicznych wywołań (Awaitility, Spock)
    2. Badanie jakości testów z testowaniem mutacyjnym (PIT)
    3. Techniki przyśpieszania testów
    4. Uproszczenie niektórych aspektów testowania z Java 8
    5. Zaawansowany Spock (lub JUnit 5)
      1. Tworzenie własnych rozszerzeń


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.

Zamów 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ń


Twoje dane osobowe przetwarzamy, aby udzielić odpowiedzi na Twoje pytanie. Administratorem Twoich danych osobowych jest Bottega It Minds Sławomir Sobótka. Przysługuje Ci prawo wniesienia sprzeciwu wobec przetwarzania, prawo dostępu do danych, prawo żądania ich sprostowania, usunięcia lub ograniczenia ich przetwarzania. Szczegółowe informacje dotyczące przetwarzania Twoich danych osobowych znajdują się TUTAJ.