Obsah Kapitola 1. Úvod...13 Kapitola 2. Základní pojmy...17

Podobné dokumenty
Obsah. Úvod 9 Poděkování 10 Co je obsahem této knihy 10 Pro koho je tato kniha určena 11 Zpětná vazba od čtenářů 11 Errata 11

Anotace Test. Označuje public void metodu, která může být spuštěna jako test. Parametr expected označuje vyjimku, která by měla být v metodě vyvolána

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Logování zaznamenávání informací o průběhu programu, ladících a chybových informací

1. Webový server, instalace PHP a MySQL 13

1 Webový server, instalace PHP a MySQL 13

MBI - technologická realizace modelu

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Testování software. Jaroslav Žáček

Náklady na odstranění chyby stoupají, v čím pozdější fázi životního cyklu aplikace je chyba nalezena.

Specifikace. Odevzdání do

Testovací metoda. Testovací metoda. public class SimpleTest {

Agenda. Smysl teoretických cvičení Klasifikace Obecná pravidla Bugzilla Klasické problémy Poznámky k jednotlivým pojmům Antipatterns Testování testů

Zajištění kvality programového vybavení - testování

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Základy programovaní 3 - Java. Unit testy. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 26.,27.

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Testování software. Jaroslav Žáček

Testování, ladění a dokumentace programů

Zátěžové testy aplikací

Datové úložiště referenčních nemocnic (DÚ RN): Zajištění sběru dat v roce Petr Klika a kol., ÚZIS ČR

Metodiky pro automatické testování webové aplikace. Ondřej Melkes, Martin Komenda

Obsah. Úvodem 9. Kapitola 1 Než začneme 11. Kapitola 2 Dynamické zobrazování obsahu 25. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Testování SOA systémů v Oracle SOA Suite

JAVA Unit testing Java, zimní semestr

UŽIVATELSKÉ ŠKOLENÍ LOTUS NOTES

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Java/QE Akademie - Osnova

9. Ladění a testování programů. booleovský výraz

Obsah. O auto ro vi 13 V ěnování 14 Poděkování 15 Z p ětn á vazba od čtenářů 16. P rogram ování pro M in ecraft v Jávě 17

Jak testovat software v praxi. aneb šetříme svůj vlastní čas

Automatické testování GUI

Testování softwaru. 10. dubna Bořek Zelinka

Testování Java EE aplikací Petr Adámek

1. Začínáme s FrontPage

12 Zajištění kvality programového vybavení

Obsah. Úvod 9 Komu je kniha určena 11 Konvence použité v knize 11

FG Forrest, a.s. Jan Novotný. Automatické testování v praxi 2.

Obsah. Kapitola 1. Kapitola 2

Vývoj řízený testy Test Driven Development

12 Zajištění kvality programového vybavení

Elektronická podpora výuky předmětu Komprese dat

Stručný obsah. K2118.indd :15:27

ČÁST 1 ÚVOD. Instalace operačního systému 21 Aktualizace operačního systému 57 Příkazový řádek 77 Windows Script Host 103 ČÁST 2 ŘEŠENÍ

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE

Instalace produktu Ontopia. ver (open-source verze)

Quality assurance a testovací nástroje v praxi. Bohumír Zoubek bohumir.zoubek@profinit.eu

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Analýza a Návrh. Analýza

Microsoft Word základní

TÉMATICKÝ OKRUH Softwarové inženýrství

Bc. Martin Majer, AiP Beroun s.r.o.

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

INFORMAČNÍ SYSTÉMY NA WEBU

Obsah. Kapitola 1. Předmluva 11 O této knize 13 Konvence...13

Quo vadis programování? Automatizace vyhodnocování studentských úloh

Modul IRZ návod k použití

Úvod do Groovy pro Java experty

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

Algoritmizace a programování

UJO Framework. revoluční architektura beans. verze

Pro malé i obří projekty

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Reliance. Komunikační driver Johnson Controls verze 1.5.4

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

HLEDEJCENY.mobi. Obsah. Mobilní verze e-shopu. Důvody instalace

Knot DNS Resolver. Modulární rekurzivní resolver. Karel Slaný

Nabídka internetového obchodu

Michal Podzimek

JAY Systém TELwork s.r.o. JAY Systém Klient. Uživatelská příručka ( ) JAYSystem Klient - Uživatelská příručka.docx Stránka: 1 / 15

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Obsah ZÁKLADNÍ DESKA. O autorech 11 Úvod 13

Katalog egon služeb verze: 0.01

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Formy komunikace s knihovnami

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

LINUX - INSTALACE & KONFIGURACE

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

HLÁŠENÍ DODÁVEK LÉČIVÝCH PŘÍPRAVKŮ UVEDENÝCH NA TRH V ČR DRŽITELI ROZHODNUTÍ O REGISTRACI LP - REG13

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

Aplikace pro elektronicke odesla nı da vky Listu o prohlı dce zemr ele ho a dals ı ch da vek do NZIS.

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Uživatelská příručka

Předmluva 11 Typografická konvence použitá v knize Úvod do Excelu

Stručný obsah. Úvod 15. KAPITOLA 1 První kroky v systému Windows KAPITOLA 2 Hlavní panel a jeho možnosti 41. KAPITOLA 3 Soubory a složky 51

Nápověda a postupy. Instalace a aktivace PDF-XChange Viewer Pro. Instalace a aktivace software. Nápověda a postupy. 1 z

APS Web Panel. Rozšiřující webový modul pro APS Administrator. Webové rozhraní pro vybrané funkce programového balíku APS Administrator

Vývojové prostředí,průvodce novou aplikací

Obsah. Rozdíly mezi systémy Joomla 1.0 a Systém Joomla coby jednička online komunity...16 Shrnutí...16

10 Balíčky, grafické znázornění tříd, základy zapozdření

Nastavení provozního prostředí webového prohlížeče pro aplikaci

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Body Mass Index 3. Instalace

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Vstupní požadavky, doporučení a metodické pokyny

Transkript:

Obsah 5 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

6 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

Obsah 7 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... 176

Obsah 9 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

Obsah 11 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

12 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