Test Driven Development w dla Node.js

Kod: craft-test-Node
Kategoria: Testowanie automatyczne
Forma: 10% wykłady / 90% warsztaty
Czas trwania: 2 dni
Grupa docelowa: developerzy
architekci
Zapisy: Indywidualne zamówienie i dopasowanie dla grupy.
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.

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 2 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.

  • 1 dnia projektujemy testami od zera aplikację command-line do przetwarzania danych.
  • 2 dnia projektujemy testami API webowe oparte Express.js i bazę MongoDB.
Orientacyjna wielkość problemu to ok. 150 linii kodu produkcyjnego i ok. 300 linii testów dla każdej z aplikacji. Nauka odbywa się w 90% przez ćwiczenia praktyczne, wprowadzamy tylko minimum teorii niezbędnej do rozwiązywania problemów.

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

  • 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. Porównanie Londyńskiej szkoły TDD i szkoły z Chicago/Detroit
  3. Trudne zależności
    1. System plików
    2. Klient HTTP
    3. Baza danych
    4. Zamienniki testowe tj. mock, spy, stub
    5. Zarządanie danymi testowymi w testach integracyjnych z bazą
  4. TDD a kod asynchroniczny
    1. Projektowanie testowalnych API asynchronicznych
    2. Promisy i async/await - pisanie testów kodu asynchronicznego, które respektują sekwencyjne działanie naszego mózgu
  5. TDD z elementami programowania funkcyjnego
    1. Myślenie w kategorii przepływu danych
    2. Funkcje wyższego rzędu
    3. Domknięcia
    4. Kompozycja
    5. Pure functions
    6. Programowanie bez this/class/prototype
  6. 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. Node.js assert
    4. Supertest


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ń


Wyrażam zgodę na przetwarzania danych osobowych zgodnie z ustawą o ochronie danych osobowych w związku z wysłaniem zapytania przez formularz kontaktowy.

Podanie danych jest dobrowolne ale niezbędne do przetworzenia zapytania. Zastałem/am poinformowany/na, że przysługuje mi prawo dostępu do swoich danych, możliwości ich poprawienia, żądania zaprzestania ich przetwarzania.

Administratorem danych osobowych jest Bottega IT Minds, ul. Jana Sawy 2, 20-632 Lublin.


Klauzula informacyjna