Promocja!

TEST-DRIVEN DEVELOPMENT W C# i .NET

Pierwotna cena wynosiła: 79.00zł.Aktualna cena wynosi: 71.11zł.

Na stanie

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

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

 

Autor

ISBN

978-83-289-1693-7

Liczba stron

Rok wydania

Wydawca

Opinie

Na razie nie ma opinii o produkcie.

Napisz pierwszą opinię o „TEST-DRIVEN DEVELOPMENT W C# i .NET”

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *