reklama - zainteresowany?

Testy jednostkowe. Zasady, praktyki i wzorce - Helion

Testy jednostkowe. Zasady, praktyki i wzorce
ebook
Autor: Vladimir Khorikov
Tytuł oryginału: Unit Testing Principles, Practices, and Patterns
Tłumaczenie: Katarzyna Bogusławska
ISBN: 978-83-283-6872-9
stron: 296, Format: ebook
Data wydania: 2020-10-26
Księgarnia: Helion

Cena książki: 33,50 zł (poprzednio: 67,00 zł)
Oszczędzasz: 50% (-33,50 zł)

Dodaj do koszyka Testy jednostkowe. Zasady, praktyki i wzorce

Tagi: C# - Programowanie | Inne - Programowanie | Testowanie oprogramowania

Każdy inżynier oprogramowania zna teoretyczne podstawy testowania. O tym, że sumienne przeprowadzenie testów ma podstawowe znaczenie dla jakoÅ›ci gotowego produktu, nie trzeba nikogo przekonywać. A jednak wciąż zbyt czÄ™sto okazuje siÄ™, że zaplanowanie, napisanie i przeprowadzenie testów jednostkowych w praktyce nie jest Å‚atwym zadaniem. Co gorsza, niewÅ‚aÅ›ciwe testy psujÄ… kod, mnożą błędy i zabierajÄ… mnóstwo cennego czasu i pieniÄ™dzy. Okazuje siÄ™, że dla uzyskania maksymalnej jakoÅ›ci projektu, który trzeba dostarczyć w krótkim czasie, konieczne jest nauczenie siÄ™ praktycznego stosowania zasad i wzorców testowania jednostkowego.

JeÅ›li znasz już podstawy testowania jednostkowego, dziÄ™ki tej książce nauczysz siÄ™ projektowania i pisania testów, które obierajÄ… za cel model domeny i pozostaÅ‚e kluczowe obszary kodu. Ten przejrzyÅ›cie napisany przewodnik poprowadzi CiÄ™ przez proces tworzenia zestawów testowych o optymalnej wartoÅ›ci, bezpiecznej automatyzacji testowania i umiejÄ™tnego włączania go w cykl życia oprogramowania. W książce znalazÅ‚y siÄ™ uniwersalne wskazówki dotyczÄ…ce analizy dowolnych testów jednostkowych oraz porady odnoszÄ…ce siÄ™ do zmian testów nastÄ™pujÄ…cych wraz ze zmianami kodu produkcyjnego. Nie zabrakÅ‚o również informacji, dziÄ™ki którym sprawnie zidentyfikujesz i wykluczysz ewentualne antywzorce testowania. MateriaÅ‚ zostaÅ‚ bogato zilustrowany przejrzystymi przykÅ‚adami kodu napisanego w C#. Naturalnie, majÄ… one zastosowanie także dla innych jÄ™zyków programowania.

W książce między innymi:

  • cel testowania jednostkowego i cechy dobrych testów
  • fundamenty porzÄ…dnego testowania jednostkowego
  • wpÅ‚yw zaÅ›lepek i sterowników na stabilność testów
  • style testowania jednostkowego
  • zalety i ograniczenia testowania integracyjnego

Przed wdrożeniem dobrze przetestuj swój kod!

Dodaj do koszyka Testy jednostkowe. Zasady, praktyki i wzorce

 

Osoby które kupowały "Testy jednostkowe. Zasady, praktyki i wzorce", wybierały także:

  • Gray Hat C#. JÄ™zyk C# w kontroli i Å‚amaniu zabezpieczeÅ„
  • JÄ™zyk C. Kurs video. Praktyczne wprowadzenie do programowania
  • JÄ™zyk C# w praktyce. Kurs video. Przetwarzanie danych zewnÄ™trznych
  • Programowanie asynchroniczne i równolegÅ‚e w C#. Kurs video. Poziom podstawowy
  • Platforma Xamarin. Kurs video. Poziom drugi. Zaawansowane techniki tworzenia aplikacji cross-platform

Dodaj do koszyka Testy jednostkowe. Zasady, praktyki i wzorce

Spis treści

Testy jednostkowe. Zasady, praktyki i wzorce eBook -- spis tre¶ci

 

Przedmowa 11

 

Podziêkowania 12

O ksi±¿ce 13

O autorze 15

CZÊ¦Æ I. SZEROKI HORYZONT 17

Rozdzia³ 1. Cel testowania jednostkowego 19

  • 1.1. Obecna kondycja testowania jednostkowego 20
  • 1.2. 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 24
    • 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

Rozdzia³ 2. Co to jest test jednostkowy? 37

  • 2.1. Definicja testu jednostkowego 38
    • 2.1.1. Izolacja - podej¶cie londyñskie 38
    • 2.1.2. Izolacja - podej¶cie klasyczne 44
  • 2.2. 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
  • 2.3. 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
  • 2.4. Testy integracyjne wed³ug dwóch szkó³ 54
    • 2.4.1. Testy systemowe to podzbiór testów integracyjnych 55
  • Podsumowanie 57

Rozdzia³ 3. Anatomia testu jednostkowego 59

  • 3.1. 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

CZÊ¦Æ II. TESTY, KTÓRE PRACUJ¡ DLA CIEBIE 83

Rozdzia³ 4. Cztery filary dobrego testu jednostkowego 85

  • 4.1. 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
  • 4.2. 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
  • 4.3. Filary trzeci i czwarty: szybka informacja zwrotna i utrzymywalno¶æ 97
  • 4.4. 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
  • 4.5. 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

Rozdzia³ 5. Atrapy i stabilno¶æ testów 111

  • 5.1. 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 139

  • 6.1. 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
  • 6.2. 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
  • 6.3. 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
  • 6.4. 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
  • 6.5. Wady architektury funkcyjnej 165
    • 6.5.1. Zasadno¶æ stosowania architektury funkcyjnej 165
    • 6.5.2. Wady pod wzglêdem wydajno¶ci 167
    • 6.5.3. Wady pod wzglêdem rozmiaru bazy kodu 167
  • Podsumowanie 168

Rozdzia³ 7. Zmiany ku bardziej warto¶ciowym testom jednostkowym 171

  • 7.1. Okre¶lenie kodu podlegaj±cego refaktoryzacji 172
    • 7.1.1. Cztery typy kodu 172
    • 7.1.2. Wykorzystanie wzorca Skromny Obiekt do podzia³u przeszacowanego kodu 175
  • 7.2. Zmiany ku bardziej warto¶ciowym testom 178
    • 7.2.1. System zarz±dzania kontaktami z klientami - wprowadzenie 178
    • 7.2.2. Próba nr 1: ujawnienie zale¿no¶ci 180
    • 7.2.3. Próba nr 2: wprowadzenie warstwy us³ug aplikacji 180
    • 7.2.4. Próba nr 3: usuniêcie z³o¿ono¶ci z us³ugi aplikacji 182
    • 7.2.5. Próba nr 4: wprowadzenie nowej klasy Company 184
  • 7.3. Analiza optymalnego pokrycia testami jednostkowymi 186
    • 7.3.1. Testowanie warstwy domeny i kodu pomocniczego 187
    • 7.3.2. Testowanie kodu z pozosta³ych czê¶ci diagramu 188
    • 7.3.3. Czy powinno siê testowaæ warunki wstêpne? 188
  • 7.4. Obs³uga logiki warunkowej w kontrolerach 189
    • 7.4.1. Wykorzystanie wzorca Polecenie 191
    • 7.4.2. Wykorzystanie zdarzeñ domeny do ¶ledzenia zmian w modelu domeny 194
  • 7.5. Wnioski 197
  • Podsumowanie 199

CZÊ¦Æ III. TESTY INTEGRACYJNE 203

Rozdzia³ 8. Po co testy integracyjne? 205

  • 8.1. Test integracyjny - definicja 206
    • 8.1.1. Rola testów integracyjnych 206
    • 8.1.2. Piramida testów - jeszcze raz 207
    • 8.1.3. Testy integracyjne kontra szybka reakcja 208
  • 8.2. Które zewnêtrzne zale¿no¶ci testowaæ bezpo¶rednio 209
    • 8.2.1. Dwa typy zale¿no¶ci poza kontrol± procesu 210
    • 8.2.2. Obs³uga zarz±dzanych i niezarz±dzanych zale¿no¶ci 211
    • 8.2.3. Co, je¶li nie mo¿esz wykorzystaæ prawdziwej bazy danych w testach integracyjnych? 212
  • 8.3. Testy integracyjne - przyk³ad 213
    • 8.3.1. Jakie scenariusze przetestowaæ? 214
    • 8.3.2. Klasyfikacja bazy danych i szyny danych 214
    • 8.3.3. Co z testami systemowymi? 215
    • 8.3.4. Test integracyjny - próba pierwsza 216
  • 8.4. Stosowanie interfejsów do abstrakcji zale¿no¶ci 217
    • 8.4.1. Interfejsy i lu¼ne wi±zania 217
    • 8.4.2. Po co u¿ywaæ interfejsów dla zewnêtrznych zale¿no¶ci? 218
    • 8.4.3. Stosowanie interfejsów dla wewnêtrznych zale¿no¶ci 219
  • 8.5. Najlepsze praktyki testów integracyjnych 220
    • 8.5.1. Jasno oznacz granice modelu domeny 220
    • 8.5.2. Zmniejszaj liczbê warstw 220
    • 8.5.3. Usuwaj zapêtlone zale¿no¶ci 222
    • 8.5.4. U¿ycie wielu sekcji dzia³ania w te¶cie 224
  • 8.6. Jak testowaæ zapisywanie logów 225
    • 8.6.1. Czy w ogóle powinno siê testowaæ pisanie logów 225
    • 8.6.2. Jak testowaæ pisanie logów 226
    • 8.6.3. Ile logowania wystarczy 231
    • 8.6.4. Jak przekazywaæ instancje mechanizmu logowania 232
  • 8.7. Wnioski 233
  • Podsumowanie 233

Rozdzia³ 9. Najlepsze praktyki modelowania za pomoc± atrap 237

  • 9.1. Maksymalizowanie warto¶ci atrap 237
    • 9.1.1. Weryfikacja interakcji na obrze¿ach systemu 240
    • 9.1.2. Zastêpowanie atrap agentami 243
    • 9.1.3. Co z interfejsem IDomainLogger 245
  • 9.2. Najlepsze praktyki modelowania za pomoc± atrap 246
    • 9.2.1. Atrapy s³u¿± tylko do testów integracyjnych 246
    • 9.2.2. Wiele atrap w jednym te¶cie 246
    • 9.2.3. Weryfikacja liczby ¿±dañ 247
    • 9.2.4. Modeluj tylko typy, które sam utworzy³e¶ 247
  • Podsumowanie 248

Rozdzia³ 10. Testowanie bazy danych 251

  • 10.1. Warunki umo¿liwiaj±ce testowanie bazy danych 252
    • 10.1.1. Przechowywanie bazy danych w systemie kontroli wersji 252
    • 10.1.2. Dane referencyjne to czê¶æ schematu bazy danych 253
    • 10.1.3. Oddzielne instancje dla ka¿dego programisty 254
    • 10.1.4. Stanowe i migracyjne podej¶cie do dostarczania bazy danych 254
  • 10.2. Zarz±dzanie transakcjami w bazie danych 256
    • 10.2.1. Zarz±dzanie transakcjami w kodzie produkcyjnym 256
    • 10.2.2. Zarz±dzanie transakcjami w testach integracyjnych 263
  • 10.3. Cykl ¿ycia danych testowych 265
    • 10.3.1. Równoleg³e i sekwencyjne wykonanie testów 265
    • 10.3.2. Sprz±tanie danych pomiêdzy wykonaniami testów 266
    • 10.3.3. Unikanie baz danych operuj±cych w pamiêci 267
  • 10.4. Wielokrotne wykorzystanie kodu w sekcjach 268
    • 10.4.1. Wielokrotne u¿ycie kodu w sekcji przygotowañ 268
    • 10.4.2. Wielokrotne u¿ycie kodu w sekcji dzia³ania 271
    • 10.4.3. Wielokrotne u¿ycie kodu w sekcji asercji 271
    • 10.4.4. Czy test tworzy zbyt wiele transakcji do bazy danych 272
  • 10.5. Czêsto zadawane pytania na temat testowania baz danych 273
    • 10.5.1. Czy testowaæ operacje odczytu? 273
    • 10.5.2. Czy testowaæ repozytoria? 275
  • 10.6. Wnioski 276
  • Podsumowanie 276

CZÊ¦Æ IV. ANTYWZORCE TESTOWANIA JEDNOSTKOWEGO 279

Rozdzia³ 11. Antywzorce testowania jednostkowego 281

  • 11.1. Testowanie jednostkowe prywatnych metod 282
    • 11.1.1. Metody prywatne i niestabilno¶æ testów 282
    • 11.1.2. Metody prywatne i niedostateczne pokrycie 282
    • 11.1.3. Kiedy testowanie metod prywatnych jest akceptowalne 283
  • 11.2. Udostêpnianie stanu prywatnego 285
  • 11.3. Przenikanie wiedzy domenowej do testów 286
  • 11.4. Zanieczyszczanie kodu 288
  • 11.5. Modelowanie za pomoc± atrap konkretnych klas 290
  • 11.6. Praca z czasem 293
    • 11.6.1. Czas jako kontekst ¶rodowiskowy 293
    • 11.6.2. Czas jako jawna zale¿no¶æ 294
  • 11.7. Wnioski 295
  • Podsumowanie 295

Dodaj do koszyka Testy jednostkowe. Zasady, praktyki i wzorce

Code, Publish & WebDesing by CATALIST.com.pl



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