reklama - zainteresowany?

Test-Driven Development w C# i .NET. Tworzenie wysokiej jako - Helion

Test-Driven Development w C# i .NET. Tworzenie wysokiej jako
Autor: Adam Tibi
Tytuł oryginału: Pragmatic Test-Driven Development in C# and .NET: Write loosely coupled, documented, and high-quality code with DDD using familiar tools and libraries
TÅ‚umaczenie: Robert G
ISBN: 978-83-289-1693-7
stron: 344, Format: 165x235, okładka: mi
Księgarnia: Helion

Książka będzie dostępna od października 2024

Tagi: .NET - Programowanie | C# - Programowanie

Spo

Spis treści

Test-Driven Development w C# i .NET. Tworzenie wysokiej jakości kodu w architekturze DDD za pomocą znanych narzędzi i bibliotek -- spis treści

Część I. Rozpoczęcie pracy i podstawy TDD

Rozdział 1. Przygotowanie pierwszej implementacji TDD

  • Wymagania techniczne
  • Wybór zintegrowanego Å›rodowiska programistycznego
    • Microsoft Visual Studio
    • JetBrains Rider
    • Visual Studio Code
    • Wersje .NET i C#
  • Utworzenie szkieletu rozwiÄ…zania razem z testami jednostkowymi
    • Wymagania
    • Utworzenie szkieletu projektu
    • Zapoznanie siÄ™ z wbudowanymi narzÄ™dziami przeznaczonymi do przeprowadzania testów
  • Implementacja wymagaÅ„ z zastosowaniem programowania sterowanego testami
    • SUT
    • Klasa testów
    • Warunki i oczekiwania
    • Czerwony - zielony
    • Wzorzec AAA
    • Jeszcze wiÄ™cej testów
  • Podsumowanie
  • Dalsza lektura

Rozdział 2. Wprowadzenie do mechanizmu wstrzykiwania zależności

  • Wymagania techniczne
  • Aplikacja WFA
    • Utworzenie przykÅ‚adowej aplikacji
    • Dodawanie komponentu odpowiedzialnego za dostarczanie rzeczywistej prognozy pogody
  • Poznawanie mechanizmu wstrzykiwania zależnoÅ›ci
    • Typy abstrakcyjne i konkretne
    • Czym jest zależność?
    • Znaczenie zależnoÅ›ci
    • Definiuj zależnoÅ›ci od abstrakcji, a nie od konkretnej implementacji
  • Wprowadzenie do mechanizmu wstrzykiwania zależnoÅ›ci
    • Pierwszy przykÅ‚ad wstrzykiwania zależnoÅ›ci
    • Testowanie API
    • Czym jest szew?
    • Odwrócenie kontroli
  • Używanie kontenerów wstrzykiwania zależnoÅ›ci
    • Rola kontenera
    • Kontenery podmiotów zewnÄ™trznych
    • Cykl życiowy usÅ‚ugi
    • Refaktoryzacja pod kÄ…tem wstrzykiwania zależnoÅ›ci
    • Rzeczywisty scenariusz użycia wstrzykiwania zależnoÅ›ci
    • Wstrzykiwanie metody
    • Wstrzykiwanie wÅ‚aÅ›ciwoÅ›ci
    • Lokalizator usÅ‚ugi
  • Podsumowanie
  • Dalsza lektura

Rozdział 3. Rozpoczęcie pracy z testami jednostkowymi

  • Wymagania techniczne
  • Wprowadzenie do testów jednostkowych
    • Czym jest testowanie jednostkowe?
    • Frameworki testów jednostkowych
  • WyjaÅ›nienie struktury projektu stosujÄ…cego testy jednostkowe
    • Dodawanie projektu xUnit za pomocÄ… wiersza poleceÅ„
    • Konwencje nazw w projekcie testów jednostkowych
    • Wykonanie przykÅ‚adowego testu jednostkowego
    • Okno Test Explorer
  • Analiza anatomii klasy testu jednostkowego
    • Konwencja nadawania nazwy klasie
    • Metody testowe
    • Wzorzec "przygotowanie, dziaÅ‚anie, asercja"
    • Testowany system
  • Omówienie podstaw frameworka xUnit
    • Atrybuty Fact i Theory
    • Wykonywanie testów
    • Klasa Assert
    • Klasa Record
  • Omówienie powiÄ…zaÅ„ zachodzÄ…cych miÄ™dzy reguÅ‚ami SOLID a testami jednostkowymi
    • ReguÅ‚a jednej odpowiedzialnoÅ›ci
    • ReguÅ‚a otwarte-zamkniÄ™te
    • Zasada podstawieÅ„ Barbary Liskov
    • Zasada rozdzielania interfejsów
    • Zasada odwrócenia zależnoÅ›ci
  • Podsumowanie
  • Dalsza lektura

RozdziaÅ‚ 4. Rzeczywiste stosowanie testów jednostkowych z wykorzystaniem dublerów używanych podczas testów

  • Wymagania techniczne
  • Wprowadzenie do koncepcji dublerów używanych podczas testów
    • Typy dublerów używanych podczas testów
    • Którego rozwiÄ…zania należy używać w programowaniu sterowanym testami?
  • Omówienie kolejnych kategorii testów
    • Testy integracyjne
    • Testy sintegration
    • Testy akceptacyjne
    • Wybór kategorii testów
  • Podsumowanie
  • Dalsza lektura

Rozdział 5. Programowanie sterowane testami

  • Wymagania techniczne
  • Filary programowania sterowanego testami
    • Najpierw testy
    • Czerwony, zielony, refaktoryzacja
  • Programowanie sterowane testami w praktyce
    • Utworzenie rozwiÄ…zania w wierszu poleceÅ„
    • Dodawanie zadania programistycznego
    • Krótkie podsumowanie
  • Najczęściej zadawane pytania i zastrzeżenia do programowania sterowanego testami
    • Dlaczego potrzebne jest programowanie sterowane testami? Czy nie można po prostu używać testów jednostkowych?
    • PodejÅ›cie w stylu TDD podczas tworzenia oprogramowania wydaje siÄ™ nienaturalne
    • Stosowanie programowania sterowanego testami bÄ™dzie nas spowalniać
    • Czy programowanie sterowane testami ma znaczenie dla startupów?
    • Nie lubiÄ™ programowania sterowanego testami i wolÄ™ najpierw zająć siÄ™ swojÄ… bazÄ… kodu
    • Testy jednostkowe nie sprawdzajÄ… rzeczywistych aspektów kodu
    • Podobno istniejÄ… dwie szkoÅ‚y w zakresie programowania sterowanego testami - londyÅ„ska i klasyczna. Jakie sÄ… miÄ™dzy nimi różnice?
    • Dlaczego niektórzy programiÅ›ci nie lubiÄ… testów jednostkowych i programowania sterowanego testami?
    • Jaki zwiÄ…zek zachodzi miÄ™dzy programowaniem sterowanym testami a programowaniem ekstremalnym?
    • Czy system jest w stanie przetrwać bez programowania sterowanego testami?
  • Programowanie sterowane testami i testy sintegration
    • Testy sintegration jako alternatywa dla testów jednostkowych w programowaniu sterowanym testami
    • Wyzwania pojawiajÄ…ce siÄ™ podczas stosowania testów sintegration
  • Podsumowanie
  • Dalsza lektura

RozdziaÅ‚ 6. Wskazówki FIRSTHAND dotyczÄ…ce programowania sterowanego testami

  • Wymagania techniczne
  • Wskazówka "pierwszy"
    • Później oznacza nigdy
    • Przygotowanie do użycia mechanizmu wstrzykiwania zależnoÅ›ci
    • Opracowanie z perspektywy klienta
    • Promowanie testowania sposobu dziaÅ‚ania
    • Eliminowanie faÅ‚szywych alarmów
    • Eliminowanie kodu spekulatywnego
  • Wskazówka "intencja"
    • NazwaMetody_Warunek_Oczekiwanie
    • NazwaMetody_Should_When
    • Struktura testu jednostkowego
  • Wskazówka "czytelność"
    • Inicjalizacja konstruktora testowanego systemu
    • Wzorzec budowniczego
  • Wskazówka "jeden sposób dziaÅ‚ania"
    • Czym jest sposób dziaÅ‚ania?
    • PrzykÅ‚ad sposobu dziaÅ‚ania
    • Testowanie jedynie zewnÄ™trznie zdefiniowanego sposobu dziaÅ‚ania
    • Dlaczego nie testujemy elementów wewnÄ™trznych?
    • Test sprawdza tylko jeden sposób dziaÅ‚ania
  • Wskazówka "dokÅ‚adność"
    • Testy jednostkowe przeznaczone do testowania zależnoÅ›ci
    • Co oznacza pokrycie kodu testami?
    • Bycie dokÅ‚adnym
  • Wskazówka "wysoka wydajność"
    • Integracja jako ukryte jednostki
    • Testy jednostkowe w ogromnym stopniu wykorzystujÄ…ce procesor i pamięć operacyjnÄ…
    • Istnienie zbyt wielu testów
  • Wskazówka "automatyzacja"
    • Automatyzacja poczÄ…wszy od dnia pierwszego
    • Niezależność od platformy
    • Wysoka wydajność w potoku ciÄ…gÅ‚ej integracji
  • Wskazówka "brak wspóÅ‚zależnoÅ›ci"
    • Odpowiedzialność frameworka testów jednostkowych
    • Odpowiedzialność programisty
  • Wskazówka "deterministyczność"
    • Przypadki niedeterministycznych testów jednostkowych
    • PrzykÅ‚ad zamrożenia czasu
  • Podsumowanie

Część II. Stworzenie aplikacji z zastosowaniem podejścia w stylu TDD

RozdziaÅ‚ 7. Pragmatyczne omówienie architektury DDD

  • Wymagania techniczne
  • Praca z przykÅ‚adowÄ… aplikacjÄ…
    • Projekt aplikacji
    • Projekt obiektów kontraktu
    • Projekt warstwy dziedziny
  • Poznawanie dziedzin
    • Obiekty dziedziny
    • Encje i obiekty wartoÅ›ci
    • Agregacja
    • Modele anemiczne
    • Wszechobecny jÄ™zyk
  • Poznawanie usÅ‚ug
    • ZarzÄ…dzanie postem
    • UsÅ‚ugi aplikacji
    • UsÅ‚ugi infrastruktury
    • Cechy charakterystyczne usÅ‚ugi
  • Poznawanie repozytoriów
    • PrzykÅ‚ad repozytorium
    • Entity Framework i repozytoria
  • PoÅ‚Ä…czenie wszystkiego w caÅ‚ość
    • Okno Solution Explorer
    • Widok architekturalny
  • Podsumowanie
  • Dalsza lektura

Rozdział 8. Opracowanie aplikacji pozwalającej na rezerwowanie wizyt

  • Wymagania techniczne
  • Zebranie wymagaÅ„ biznesowych
    • Cele biznesowe
    • Historyjki użytkownika
  • Projektowanie w duchu architektury DDD
    • Obiekty dziedziny
    • UsÅ‚ugi dziedziny
    • Architektura systemu
  • Implementowanie tras
    • Frontend
    • Backend w postaci relacyjnej bazy danych
    • Backend w postaci bazy danych opartej na dokumentach
    • Używanie wzorca mediatora
  • Podsumowanie
  • Dalsza lektura

Rozdział 9. Wykorzystanie Entity Framework i relacyjnej bazy danych do opracowania aplikacji pozwalającej na rezerwowanie wizyt

  • Wymagania techniczne
  • Planowanie kodu źródÅ‚owego i struktury projektu
    • Analiza struktury projektu
    • Utworzenie projektów i konfiguracja zależnoÅ›ci
    • Konfiguracja projektu dziedziny
    • Przygotowanie Entity Framework
    • Przygotowanie projektu witryny internetowej
  • Implementacja Web API z użyciem programowania sterowanego testami
    • Używanie dziaÅ‚ajÄ…cego dostawcy EF dla magazynu danych w pamiÄ™ci
    • Implementacja pierwszej historyjki użytkownika
    • Implementacja piÄ…tej historyjki użytkownika (zarzÄ…dzanie czasem)
  • Udzielenie odpowiedzi na najczęściej zadawane pytania
    • Czy te testy jednostkowe sÄ… wystarczajÄ…ce?
    • Dlaczego nie utworzyliÅ›my testów jednostkowych dla kontrolerów?
    • Czy system zostaÅ‚ wystarczajÄ…co przetestowany?
    • PominÄ™liÅ›my testowanie pewnych obszarów, wiÄ™c jak osiÄ…gnąć wysoki poziom pokrycia testami?
  • Podsumowanie

Rozdział 10. Wykorzystanie wzorca repozytorium i bazy danych opartej na dokumentach do opracowania aplikacji pozwalającej na rezerwowanie wizyt

  • Wymagania techniczne
  • Planowanie kodu źródÅ‚owego i struktury projektu
    • Analiza struktury projektu
    • Utworzenie projektów i konfiguracja zależnoÅ›ci
    • Konfiguracja projektu dziedziny
    • Wzorzec repozytorium
    • Przygotowanie projektu witryny internetowej
  • Implementacja Web API z użyciem programowania sterowanego testami
    • Implementacja pierwszej historyjki użytkownika
    • Implementacja piÄ…tej historyjki użytkownika (zarzÄ…dzanie czasem)
  • Udzielenie odpowiedzi na najczęściej zadawane pytania
    • Czy te testy jednostkowe sÄ… wystarczajÄ…ce?
    • Dlaczego nie utworzyliÅ›my testów jednostkowych dla kontrolerów?
    • Dlaczego nie utworzyliÅ›my testów jednostkowych dla implementacji repozytoriów?
    • Czy system zostaÅ‚ wystarczajÄ…co przetestowany?
    • PominÄ™liÅ›my testowanie pewnych obszarów, wiÄ™c jak osiÄ…gnąć wysoki poziom pokrycia testami?
  • Podsumowanie

Część III. Zastosowanie programowania sterowanego testami we własnych projektach

Rozdział 11. Wdrożenie potoku ciągłej integracji za pomocą usługi GitHub Actions

  • Wymagania techniczne
  • Wprowadzenie do systemu ciÄ…gÅ‚ej integracji
    • Sposób dziaÅ‚ania systemu ciÄ…gÅ‚ej integracji
    • Zalety systemu ciÄ…gÅ‚ej integracji
  • Implementacja procesu ciÄ…gÅ‚ej integracji za pomocÄ… usÅ‚ugi GitHub Actions
    • Utworzenie przykÅ‚adowego projektu w repozytorium GitHub
    • Zdefiniowanie sposobu dziaÅ‚ania
    • System ciÄ…gÅ‚ej integracji i testowanie
    • Symulowanie testów zakoÅ„czonych niepowodzeniem
    • Omówienie sposobu dziaÅ‚ania
  • Podsumowanie
  • Dalsza lektura

Rozdział 12. Praca z uaktualnianymi projektami

  • Wymagania techniczne
  • Analizowanie trudnoÅ›ci
    • ObsÅ‚uga mechanizmu wstrzykiwania zależnoÅ›ci
    • TrudnoÅ›ci zwiÄ…zane z modyfikowaniem kodu źródÅ‚owego
    • TrudnoÅ›ci zwiÄ…zane z czasem i wysiÅ‚kiem
  • Strategia pozwalajÄ…ca na zastosowanie programowania sterowanego testami
    • Rozważ ponowne utworzenie projektu
    • Zmiany kodu źródÅ‚owego
    • Natywna obsÅ‚uga dla mechanizmu wstrzykiwania zależnoÅ›ci
    • Poziom pokrycia testami przed dodaniem testów jednostkowych
  • Refaktoryzacja na potrzeby testów jednostkowych
    • Tworzenie egzemplarzy w kodzie
    • ZastÄ™powanie statycznych elementów skÅ‚adowych
    • Zmiana struktury kodu źródÅ‚owego
  • Podsumowanie
  • Dalsza lektura

Rozdział 13. Zawiłości związane ze stosowaniem programowania sterowanego testami

  • TrudnoÅ›ci techniczne
    • Projekt nowy czy uaktualniany?
    • NarzÄ™dzia i infrastruktura
  • TrudnoÅ›ci w zespole
    • DoÅ›wiadczenie zespoÅ‚u
    • Ochota do dziaÅ‚ania
    • Czas
  • TrudnoÅ›ci biznesowe
    • KorzyÅ›ci biznesowe wynikajÄ…ce z programowania sterowanego testami
    • Wady testów jednostkowych z perspektywy biznesowej
  • Argumenty za programowaniem sterowanym testami i zwiÄ…zane z nim bÅ‚Ä™dne koncepcje
    • Testy jednostkowe, a nie programowanie sterowane testami
    • Testy jednostkowe nie sÄ… implementowane przez testerów
    • Sposób tworzenia i obsÅ‚ugi technicznej dokumentacji
    • Mamy niekompetentnych programistów
  • Podsumowanie

Dodatek A. Biblioteki, których najczęściej używa siÄ™ podczas testów jednostkowych

  • Wymagania techniczne
  • Frameworki testów jednostkowych
    • MSTest
    • NUnit
  • Biblioteki imitacji
    • Moq
  • Biblioteki pomocnicze dla testów jednostkowych
    • Fluent Assertions
    • AutoFixture
  • Dalsza lektura

Dodatek B. Zaawansowane scenariusze związane z używaniem imitacji

  • Wymagania techniczne
  • Utworzenie biblioteki klienta OpenWeather
    • API One Call
    • Utworzenie szkieletu rozwiÄ…zania
    • RozpoczÄ™cie pracy nad implementacjÄ… z użyciem programowania sterowanego testami
    • Niezaliczenie i późniejsze zaliczenie testu
    • Podsumowanie
    • Analizowanie skomplikowanych scenariuszy imitacji
  • Dalsza lektura

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.