Nauka programowania opartego na testach

Book description

Od oprogramowania wymaga się solidności i poprawności, a równocześnie oczekuje wydajnego działania i skalowalności. Jako programista odpowiadasz za zapewnienie aplikacjom tych właśnie cech. Niezależnie od tego, jakiego języka programowania używasz, praca zgodnie z paradygmatem TDD umożliwi Ci otrzymanie testowalnego kodu o wysokiej jakości. Choć te korzyści przeważają nad niedogodnościami podejścia TDD, wielu programistów narzeka na czasochłonność, pracochłonność i sprawiającą problemy implementację programowania opartego na testach.

To przewodnik dla programistów, którzy chcą stosować podejście TDD w swojej codziennej praktyce. Pokazuje, jak korzystać z programowania sterowanego testami podczas pracy w trzech różnych językach: Go, JavaScripcie i Pythonie. Dzięki tej książce zrozumiesz, w jaki sposób zastosować klasyczny paradygmat "dziel i zwyciężaj" do budowania testów jednostkowych i w efekcie radzić sobie nawet z bardzo rozbudowaną architekturą oprogramowania. Liczne przykłady o stopniowo rosnącym poziomie zaawansowania pozwolą Ci płynnie nabierać wprawy i pewności w tworzeniu testów jednostkowych, a także ich używaniu. Szybko się przekonasz, że wprowadzenie TDD do codziennej praktyki kodowania jest bardzo opłacalną decyzją: kod będzie czysty, zrozumiały, elegancki i prosty w utrzymaniu!

W książce między innymi:

działanie TDD w różnych językach, frameworkach testowych i koncepcjach domenowych
TDD a ciągła integracja
konfiguracja środowiska ciągłej integracji
refaktoryzacja i przeprojektowywanie przy użyciu TDD
testy jednostkowe w JavaScripcie
jak TDD ułatwia pisanie czystego kodu w Go, JavaScripcie i Pythonie

Table of contents

  1. Przedmowa
  2. Wstęp
    1. Czym jest programowanie oparte na testach?
      1. Technika
      2. Projektowanie i organizowanie kodu
      3. Skłonność do prostoty
      4. Zwiększanie zaufania do kodu i poczucia pewności siebie
    2. Dla kogo przeznaczona jest ta książka?
    3. Jakie są wymagania wstępne?
    4. Jak należy czytać tę książkę?
      1. Praca z tylko jednym językiem
      2. Praca najpierw z dwoma językami, a następnie z trzecim
      3. Praca ze wszystkimi trzema językami jednocześnie
    5. Konwencje stosowane w tej książce
      1. Konwencje typograficzne
      2. Konwencje leksykalne
    6. Korzystanie z przykładów kodu
    7. Pytania dotyczące TDD
      1. Dlaczego w tej książce wykorzystywane są języki Go, JavaScript i Python?
        1. 1. Różnorodność
        2. 2. Popularność
        3. 3. Powód osobisty
      2. Dlaczego nie jakieś inne języki?
      3. Dlaczego ta książka zawiera rozdział 0.?
  3. Rozdział 0.
  4. Wprowadzenie i konfiguracja
    1. Konfigurowanie środowiska programistycznego
      1. Typowa konfiguracja
        1. Struktura folderów
        2. Edytor tekstu lub IDE
        3. Powłoka
        4. Git
      2. Go
        1. Kilka słów o zarządzaniu pakietami Go
      3. JavaScript
        1. Kilka słów o bibliotekach testowych
        2. Jeszcze kilka słów o zarządzaniu pakietami w JavaScripcie
      4. Python
    2. Gdzie jesteśmy?
  5. CZĘŚĆ I
  6. Pierwsze kroki
  7. Rozdział 1.
  8. Problem z pieniędzmi
    1. „Czerwony, zielony, refaktoryzacja” — elementy konstrukcyjne TDD
    2. Na czym polega problem?
    3. Nasz pierwszy test z negatywnym wynikiem
      1. Go
      2. JavaScript
      3. Python
    4. Gramy w zielone
      1. Go
      2. JavaScript
      3. Python
    5. Czyszczenie
      1. Go
      2. JavaScript
      3. Python
    6. Zatwierdzanie zmian
    7. Gdzie jesteśmy?
      1. Go
      2. JavaScript
      3. Python
  9. Rozdział 2.
  10. Wielowalutowość
    1. Wprowadzamy euro
      1. Go
      2. JavaScript
      3. Python
    2. Stosowanie do kodu zasady DRY
      1. Go
      2. JavaScript
      3. Python
    3. Czy nie mówiliśmy przed chwilą „nie powtarzaj się”?
    4. Dziel i zwyciężaj
      1. Go
      2. JavaScript
      3. Python
    5. Czyszczenie
      1. Go
      2. JavaScript
      3. Python
    6. Zatwierdzanie zmian
    7. Gdzie jesteśmy?
  11. Rozdział 3.
  12. Portfel akcji
    1. Projektowanie następnego testu
      1. Go
      2. JavaScript
      3. Python
    2. Zatwierdzanie zmian
    3. Gdzie jesteśmy?
  13. CZĘŚĆ II
  14. Modularyzacja
  15. Rozdział 4.
  16. Separacja zagadnień
    1. Kod testowy i produkcyjny
      1. Zależność jednokierunkowa
      2. Wstrzykiwanie zależności
      3. Pakowanie i wdrażanie
    2. Modularyzacja
    3. Usuwanie redundancji
    4. Gdzie jesteśmy?
  17. Rozdział 5.
  18. Pakiety i moduły w Go
    1. Dzielenie kodu na pakiety
    2. Moduły w Go
    3. Tworzenie pakietu
    4. Hermetyzacja
    5. Usuwanie redundancji z testów
    6. Zatwierdzanie zmian
    7. Gdzie jesteśmy?
  19. Rozdział 6.
  20. Moduły w JavaScripcie
    1. Podział kodu na moduły
    2. Płynne przejście na moduły JavaScriptu
      1. CommonJS
      2. Definicja modułu asynchronicznego (AMD)
      3. Uniwersalna definicja modułu (UMD)
      4. Moduły ES
    3. Ulepszanie testów
      1. Usuwanie redundancji z testów
      2. Dodawanie klasy testowej i metod testowych
      3. Automatyczne wykrywanie i uruchamianie testów
      4. Generowanie danych wyjściowych po pomyślnym uruchomieniu testów
    4. Zatwierdzanie zmian
    5. Gdzie jesteśmy?
  21. Rozdział 7.
  22. Moduły w Pythonie
    1. Podział kodu na moduły
    2. Usuwanie redundancji z testów
    3. Zatwierdzanie zmian
    4. Gdzie jesteśmy?
  23. Część III
  24. Funkcjonalności i zmiany projektowe
  25. Rozdział 8.
  26. Ewaluacja portfela
    1. Mieszanie pieniędzy
      1. Go
      2. JavaScript
      3. Python
    2. Zatwierdzanie zmian
    3. Gdzie jesteśmy?
  27. Rozdział 9.
  28. Waluty, wszędzie waluty
    1. Szukamy (mapy) skrótów
      1. Go
      2. JavaScript
      3. Python
    2. Zatwierdzanie zmian
    3. Gdzie jesteśmy?
  29. Rozdział 10.
  30. Obsługa błędów
    1. Lista życzeń dla obsługi błędów
      1. Go
      2. JavaScript
      3. Python
    2. Zatwierdzanie zmian
    3. Gdzie jesteśmy?
  31. Rozdział 11.
  32. Bankowość na cenzurowanym
    1. Wstrzykiwanie zależności
    2. Podsumowanie
      1. Go
      2. JavaScript
      3. Python
    3. Zatwierdzanie zmian
    4. Gdzie jesteśmy?
  33. Część IV
  34. Ostatnie poprawki
  35. Rozdział 12.
  36. Kolejność testów
    1. Zmiana kursów wymiany walut
      1. Go
      2. JavaScript
      3. Python
    2. Zatwierdzanie zmian
    3. Gdzie jesteśmy?
  37. Rozdział 13.
  38. Ciągła integracja
    1. Podstawowe pojęcia
      1. System kontroli wersji
      2. Serwer i agent kompilacji
      3. Repozytorium artefaktów
      4. Środowisko wdrażania
    2. Zastosowanie w praktyce
      1. Utworzenie konta w GitHubie
      2. Weryfikacja konta w GitHubie
      3. Wysłanie repozytorium kodu do GitHuba
      4. Przygotowanie dla skryptów kompilacji CI
      5. Go
      6. JavaScript
      7. Python
    3. Zatwierdzanie zmian
    4. Gdzie jesteśmy?
  39. Rozdział 14.
  40. Retrospektywa
    1. Profil
      1. Złożoność cyklomatyczna
      2. Powiązania
      3. Zwięzłość
    2. Przeznaczenie
      1. Spójność
      2. Kompletność
    3. Proces
    4. Zastosowanie w praktyce
      1. Go
        1. Profil
        2. Przeznaczenie
        3. Proces
      2. JavaScript
        1. Profil
        2. Przeznaczenie
        3. Proces
      3. Python
        1. Profil
        2. Przeznaczenie
        3. Proces
    5. Czy TDD jest martwe?
    6. Gdzie jesteśmy?
  41. Dodatek A
  42. Konfiguracja środowiska programistycznego
    1. Internetowe środowiska REPL
      1. Repl.it
      2. LeetCode
      3. CoderPad
      4. Go Playground
      5. Lista internetowych środowisk REPL
    2. Zintegrowane środowiska programistyczne (IDE)
      1. Visual Studio Code
      2. IntelliJ IDEA
      3. Eclipse
    3. Instalowanie narzędzi językowych
      1. Go
      2. JavaScript
      3. JavaScript (ES6)
      4. Python
  43. Dodatek B
  44. Krótka historia trzech języków
    1. Go
    2. JavaScript
      1. Moduł assert
        1. Różnice syntaktyczne
        2. Prostota
        3. Otwartość
      2. Mechanizm modułów
    3. Python
  45. Dodatek C
  46. Podziękowania
    1. O autorze
    2. Kolofon

Product information

  • Title: Nauka programowania opartego na testach
  • Author(s): Saleem Siddiqui
  • Release date: August 2022
  • Publisher(s): Helion
  • ISBN: 9788328390416