TDD dla Node.js

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

TDD - praktyka, narzędzie, strategia wytwarzania oprogramowania.

Pomaga utrzymać skupienie i projektować dobre API w skali mikro. Jak każde inne narzędzie czy praktyka sprawdza się w wybranych kontekstach.

W trakcie 1 dniowego szkolenia Test-Driven node.js nauczysz się projektować aplikacje node.js z użyciem testów. Będziemy praktykować tzw. Londyńską szkołę TDD znaną również jako outside-in development. Wielkość problemu to ok. 150 linii kodu produkcyjnego i 300 linii testów. Nauka odbywa się w 90% przez ćwiczenia praktyczne, wprowadzamy tylko minimum teorii niezbędnej do rozwiązywania problemów. Każda wersja tego szkolenia jest inna. To jak będzie wyglądała skończona aplikacja zależy od decyzji projektowych grupy.

Uczestnicy będą zachęcani do robienia tzw. ping pong pair programming.

Po każdym kroku trener wrzuca referencyjne rozwiązanie na github’a według tego jakie decyzje podjęliśmy jako grupa.

Nie będzie żadnych skrótów, szkolenie jest symulacją codziennej pracy z TDD w rzeczywistych projektach.

Czego się nauczysz

  • Projektować czysty i testowalny kod sterowany małymi, skupionymi na jednej rzeczy testami.
  • Patrzeć na testy przez pryzmat ROI (Return on Investment), unikać testowania tego samego po kilka razy i nadmiernej specyfikacji.
  • Projektować testowalny kod z “trudnymi” zależnościami tj. system plików, HTTP czy standardowe wyjście.
  • Wybierać najbardziej efektywny sposób testowania kodu asynchronicznego, gdzie część programu wykonuje się teraz, a część później.
  • Uzupełniać taktyczne decyzje TDD, strategicznymi decyzjami przy tablicy oraz zbierać potrzebne informacje za pomocą spike’ów.
  • Słuchać feedback’u od testów i odpowiednio poprawiać strukturę kodu oraz API które wystawiamy naszym kolaboratorom.
  • Zastępować biblioteki i narzędzia, praktykami i technikami dostępnymi na poziomie mechanizmów języka i platformy node.js. Np. mock, stub, spy bez narzędzi/bibliotek.
  • W łatwiejszy sposób przekazywać intencje kodu produkcyjnego oraz kodu testów z wykorzystaniem nowych elementów ES6 i decydować kiedy ich użycie ma sens.
  • Stosować najbardziej przystępne elementy programowania funkcyjnego aby zmaksymalizować nasze opcje i wyjść poza programowanie z this/new/klasami.
  • Kwestionować wiele mainstreamowych narzędzi i praktyk. Wytłumaczę np. dlaczego nie używam bibliotek tj. nock, sinon, chai albo dlaczego DRY w testach jest przereklamowane.

Wyróżniki szkolenia

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

  • Londyńska szkoła TDD
  • Duży nacisk na elementy programowania funkcyjnego
  • Nietrywialne 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. TDD
    1. Praktyka, Narzędzie, Strategia - patrzenie na TDD z różnych perspektyw
    2. TDD jako narzędzie taktyczne - projektowanie prostych i rozszerzalnych API w skali mikro
    3. TDD a decyzje strategiczne - czyli dlaczego TDD nie zastępuje a wzbogaca tablicę i markery
    4. Spikes - rozpoznawanie natury problemu zanim zaczniemy pisać testy
  2. Testy
    1. ROI testów - patrzenie na testy przez pryzmat zysku z inwestycji i jak pisać testy które są tanie w utrzymaniu
    2. Testy jako mechanizm feedbacku - jak testy podpowiadają nam które fragmenty kodu poprawić
    3. Testy jednostkowe vs testy integracyjne - praktyczne przykłady pokazujące jak dobierać rodzaj testu w zależności od problemu
    4. Happy path vs unhappy path - testowanie sytuacji wyjątkowych i przypadków brzegowych
    5. Jak wybierać pomiędzy weryfikacją stanu a weryfikacją interakcji w zależności od kontekstu
  3. Trudne zależności
    1. Jak radzić sobie z trudnym do testowania kodem dotykającym operacji wejścia/wyjścia
    2. Testowanie zależnośći od systemu plików
    3. Testowanie interakcji po HTTP
    4. Testowanie kodu który wypisuje dane na standardowe wyjście
    5. Używanie zamienników testowy tj. mock, spy, stub z pomocą narzędzi i bez
  4. TDD a kod asynchroniczny
    1. Jak radzić sobie z dodatkową złożonością kodu asynchronicznego w testach
    2. Done pattern
    3. Promisy - jak projektować łatwe do testowania asynchroniczne API
    4. Promisy i generatory w testach - pisanie testów kodu asynchronicznego, które respektują sekwencyjne działanie naszego mózgu
  5. TDD z ES6
    1. Podnosimy ekspresywność naszego kodu produkcyjnego i testowego z użyciem nowych elementów języka
    2. Generatory
    3. Promisy
    4. Arrow functions
    5. Destructuring
    6. Block scope
  6. TDD z elementami programowania funkcyjnego
    1. Myślenie w kategorii przepływu danych
    2. Pisanie prostszego kodu z wykorzystaniem “ludzkich” części programowania funkcyjnego
    3. Funkcje wyższego rzędu
    4. Domknięcia
    5. Kompozycja
    6. Pure functions
  7. Narzędzia
    1. Jak ograniczyć użycie narzędzi do testowania i jak sam język daje nam bardzo przydatne mechanizmy do testów
    2. Mocha
    3. co-mocha
    4. Node assert
    5. testdouble.js


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ń