načítání...
nákupní košík
Košík

je prázdný
a
b

Kniha: Testování pro programátory - Pavel Herout

Testování pro programátory
-13%
sleva

Kniha: Testování pro programátory
Autor:

Tato kniha z vás neudělá testera, ale může z vás udělat lepšího programátora. Lepšího z toho pohledu, že si budete více jisti kvalitou svého kódu a tuto kvalitu budete schopni ... (celý popis)
Titul doručujeme za 3 pracovní dny
Vaše cena s DPH:  499 Kč 434
+
-
rozbalKdy zboží dostanu
14,5
bo za nákup
rozbalVýhodné poštovné: 39Kč
rozbalOsobní odběr zdarma

hodnoceni - 0%hodnoceni - 0%hodnoceni - 0%hodnoceni - 0%hodnoceni - 0%   celkové hodnocení
0 hodnocení + 0 recenzí

Specifikace
Nakladatelství: » KOPP
Médium / forma: Tištěná kniha
Rok vydání: 201701
Počet stran: 405
Rozměr: 200,0x145,0x25,0 mm
Úprava: tran : ilustrace (některé barevné)
Vydání: První vydání
Hmotnost: 0,477kg
Jazyk: česky
Vazba: Brožovaná bez přebalu lesklá
ISBN: 978-80-7232-481-1
EAN: 9788072324811
Ukázka: » zobrazit ukázku
Popis


Tato kniha z vás neudělá testera, ale může z vás udělat lepšího programátora. Lepšího z toho pohledu, že si budete více jisti kvalitou svého kódu a tuto kvalitu budete schopni i prokázat. Testování, jako důležitá část zajišťování kvality software, je již považováno za nutnost a existuje pro něj mnoho nástrojů. Pravděpodobně jste se již setkali s pojmy jako jsou jednotkové testování, mockování, logování, pokrytí kódu, statická analýza atd. Možná, že jste některé z těchto technik již zkoušeli použít ve své programátorské praxi, ale pokusy nebyly z nejrůznějších důvodů úspěšné. A právě této skupině programátorů je kniha určena. Teorií o testování se zabývá pouze v nejnutnější míře, víceméně jen v úvodní kapitole. Všechny další kapitoly podrobně, na příkladech a od samých začátků vykládají jednotlivé v současné době běžně používané a praxí ověřené techniky testování. Od čtenáře nejsou vyžadovány žádné předchozí znalosti problematiky testování. I když je pro výklad a pro příklady použitý jazyk Java, mnohé vysvětlované věci jsou obecné a tudíž přenositelné i do jiných programovacích jazyků.

Předmětná hesla
Kniha je zařazena v kategoriích
Pavel Herout - další tituly autora:
Recenze a komentáře k titulu
Zatím žádné recenze.


Ukázka / obsah
Přepis ukázky

5

Obsah

Kapitola 1. Úvod ....................................................................................13

1.1. Co knize předcházelo .....................................................................13

1.2. Proč tato knížka vznikla ...............................................................13

1.3. Co můžete od knížky očekávat ......................................................14

1.4. Poděkování .....................................................................................15

1.5. Konvence .........................................................................................16

Kapitola 2. Základní pojmy ................................................................17

2.1. Úvod ................................................................................................17

2.2. Základní důvody, proč testovat .....................................................18

2.3. Nejdůležitější termíny ...................................................................20

2.3.1. Termíny chyba, porucha a selhání ..........................................20

2.3.2. Testování nedokáže říci, že program je bez chyb ...................22

2.3.3. Verifikace, validace a testování ..............................................23

2.3.4. Zajištění kvality softwaru .......................................................24

2.3.5. Vyhodnocení správnosti chování testovaného programu ......24

2.3.6. Kdy se vyplatí s testováním skončit .......................................25

2.3.7. Pozitivní a negativní testy .......................................................26

2.3.7.1. Kdy a kolik testů připravujeme .........................................28

2.3.7.2. Míchání pozitivních a negativních testů ..........................28

2.3.8. Test dává opačné výsledky – je chybný ...................................29

2.3.9. Priorita versus severita ...........................................................30

2.3.10. Testovatelnost ........................................................................31

2.3.11. Metriky ...................................................................................31

2.3.12. Popis jednotlivých testů a jejich skupin ................................32

2.3.12.1. Testovací případ ...............................................................32

2.3.12.2. Sada testovacích případů ................................................32

2.4. Typy testů ......................................................................................33

2.4.1. Členění testů ............................................................................33

2.4.1.1. Statické versus dynamické testovací metody ...................33

2.4.1.2. Černá, bílá a šedá skříňka ................................................33

2.4.1.3. Fáze testů ...........................................................................34

2.4.1.4. Dimenze kvality .................................................................37

2.4.2. Testovací mix ...........................................................................38

2.4.3. Jaké typy testů jsou v praxi v ČR používány .........................39 Obsah 2.4.4. Přehled základních typů testů ................................................40

2.4.4.1. Testování podle scénářů ....................................................40

2.4.4.2. Průzkumné testování ........................................................41

2.4.4.3. Regresní testy ....................................................................41

2.4.4.4. Jednotkové testy ................................................................42

2.4.4.5. Beta testy ...........................................................................42

2.4.4.6. Smoke test ..........................................................................42

2.4.4.7. Akceptační testování .........................................................43

2.4.4.8. Konfirmační testování ......................................................43

Kapitola 3. Jednotkové testování .....................................................44

3.1. Úvodní informace ...........................................................................44

3.1.1. Umístění JUnit .........................................................................45

3.2. Princip použití ................................................................................46

3.2.1. Ukázka jednoduché entitní třídy pro testování .....................46

3.2.2. První testovací případ .............................................................49

3.2.3. Spuštění testů z příkazové řádky ...........................................52

3.2.4. Použití testů z Eclipse .............................................................52

3.2.5. JUnit test odhalil chybu ..........................................................56

3.2.5.1. Rozdíl mezi Error a Failure ......................................................58

3.3. Základní informace o použití jednotkových testů ........................60

3.4. Běžně využívané možnosti při psaní testovacích případů ...........62

3.4.1. Parametry anotace @Test .......................................................62

3.4.1.1. Testování očekávaných výjimek ........................................62

3.4.1.2. Práce s výjimkami .............................................................65

3.4.1.3. Timeout ..............................................................................66

3.4.2. Testovací metody z org.junit.Assert ..................................68

3.4.2.1. Základní informace platné pro všechny typy ...................68

3.4.2.2. Testy shodnosti ..................................................................69

3.4.2.3. Testy logické hodnoty ........................................................70

3.4.2.3.1. Použití regulárních výrazů ............................................71

3.4.2.4. Testy obsahu referenčních proměnných ...........................72

3.4.2.5. Testy shodnosti referenčních proměnných .......................72

3.4.2.6. Testy shodnosti celých polí ................................................73

3.4.3. Akce před a po spuštění testovacích případů .........................75

3.5. Praktické náležitosti ......................................................................78

3.5.1. Ukázka testů entitní třídy ......................................................78

3.5.2. Kam se soubory s třídami testů fyzicky umísují ..................82

3.5.3. Jak se spouští najednou testy z více testovacích tříd ............82

3.5.4. Způsob pojmenovávání testovacích metod ..............................84


7Obsah

3.6. Další způsoby spouštění ................................................................86

3.6.1. Spouštění z Ant ........................................................................86

3.6.2. Spouštění z Java programu .....................................................89

3.6.2.1. Sofistikovanější možnosti ..................................................90

Kapitola 4. Antivzory v používání jednotkových testů ...............93

4.1. Obecně nedoporučované praktiky .................................................93

4.1.1. Nevhodné použití aserce ..........................................................93

4.1.1.1. Test je vyhodnocován manuálně .......................................94

4.1.1.2. Násobná aserce v testu ......................................................96

4.1.1.3. Nevhodná aserce ................................................................98

4.1.2. Příliš složité testy ..................................................................100

4.2. Konkrétní špatné techniky .........................................................103

4.2.1. Lhář (The Liar) .........................................................................103

4.2.2. Nadměrná příprava (Excessive Setup) ....................................103

4.2.3. Inspektor (The Inspector) .........................................................104

4.2.4. Velkorysé zbytky (Generous Leftovers) ....................................106

4.2.5. Vykukující kocour (The Peeping Tom) ....................................106

4.2.6. Místní hrdina (The Local Hero) ...............................................107

4.2.7. Kazatel operačního systému .................................................107

4.2.8. Hnidopich (The Nitpicker).........................................................107

4.2.9. Tajemný lovec (The Secret Catcher) .........................................108

4.2.10. Ulejvák (The Dodger) .............................................................109

4.2.11. Křikloun (The Loudmouth) .....................................................110

4.2.12. Nenasytný lovec (The Greedy Catcher) ..................................111

4.2.13. Výčet (The Enumerator) ...........................................................112

4.2.14. Cizinec (The Stranger) ............................................................113

4.2.15. Štastná cesta (Happy Path) ....................................................113

4.2.16. Podřadní občané (Second Class Citizens) ...............................114

4.2.17. Pomalé dloubnutí (The Slow Poke) .........................................114

4.2.18. Jízda zadarmo (The Free Ride)...............................................115

4.2.19. Bezejmenný test (The Test With No Name) .............................115

4.2.20. Spáč (The Sleeper) .................................................................115

4.2.21. Obr (The Giant) .......................................................................115

4.2.22. Imitátorna (The Mockery) ......................................................115

4.2.23. Nebezpečnost jednotlivých antivzorů .................................116

Kapitola 5. Pokročilé možnosti frameworku JUnit ...................117

5.1. Matchers a metoda assertThat() .............................................118

5.1.1. Nejdůležitější matchery z org.hamcrest.CoreMatchers .......120

5.2. Pořadí vykonávání testů ..............................................................125


8 Obsah

5.3. Ignorování testů ...........................................................................127

5.4. Anotace @RunWith() ..................................................................128

5.4.1. Spojování tříd testů do skupin – @RunWith(Suite.class) ....128

5.4.2. Kategorie testů – @RunWith(Categories.class) ...................129

5.5. Parametrizované testy – @RunWith(Parameterized.class) ......133

5.5.1. Základní použití .....................................................................134

5.5.2. Zajištění přehlednějšího chybového výpisu ..........................135

5.5.3. N-tice parametrů ...................................................................136

5.5.4. Programové generování parametrů testu ............................138

5.5.5. Načítání parametrů ze souboru ............................................139

5.5.6. Předávání parametrů přes konstruktor ...............................141

5.6. Rules ..............................................................................................142

5.6.1. TemporaryFolder ....................................................................143

5.6.2. ErrorCollector ......................................................................144

5.6.3. ExternalResource ..................................................................146

5.6.4. Verifier ...................................................................................147

5.6.5. TestWatcher ............................................................................148

5.6.6. TestName .................................................................................150

5.6.7. Timeout ...................................................................................151

5.6.8. ExpectedException ................................................................152

5.6.9. Stopwatch ...............................................................................154

5.7. Doplňkové akce s Rules ................................................................156

5.7.1. Několik Rules najednou ..........................................................156

5.7.2. @ClassRule ..............................................................................157

5.7.3. Použití @ClassRule pro skupinu tříd ......................................158

5.8. Assumptions – předpoklady testu ................................................159

5.8.1. Assume pro @Before nebo @BeforeClass ................................162

Kapitola 6. Mockování .......................................................................164

6.1. Ukázka doménové třídy s těsnými vazbami ...............................165

6.1.1. Rozvolnění závislostí mezi třídami .......................................167

6.1.1.1. Bussines Interface ..............................................................167

6.1.1.2. Návrhový vzor Inversion of Control (IC) ...........................168

6.1.1.3. Návrhový vzor Dependency Injection (DI) ........................168

6.2. Ukázka upravené doménové třídy ..............................................169

6.3. Principy řešení problému „rozplizlého“ testování ......................170

6.3.1. Implementace stub objektů ....................................................170

6.3.2. Implementace mock objektů ..................................................172

6.4. Framework EasyMock – základní dovednosti ............................173

6.4.1. První testovací případ ...........................................................173

6.4.2. Využití @Before a @After ......................................................176Obsah 6.4.3. Využití více záznamů v mock objektu ...................................177

6.4.4. Více testovacích případů ........................................................179

6.4.5. Spouštění z Ant ......................................................................182

6.5. Mock objekt bez použití business interface ..................................183

6.5.1. Předchozí případ pomocí „class“ mock objektu .....................183

6.5.2. Dva nezávislé mock objekty ...................................................186

6.5.3. Využití parametrizovaného testu .........................................192

6.6. Speciality ......................................................................................193

6.6.1. Různé typy mock objektů .......................................................193

6.6.2. Opakování jednou nahraného volání ....................................194

6.6.3. Testování void metod a výjimek ..........................................194

6.6.4. Mock objekty s nekonkrétními formálními parametry........196

Kapitola 7. Techniky strukturálního testování ......................... 203

7.1. Ukázka možností ..........................................................................205

7.2. Druhy pokrytí ..............................................................................206

7.3. Nástroje pro zjištění pokrytí kódu v Javě ...................................210

7.4. Nástroj EclEmma .........................................................................211

7.4.1. První spuštění EclEmma pro ověření správnosti instalace 211

7.4.1.1. Příprava testovaného a testovacího kódu .......................211

7.4.1.2. Konfigurace pluginu EclEmma k projektu ....................213

7.4.2. Zobrazení naměřených výsledků...........................................217

7.4.2.1. Záložka Coverage View – pohled manažera ...................217

7.4.2.2. Obarvení zdrojového kódu – pohled vývojáře .................220

7.4.2.3. Sumarizace různých typů pokrytí – pohled testera ......221 7.4.3. Konfigurace ............................................................................223

7.4.4. Export výsledků .....................................................................223

7.5. Nejužívanější druhy pokrytí kódu...............................................223

7.5.1. Pokrytí příkazů ......................................................................223

7.5.2. Pokrytí rozhodnutí/logických podmínek – DC .....................229

7.5.3. Pokrytí podmínek – CC .........................................................231

7.5.4. Rozdíly mezi DC, CC, C/DC, MC/CD a MCC ........................234

7.5.4.1. MCC – modified condition coverage ..................................235

7.5.4.2. MC/DC – multiple condition/decision coverage ................237

7.5.4.3. C/DC – condition/decision coverage .................................238

7.5.4.4. CC – condition coverage ...................................................240

7.5.4.5. DC – decision coverage .....................................................241

7.5.5. Testování základních cest .....................................................243

7.5.6. Cyklomatická složitost ...........................................................243


10 Obsah

Kapitola 8. Jak připravit testovací data .......................................249

8.1. Rozdělení tříd ekvivalence ...........................................................250

8.1.1. Typy tříd ekvivalence .............................................................251

8.1.2. Statické a dynamické hodnoty ..............................................253

8.1.3. Problémy dekompozice – počet tříd ekvivalence...................254

8.1.4. Praktický případ – třídy ekvivalence pro datum .................254

8.2. Testování hraničních hodnot ......................................................259

8.2.1. Typy hraničních hodnot.........................................................259

8.2.2. Testování hraničních případů ...............................................260

8.2.3. Počty testů a postup ..............................................................261

8.2.4. Triviální optimální příklad testování hraničních případů . 261

8.2.5. Problémový příklad testování hraničních případů ..............262

8.3. Rozhodovací tabulky ....................................................................267

8.4. Speciální případy .........................................................................273

8.4.1. Subhraniční podmínky ..........................................................273

8.4.2. Unikátní hodnoty ...................................................................275

8.4.3. Zvláštní podmínky .................................................................275

8.4.4. Prázdné hodnoty ....................................................................275

8.4.5. Neplatné, chybné, nesprávné a nesmyslné údaje .................276

Kapitola 9. Testování webových aplikací .....................................277

9.1. Specifika webových aplikací ........................................................277

9.1.1. Značně různá složitost na technologické úrovni ..................278

9.1.2. Časté změny ...........................................................................278

9.1.3. Proměnlivá zátěž ....................................................................279

9.1.4. Ztížená práce se soubory ........................................................279

9.1.5. Bezestavovost .........................................................................279

9.1.6. Možná identifikace ovládacích prvků....................................279

9.1.7. Množství používaných web prohlížečů a jejich verzí ............280

9.2. Testovací framework Selenium ...................................................280

9.3. Selenium WebDriver ....................................................................281

9.3.1. Úvodní informace ...................................................................281

9.3.2. Ukázka jednoduchého kompletního funkčního testu ..........282

9.3.3. Základní možnosti Selenium WebDriver API ......................284

9.3.3.1. Přepnutí na konkrétní stránku .......................................285

9.3.3.2. Lokalizace UI elementů ..................................................285

9.3.3.3. Uživatelský vstup ............................................................288

9.3.3.4. Kliknutí na elementu ......................................................290

9.3.3.5. Zasílání funkčních kláves ...............................................291

9.3.3.6. Odeslání vyplněného formuláře ......................................292

9.3.3.7. Čekání na událost ............................................................292


11Obsah

9.3.4. Test statických prvků ............................................................294

9.3.5. Testování na konkrétním webovém prohlížeči ....................297

9.3.5.1. Ukázka použití driveru pro Chrome ...............................298

Kapitola 10. Logování ....................................................................... 300

10.1. Základní pojmy ...........................................................................300

10.2. Apache Log4j 2 ...........................................................................305

10.2.1. Logované informace .............................................................306

10.2.2. Úrovně závažnosti ................................................................307

10.2.3. Základní použití logování ....................................................308

10.2.3.1. Třída Logger ...................................................................308

10.2.3.2. Jak to zhruba funguje ...................................................310

10.2.3.3. Další užitečné metody třídy Logger ..............................311

10.2.3.4. Substituce a formátování parametrů výpisu ...............312

10.2.3.5. Vhodné jméno loggeru ...................................................314

10.2.4. Základy konfigurace ............................................................315

10.2.4.1. Možné způsoby konfigurace ..........................................315

10.2.4.1.1. Název v proměnné log4j.configurationFile ......317

10.2.4.1.2. Soubor log4j2-test.xml v Classpath ......................318

10.2.4.1.3. Soubor log4j2.xml v Classpath .................................318

10.2.4.1.4. Třída DefaultConfiguration a potlačení výpisů ....... 319

10.2.4.2. Konfigurační soubor pro defaultní konfiguraci ...........320

10.2.4.3. Principy zpracování logu a hierarchie konfigurace .....324

10.2.4.4. Hierarchie loggerů a vhodná aditivita ..........................327

10.2.4.5. Nevhodná aditivita ........................................................327

10.2.4.6. Zabránění nevhodné aditivitě .......................................328

10.2.4.7. Automatická rekonfigurace ...........................................329

10.2.4.8. Použití properties ...........................................................331

10.2.5. Dva typy XML konfiguračních souborů .............................333

10.2.5.1. XML soubor strict="false" ..........................................333

10.2.5.2. XML soubor strict="true" ...........................................335

10.2.6. Appendery ............................................................................337

10.2.6.1. ConsoleAppender ............................................................338

10.2.6.2. FileAppender ..................................................................339

10.2.6.3. RollingFileAppender ......................................................340

10.2.6.4. RandomAccessFileAppender .........................................345

10.2.6.5. AsyncAppender ..............................................................346

10.2.7. Layouty .................................................................................347

10.2.7.1. HTMLLayout ......................................................................348

10.2.7.2. XMLLayout .......................................................................349

10.2.7.3. Univerzální PatternLayout ...........................................349 Obsah 10.2.8. Filtry .....................................................................................352

10.2.8.1. ThresholdFilter .............................................................353

10.2.8.2. BurstFilter ....................................................................354

10.2.8.3. TimeFilter ......................................................................356

10.2.8.4. RegexFilter ....................................................................357

10.2.8.5. CompositeFilter ............................................................358

10.2.9. Realistický příklad ..............................................................361

Kapitola 11. Statická analýza kódu ............................................... 368

11.1. Základní pojmy, přístupy a dosah statické analýzy .................368

11.1.1. Pojmy ohledně čitelnosti zdrojového kódu ...........................370

11.1.1.1. Kódovací standard ..........................................................370

11.1.1.2. Procházení kódu .............................................................371

11.1.2. Pojem technický dluh ...........................................................372

11.1.3. Obecné vlastnosti statických analyzátorů ..........................373

11.2. PMD ............................................................................................375

11.2.1. Spuštění z příkazové řádky .................................................376

11.2.2. Pravidla a jejich seznamy ....................................................379

11.2.2.1. Popis pravidla .................................................................379

11.2.2.2. Základní existující seznamy .........................................380

11.2.2.3. Doplňkové existující seznamy .......................................382

11.2.2.4. Vlastní seznam ..............................................................382

11.2.3. Potlačení chybového hlášení ................................................384

11.2.4. Praktické zkušenosti ...........................................................385

11.2.5. Integrace do Eclipse .............................................................387

11.2.5.1. Instalace .........................................................................387

11.2.5.2. První spuštění a základní ovládání .............................388

11.2.5.3. Reporty ...........................................................................392

11.2.5.4. Konfigurace ....................................................................392

Použitá literatura ...............................................................................394

Rejstřík ................................................................................................ 396




       
Knihkupectví Knihy.ABZ.cz - online prodej | ABZ Knihy, a.s.
ABZ knihy, a.s.
 
 
 

Knihy.ABZ.cz - knihkupectví online -  © 2004-2019 - ABZ ABZ knihy, a.s. TOPlist