| Tytuł: | Tworzenie czytelnego, testowalnego i bardziej niezawodnego kodu |
| Kod: | Craft-practices-code |
| Kategoria: | Craftsmanship |
| 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. |
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
- 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.-
Część 1. Czytelny kod i testowanie jednostkowe -
Czytelniejszy i łatwiejszy w utrzymaniu kod- Agile vs. Software Craftsmanship
- tworzenie kodu vs. tworzenie dobrego kodu
- złożoność oprogramowania
- nazewnictwo
- prostota konstrukcji (m.in. małe klasy i metody, zasada pojedynczej odpowiedzialności)
- obsługa błędów
- komentarze
- pomocne zasady projektowe (m.in. SOLID, KISS, DRY)
- ćwiczenie praktyczne ze zwiększania czytelności kodu
- Agile vs. Software Craftsmanship
-
Jednostkowe testowanie kodu- dlaczego warto automatycznie testować kod
- dobre testy jednostkowe - FIRST
- struktura testów jednostkowych (given-when-then/arrange-act-assert)
- nazywanie 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)
- krótkie wprowadzenie frameworka do tworzenia testów (TestNG lub JUnit)
- formułowanie naturalnie wyglądających asercji (AssertJ)
- różne podejścia do testowania wyjątków (try..catch, ExpectedExceptions, catch-exception)
- kata na prostym przykładzie - jest kod i chcemy go przetestować
- dlaczego warto automatycznie testować kod
-
Test Driven Development- teoretyczny wstęp do TDD (o testowalności samej w sobie jest już wcześniej)
- Arrange-Act-Assert/Given-When-Then
- wybór kolejnych funkcji do zaimplementowania
- sprawne uruchamianie testów z IDE (przydatne wtyczki, skróty klawiaturowe)
- programowanie w parach
- kata w TDD
- teoretyczny wstęp do TDD (o testowalności samej w sobie jest już wcześniej)
-
Separacja od obiektów współpracujących- dublerzy testowi (test doubles) i mockowanie - krótkie wprowadzenie + dlaczego warto i kiedy
- krótki workshop z PhpUnit\Mock (całościowo lub tylko bardziej zaawansowane techniki)
- ćwiczenia praktyczne z mockowania
- dublerzy testowi (test doubles) i mockowanie - krótkie wprowadzenie + dlaczego warto i kiedy
-
Bezpieczny refaktoring- przydatne przekształcenia kodu (refaktoring)
- automatyczny refaktoring w IDE z użyciem skrótów klawiaturowych (PHPStorm)
- ćwiczenia praktyczne
- przydatne przekształcenia kodu (refaktoring)
-
Część 2. Nie tylko testy jednostkowe (do wyboru w zależności od dostępnego czasu i potrzeb) -
Testowanie integracyjne- Testy integracyjne za pomocą PHPUnit
- Wykorzystanie integracji PHPUnit z frameworkiem Symfony do testowania integracyjnego
- zarządzanie bazą danych w testach
- transakcyjność w testach
- separowanie zależności (mockowanie) w kontekście IoC
- testowanie kontrolerów w Spring MVC bez kontenera serwletów
- Testy integracyjne za pomocą PHPUnit
-
Ciekawe rozszerzenia- Spock Framework - pisanie testów szybciej, zwięźlej i czytelniej
- podział testów na grupy i ich selektywne uruchamianie
- badanie jakości testów z testowaniem mutacyjnym (PIT)
- testowanie asynchronicznych wywołań (Awaitility)
- Spock Framework - pisanie testów szybciej, zwięźlej i czytelniej
Pobierz program w formacie PDF
Trenerzy
Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.