Dariusz Woźniak tdd. techniki programowania sterowanego testami full scan.pdf

(4811 KB) Pobierz
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym
powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi
ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje
były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie,
ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz
Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody
wynikłe z wykorzystania informacji zawartych w książce.
Redaktor prowadzący: Małgorzata Kulik
Projekt okładki: Studio Gravite / Olsztyn
Obarek, Pokoński, Pazdrijowski, Zaprucki
Grafika na okładce została wykorzystana za zgodą Shutterstock.com
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/tddppr
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Kody źródłowe wybranych przykładów dostępne są pod adresem:
ftp://ftp.helion.pl/przyklady/tddppr.zip
ISBN: 978-83-283-3531-8
Copyright © Helion 2018
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis treści
Podziękowania .................................................................................................
Przedmowa ......................................................................................................
Cytaty o TDD .....................................................................................................
Wstęp ..............................................................................................................
Przewodnik po książce ............................................................................................................
Dla kogo jest ta książka? .........................................................................................................
W jakim stopniu muszę umieć programować? ............................................................
Nie jestem programistą C#. Czy ta książka ma jakąś wartość dla mnie? ..................
Umiem pisać testy jednostkowe i znam TDD. Czy ta książka jest dla mnie? ..........
Jestem menadżerem/dyrektorem/właścicielem (a więc nie programuję),
a mój zespół chce wdrożyć TDD. Czy z tej książki dowiem się, czy warto? .........
Jestem manualnym testerem. Czy powinienem znać TDD? ......................................
Kontekst jest królem ................................................................................................................
Atrapa to mock czy test double? ....................................................................................
xUnit a xUnit.net ..............................................................................................................
Funkcja a funkcjonalność oraz funkcyjny a funkcjonalny .........................................
Synonimy ...........................................................................................................................
Jak uczyć się metody Test-Driven Development? ...............................................................
Dogmat ......................................................................................................................................
Narzędzia użyte w tej książce .................................................................................................
Kod źródłowy do książki ........................................................................................................
11
13
15
17
19
20
20
20
21
22
22
23
23
24
24
25
25
26
27
28
Rozdział 1. Wprowadzenie do TDD ...................................................................... 29
Błędy w oprogramowaniu ...................................................................................................... 31
Cykl Red-Green-Refactor ....................................................................................................... 32
Podsumowanie ......................................................................................................................... 33
Kup książkę
Poleć książkę
4
TDD. Techniki programowania sterowanego testami
Rozdział 2. Co zyskujemy dzięki TDD? ................................................................. 35
Wysoka jakość kodu ................................................................................................................
Czy pisanie w metodyce TDD oznacza pisanie według zasad SOLID? ....................
Prostota kodu: YAGNI i KISS ................................................................................................
Żywa dokumentacja ................................................................................................................
Lepsze zrozumienie wymagań biznesowych ........................................................................
Automatyczna regresja ...........................................................................................................
Informacja zwrotna .................................................................................................................
Mniej defektów ........................................................................................................................
Czas programowania jest krótszy ..........................................................................................
Niższy koszt zmian ..................................................................................................................
Przypadki użycia ......................................................................................................................
Badanie Microsoft Research nad zespołami Microsoftu i IBM .................................
Pilotażowy projekt dla dużej firmy ................................................................................
Mały projekt w parach .....................................................................................................
Metaanaliza .......................................................................................................................
Podsumowanie .........................................................................................................................
35
36
37
38
38
39
41
42
43
43
45
45
45
47
47
48
Rozdział 3. Trudności przy wdrażaniu TDD ........................................................... 49
Ścieżka nauki ............................................................................................................................
Dyscyplina ................................................................................................................................
Więcej narzędzi ........................................................................................................................
Początkowa percepcja dłuższego czasu potrzebnego do napisania kodu ........................
Jak „sprzedać” TDD kierownictwu? .....................................................................................
Musimy dostarczać szybko, a w naszym projekcie nie ma czasu na TDD ......................
Lista kontrolna: Definition of Done ..............................................................................
Podsumowanie .........................................................................................................................
49
50
50
51
51
51
52
56
Rozdział 4. Filozofia TDD ................................................................................... 57
Test-First czy Test-Last? .........................................................................................................
Wszystkie testy naraz czy test po teście? ..............................................................................
Weryfikacja stanu czy zachowania? ......................................................................................
Jedna czy wiele asercji? ...........................................................................................................
Scenariusz 1.: Jedna oczekiwana zmienna wyjściowa .................................................
Scenariusz 2.: Wiele oczekiwanych zmiennych wyjściowych ....................................
Scenariusz 3.: Asercje pośrednie ....................................................................................
Wiele asercji w jednym teście .........................................................................................
Kiedy pisanie testów jednostkowych nie ma sensu? ...........................................................
Czy należy pisać testy jednostkowe do bibliotek innych dostawców? .............................
58
59
60
60
60
61
62
66
67
68
Kup książkę
Poleć książkę
Spis treści
5
Czy TDD sprawdza się dla małych aplikacji? ......................................................................
Czy TDD sprawdza się dla dużych aplikacji? ......................................................................
Czy testy jednostkowe zastępują testera? .............................................................................
Jak pisanie testów jednostkowych wpływa na estymatę zadania? .....................................
Czy testy jednostkowe można pisać w innym języku
programowania niż pisany jest kod? .................................................................................
Czy testy jednostkowe może pisać inna osoba? ...................................................................
Czy system może mieć zbyt dużo testów jednostkowych? ................................................
Czy testy jednostkowe to jedyne testy, jakie powinny znajdować się w aplikacji? .........
Jakich testów powinno być najwięcej (piramida testów)? .................................................
Podsumowanie .........................................................................................................................
69
70
70
71
71
72
72
73
74
75
Rozdział 5. Rodzaje testów ................................................................................ 77
Sposób wykonywania ..............................................................................................................
Wiedza na temat struktury systemu (test skrzynki) ...........................................................
Poziom testowania ...................................................................................................................
Testowanie po zmianach dokonanych w systemie .............................................................
Testowanie niefunkcjonalne ..................................................................................................
Test wydajnościowy .........................................................................................................
Podsumowanie .........................................................................................................................
77
77
78
80
80
81
82
Rozdział 6. Test jednostkowy ............................................................................. 83
Struktura testu: Arrange-Act-Assert .....................................................................................
Alternatywne struktury testu ..........................................................................................
Test jednostkowy a test integracyjny ....................................................................................
Myśl jak tester: ścieżki optymistyczne i przypadki brzegowe ............................................
Jak nazywać klasy i metody testowe? ....................................................................................
Podział testów i projekty testowe ..........................................................................................
Podsumowanie .........................................................................................................................
83
84
85
86
87
88
89
Rozdział 7. Nasz pierwszy test jednostkowy ........................................................ 91
Wybór biblioteki do testowania ............................................................................................. 91
Zanim zaczniemy… ................................................................................................................ 92
Dodanie solucji i projektów ............................................................................................ 92
Dodanie biblioteki NUnit ............................................................................................... 93
Etap red: pisanie testu do nieistniejącej metody ................................................................. 95
Jak uruchomić test? .......................................................................................................... 98
Etap green: implementacja kodu ......................................................................................... 102
Etap trzeci (i ostatni): refaktoryzacja kodu ........................................................................ 103
Podsumowanie ....................................................................................................................... 103
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin