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

Kod: test-dev
Kategoria: Testowanie i QA
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 3-4
Grupa docelowa: developerzy

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.

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

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

  • Techniki pracy z kodem legacy
  • Najlepsze wzorce i praktyki
  • Produktywne wzorce

Program Szkolenia

Pobierz program w formacie PDF
  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 (ew. JUnit)
    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/TestNG/Spock
    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 consumer driven contract (AccuREST)
    5. Ćwiczenia praktyczne (w trakcie - przeplatane z teorią)
  10. 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
      1. Tworzenie własnych rozszerzeń

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ń