Testy jednostkowe Zasady praktyki i wzorce.pdf

(850 KB) Pobierz
Tytuł oryginału: Unit Testing Principles, Practices, and Patterns
Tłumaczenie: Katarzyna Bogusławska
Projekt okładki: Studio Gravite / Olsztyn; Obarek, Pokoński, Pazdrijowski, Zaprucki
Materiały graficzne na okładce zostały wykorzystane za zgodą Shutterstock Images LLC.
ISBN: 978-83-283-6871-2
Original edition copyright © 2020 by Manning Publications Co.
All rights reserved.
Polish edition copyright © 2020 by Helion SA
All rights reserved.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
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 Helion SA 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 Helion SA nie ponoszą również
żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Helion SA
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/tejeza
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Pliki z przykładami omawianymi w książce można znaleźć pod adresem:
ftp://ftp.helion.pl/przyklady/tejeza.zip
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis treści
Przedmowa 11
Podziękowania 12
O książce 13
O autorze 15
C
ZĘŚĆ
I. S
ZEROKI HORYZONT
17
Rozdział 1. Cel testowania jednostkowego
1.1.
1.2.
19
Obecna kondycja testowania jednostkowego 20
Cel testowania jednostkowego 21
1.2.1. Co czyni test dobrym? 23
1.3. Stosowanie wskaźników pokrycia do mierzenia jakości zestawu testowego
1.3.1. Interpretacja wskaźnika pokrycia kodu 25
1.3.2. Interpretacja wskaźnika pokrycia gałęzi 26
1.3.3. Problemy z pokryciem gałęzi 27
1.3.4. Wymaganie procentowej wartości pokrycia 30
1.4. Właściwości dobrego zestawu testowego 31
1.4.1. Integracja z cyklem wytwarzania oprogramowania 31
1.4.2. Koncentracja na najważniejszych częściach kodu 31
1.4.3. Maksymalna wartość przy minimalnych kosztach 32
1.5. Czego nauczysz się z tej książki 33
Podsumowanie 34
24
Rozdział 2. Co to jest test jednostkowy?
2.1.
37
2.2.
2.3.
Definicja testu jednostkowego 38
2.1.1. Izolacja — podejście londyńskie 38
2.1.2. Izolacja — podejście klasyczne 44
Klasyczna i londyńska szkoła testów jednostkowych 47
2.2.1. Obsługa zależności według szkoły londyńskiej i klasycznej 47
Zestawienie podejść — klasycznej i londyńskiej szkoły testowania jednostkowego 51
2.3.1. Testowanie jednostkowe jednej klasy na raz 51
2.3.2. Testowanie jednostkowe dużej mapy wzajemnie
łączących
się klas 52
2.3.3. Dokładne wskazywanie
źródła
błędów 52
2.3.4. Inne różnice między podejściem klasycznym a londyńskim 53
Kup książkę
Poleć książkę
6
2.4.
Spis treści
Testy integracyjne według dwóch szkół 54
2.4.1. Testy systemowe to podzbiór testów integracyjnych
Podsumowanie 57
55
Rozdział 3. Anatomia testu jednostkowego
3.1.
59
Struktura testu jednostkowego 60
3.1.1. Zastosowanie wzorca AAA 60
3.1.2. Unikanie wielokrotnych sekcji przygotuj, zrób, sprawdź 61
3.1.3. Unikanie warunków w testach 62
3.1.4. Optymalna wielkość sekcji 63
3.1.5. Liczba weryfikacji w sekcji asercji 65
3.1.6. Sekwencja końcowa 65
3.1.7. Zróżnicowanie systemu poddawanego testom 65
3.1.8. Usunięcie komentarzy na temat sekcji z testów 66
3.2. Omówienie biblioteki testowej xUnit 67
3.3. Wielokrotne wykorzystanie jarzma testowego 68
3.3.1. Silne wiązania między testami — antywzorzec 69
3.3.2. Użycie konstruktora zmniejsza czytelność 70
3.3.3. Lepszy sposób wielokrotnego wykorzystania jarzma testowego 70
3.4. Nazewnictwo testów jednostkowych 72
3.4.1. Nazewnictwo testów jednostkowych — wytyczne 74
3.4.2. Przykład: zmiana nazwy testu zgodnie z wytycznymi 74
3.5. Zamiana na testy parametryzowane 76
3.5.1. Generowanie danych dla testów parametryzowanych 78
3.6. Biblioteka asercji i dalsze poprawianie czytelności testów 80
Podsumowanie 81
C
ZĘŚĆ
II. T
ESTY
,
KTÓRE PRACUJĄ DLA
C
IEBIE
4.1.
83
85
Rozdział 4. Cztery filary dobrego testu jednostkowego
4.2.
4.3.
4.4.
Cztery filary dobrego testu jednostkowego 86
4.1.1. Filar pierwszy: ochrona przed regresją 86
4.1.2. Filar drugi: odporność na zmiany 87
4.1.3. Co powoduje wyniki obarczone błędem pierwszego rodzaju 89
4.1.4. Skup się na końcowym wyniku, a nie szczegółach implementacyjnych 92
Nierozerwalny związek między pierwszą a drugą cechą 94
4.2.1. Zwiększanie dokładności testów 94
4.2.2. Waga wyników fałszywie dodatnich i fałszywie ujemnych — dynamika 96
Filary trzeci i czwarty: szybka informacja zwrotna i utrzymywalność 97
W poszukiwaniu idealnego testu 98
4.4.1. Czy możliwe jest stworzenie idealnego testu 99
4.4.2. Przypadek skrajny nr 1: test systemowy 99
4.4.3. Przypadek skrajny nr 2: testy trywialne 100
4.4.4. Przypadek skrajny nr 3: niestabilne testy 101
4.4.5. W poszukiwaniu idealnego testu — wyniki 102
Kup książkę
Poleć książkę
Spis treści
Omówienie dobrze znanych pojęć z zakresu testów automatycznych 105
4.5.1. Poziomy piramidy testów 105
4.5.2. Wybór między testowaniem czarno- i białoskrzynkowym 107
Podsumowanie 108
4.5.
7
Rozdział 5. Atrapy i stabilność testów
5.1.
111
Rozróżnienie między atrapami a zaślepkami 112
5.1.1. Rodzaje dublerów testowych 112
5.1.2. Atrapa (narzędzie) kontra atrapa (dubler testowy) 113
5.1.3. Nie poddawaj asercjom interakcji z zaślepkami 114
5.1.4. Używanie atrap i zaślepek razem 116
5.1.5. Związek atrap i zaślepek z poleceniami i zapytaniami 116
5.2. Zachowanie dające się zaobserwować a szczegóły implementacyjne 117
5.2.1. Dające się zaobserwować zachowanie to nie publiczny interfejs API 118
5.2.2. Wyciekające szczegóły implementacyjne — przykład z operacją 119
5.2.3. Dobrze zaprojektowany interfejs API i enkapsulacja 122
5.2.4. Wyciekające szczegóły implementacyjne — przykład ze stanem 123
5.3. Związek między atrapami a niestabilnością testów 125
5.3.1. Architektura heksagonalna 125
5.3.2. Komunikacja wewnątrzsystemowa i międzysystemowa 129
5.3.3. Komunikacja wewnątrzsystemowa i międzysystemowa — przykład 130
5.4. Klasyczna i londyńska szkoła testowania jednostkowego — raz jeszcze 133
5.4.1. Nie wszystkie zewnętrzne zależności należy zastępować atrapami 133
5.4.2. Wykorzystanie atrap do weryfikowania zachowania 135
Podsumowanie 135
Rozdział 6. Style testowania jednostkowego
6.1.
139
6.2.
6.3.
6.4.
Trzy style testowania jednostkowego 140
6.1.1. Styl oparty na rezultatach — definicja 140
6.1.2. Styl oparty na stanach — definicja 141
6.1.3. Styl oparty na komunikacji — definicja 142
Trzy style testowania jednostkowego — porównanie 143
6.2.1. Porównanie stylów pod względem ochrony przed regresją i szybkości
informacji zwrotnej 144
6.2.2. Porównanie stylów pod względem odporności na zmiany 144
6.2.3. Porównanie stylów pod względem utrzymywalności 145
6.2.4. Porównanie stylów — wyniki 147
Architektura funkcyjna 148
6.3.1. Czym jest programowanie funkcyjne? 148
6.3.2. Czym jest architektura funkcyjna? 151
6.3.3. Porównanie architektury funkcyjnej i heksagonalnej 153
Przejście do architektury funkcyjnej i testowania opartego na rezultatach 154
6.4.1. System audytowania — wprowadzenie 154
6.4.2. Wykorzystanie atrap w celu oddzielenia testu od systemu plików 157
6.4.3. Przejście do architektury funkcyjnej 160
6.4.4. Potencjalne dalsze kroki 164
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin