Tworzenie czytelnego, testowalnego i bardziej niezawodnego kodu

Kod: Craft-practices-code
Kategoria: Craftsmanship
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 3-5 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 przeznaczone dla programistów i projektantów pragnących poszerzyć swe kompetencje w zakresie profesjonalnych technik zwiększających jakość kodu i projektu.

Zdobyta wiedza przekłada się w praktyczny sposób na produktywność mierzoną w szerszej perspektywie czasu.

Wyróżniki szkolenia

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

  • Sprawdzone techniki SOLID, GRASP i DDD
  • Osadzenie technik w architekturze aplikacji i systemu
  • Realne przykłady

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. Część 1. Czytelny kod i testowanie jednostkowe
  2. Czytelniejszy i łatwiejszy w utrzymaniu kod
    1. Agile vs. Software Craftsmanship
    2. tworzenie kodu vs. tworzenie dobrego kodu
    3. złożoność oprogramowania
    4. nazewnictwo
    5. prostota konstrukcji (m.in. małe klasy i metody, zasada pojedynczej odpowiedzialności)
    6. obsługa błędów
    7. komentarze
    8. pomocne zasady projektowe (m.in. SOLID, KISS, DRY)
    9. ćwiczenie praktyczne ze zwiększania czytelności kodu
  3. 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. nazywanie 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. krótkie wprowadzenie frameworka do tworzenia testów (TestNG lub JUnit)
    8. formułowanie naturalnie wyglądających asercji (AssertJ)
    9. różne podejścia do testowania wyjątków (try..catch, ExpectedExceptions, catch-exception)
    10. kata na prostym przykładzie - jest kod i chcemy go przetestować
  4. Test Driven Development
    1. teoretyczny wstęp do TDD (o testowalności samej w sobie jest już wcześniej)
    2. Arrange-Act-Assert/Given-When-Then
    3. wybór kolejnych funkcji do zaimplementowania
    4. sprawne uruchamianie testów z IDE (przydatne wtyczki, skróty klawiaturowe)
    5. programowanie w parach
    6. kata w TDD
  5. Separacja od obiektów współpracujących
    1. dublerzy testowi (test doubles) i mockowanie - krótkie wprowadzenie + dlaczego warto i kiedy
    2. krótki workshop z Mockito (całościowo lub tylko bardziej zaawansowane techniki)
    3. ćwiczenia praktyczne z mockowania
  6. 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
  7. Część 2. Nie tylko testy jednostkowe (do wyboru w zależności od dostępnego czasu i potrzeb)
  8. Testowanie integracyjne
    1. dlaczego tylko testy jednostkowe nie wystarczą
    2. używanie kontekstu IoC (Spring) w testach
    3. zarządzanie bazą danych w testach
    4. transakcyjność w testach
    5. separowanie zależności (mockowanie) w kontekście IoC
    6. testowanie kontrolerów w Spring MVC bez kontenera serwletów
  9. Testowanie akceptacyjne (tylko wstęp - z tego tematu całe szkolenie można zrobić)
    1. BDD (Behavior-Driven Development)
    2. kryteria akceptacyjne w Cucumber lub JBehave
    3. testowanie GUI (Web Driver/Selenium 2 + GEB)
    4. utrzymywalność testów GUI z Page Object Pattern
  10. Praca z odziedziczonym kodem (legacy code)
    1. czym jest, dlaczego powstaje i jak temu przeciwdziałać
    2. techniki łamania zależności, refaktoryzacji i testowania
    3. przydatne narzędzia (PowerMock, PIT)
    4. ćwiczenia praktyczne
  11. Ciekawe rozszerzenia
    1. Spock Framework - pisanie testów szybciej, zwięźlej i czytelniej
    2. podział testów na grupy i ich selektywne uruchamianie
    3. badanie jakości testów z testowaniem mutacyjnym (PIT)
    4. testowanie asynchronicznych wywołań (Awaitility)


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ń