Jednotkové testování

Transkript

Jednotkové testování
Jednotkové testování
Tereza Velká a Vojtěch Veselý
6. října 2015
1 / 17
Osnova
1
Úvod
2
Jednotkové testování - „Teorie“
3
Jednotkové testování v praxi
Python – unittest
Java – JUnit
4
Závěr
2 / 17
Osnova
1
Úvod
2
Jednotkové testování - „Teorie“
3
Jednotkové testování v praxi
Python – unittest
Java – JUnit
4
Závěr
Proč testovat
Definice
Testování ověřuje soulad implementace se specifikací a
s očekáváním zákazníka.
Úvod
3 / 17
Proč testovat
Definice
Testování ověřuje soulad implementace se specifikací a
s očekáváním zákazníka.
K čemu je dobré?
Úvod
3 / 17
Proč testovat
Definice
Testování ověřuje soulad implementace se specifikací a
s očekáváním zákazníka.
K čemu je dobré?
• Nalezení chyb,
Úvod
3 / 17
Proč testovat
Definice
Testování ověřuje soulad implementace se specifikací a
s očekáváním zákazníka.
K čemu je dobré?
• Nalezení chyb,
• snadnější refaktorizace,
Úvod
3 / 17
Proč testovat
Definice
Testování ověřuje soulad implementace se specifikací a
s očekáváním zákazníka.
K čemu je dobré?
• Nalezení chyb,
• snadnější refaktorizace,
• udržitelnost softwaru,
Úvod
3 / 17
Proč testovat
Definice
Testování ověřuje soulad implementace se specifikací a
s očekáváním zákazníka.
K čemu je dobré?
• Nalezení chyb,
• snadnější refaktorizace,
• udržitelnost softwaru,
• pro velké projekty (návrhy změn a oprav).
Úvod
3 / 17
Jak a co se testuje?
Jak?
Úvod
4 / 17
Jak a co se testuje?
Jak?
• Ruční testování,
Úvod
4 / 17
Jak a co se testuje?
Jak?
• Ruční testování,
• automatické testování.
Úvod
4 / 17
Jak a co se testuje?
Jak?
• Ruční testování,
• automatické testování.
Co?
Úvod
4 / 17
Jak a co se testuje?
Jak?
• Ruční testování,
• automatické testování.
Co?
• Funkčnost (functionality),
Úvod
4 / 17
Jak a co se testuje?
Jak?
• Ruční testování,
• automatické testování.
Co?
• Funkčnost (functionality),
• použitelnost (usability),
Úvod
4 / 17
Jak a co se testuje?
Jak?
• Ruční testování,
• automatické testování.
Co?
• Funkčnost (functionality),
• použitelnost (usability),
• spolehlivost (reliability),
Úvod
4 / 17
Jak a co se testuje?
Jak?
• Ruční testování,
• automatické testování.
Co?
• Funkčnost (functionality),
• použitelnost (usability),
• spolehlivost (reliability),
• výkon (performance),
Úvod
4 / 17
Jak a co se testuje?
Jak?
• Ruční testování,
• automatické testování.
Co?
• Funkčnost (functionality),
• použitelnost (usability),
• spolehlivost (reliability),
• výkon (performance),
• podporovatelnost (supportability).
Úvod
4 / 17
Testovací schéma a typy testů
1. Jednotkové testování (unit testing),
Úvod
5 / 17
Testovací schéma a typy testů
1. Jednotkové testování (unit testing),
2. funkční testy (functional testing),
Úvod
5 / 17
Testovací schéma a typy testů
1. Jednotkové testování (unit testing),
2. funkční testy (functional testing),
3. integrační testování (integration testing),
Úvod
5 / 17
Testovací schéma a typy testů
1. Jednotkové testování (unit testing),
2. funkční testy (functional testing),
3. integrační testování (integration testing),
4. systémové testování (system testing),
Úvod
5 / 17
Testovací schéma a typy testů
1. Jednotkové testování (unit testing),
2. funkční testy (functional testing),
3. integrační testování (integration testing),
4. systémové testování (system testing),
5. akceptační testování(acceptance testing).
Úvod
5 / 17
Osnova
1
Úvod
2
Jednotkové testování - „Teorie“
3
Jednotkové testování v praxi
Python – unittest
Java – JUnit
4
Závěr
Co je Unit testing
Definice (Roy Osherove, 2011)
„A unit test is an automated piece of code that invokes a unit of
work in the system and then checks a single assumption about
the behavior of that unit of work.“
Jednotkové testování - „Teorie“
6 / 17
Co je Unit testing
Definice (Roy Osherove, 2011)
„A unit test is an automated piece of code that invokes a unit of
work in the system and then checks a single assumption about
the behavior of that unit of work.“
• Testujeme jednotlivé (izolované) části (takzvané jednotky)
vyvíjeného systému na té nejnižší úrovni.
Jednotkové testování - „Teorie“
6 / 17
Co je Unit testing
Definice (Roy Osherove, 2011)
„A unit test is an automated piece of code that invokes a unit of
work in the system and then checks a single assumption about
the behavior of that unit of work.“
• Testujeme jednotlivé (izolované) části (takzvané jednotky)
vyvíjeného systému na té nejnižší úrovni.
Co jsou jednotky?
Jednotkové testování - „Teorie“
6 / 17
Co je Unit testing
Definice (Roy Osherove, 2011)
„A unit test is an automated piece of code that invokes a unit of
work in the system and then checks a single assumption about
the behavior of that unit of work.“
• Testujeme jednotlivé (izolované) části (takzvané jednotky)
vyvíjeného systému na té nejnižší úrovni.
Co jsou jednotky?
Funkční logické celky, nejčastěji metoda, třída nebo více tříd,
které spolupracují. Jsou izolovány od svého okolí, aby se
zamezilo vlivu tohoto okolí na testovanou jednotku.
Jednotkové testování - „Teorie“
6 / 17
Jednotkové testy
Výhody:
Jednotkové testování - „Teorie“
7 / 17
Jednotkové testy
Výhody:
• mohou být zcela automatizované,
Jednotkové testování - „Teorie“
7 / 17
Jednotkové testy
Výhody:
• mohou být zcela automatizované,
• dají se spouštět v jakémkoliv pořadí,
Jednotkové testování - „Teorie“
7 / 17
Jednotkové testy
Výhody:
• mohou být zcela automatizované,
• dají se spouštět v jakémkoliv pořadí,
• objeví chyby hned v první části vývoje,
Jednotkové testování - „Teorie“
7 / 17
Jednotkové testy
Výhody:
• mohou být zcela automatizované,
• dají se spouštět v jakémkoliv pořadí,
• objeví chyby hned v první části vývoje,
• rychlé.
Jednotkové testování - „Teorie“
7 / 17
Jednotkové testy
Výhody:
• mohou být zcela automatizované,
• dají se spouštět v jakémkoliv pořadí,
• objeví chyby hned v první části vývoje,
• rychlé.
Nevýhody:
Jednotkové testování - „Teorie“
7 / 17
Jednotkové testy
Výhody:
• mohou být zcela automatizované,
• dají se spouštět v jakémkoliv pořadí,
• objeví chyby hned v první části vývoje,
• rychlé.
Nevýhody:
• příprava zabírá hodně času,
Jednotkové testování - „Teorie“
7 / 17
Jednotkové testy
Výhody:
• mohou být zcela automatizované,
• dají se spouštět v jakémkoliv pořadí,
• objeví chyby hned v první části vývoje,
• rychlé.
Nevýhody:
• příprava zabírá hodně času,
• obtížnost vymyslet testy,
Jednotkové testování - „Teorie“
7 / 17
Jednotkové testy
Výhody:
• mohou být zcela automatizované,
• dají se spouštět v jakémkoliv pořadí,
• objeví chyby hned v první části vývoje,
• rychlé.
Nevýhody:
• příprava zabírá hodně času,
• obtížnost vymyslet testy,
• nutnost udržovat testy,
Jednotkové testování - „Teorie“
7 / 17
Jednotkové testy
Výhody:
• mohou být zcela automatizované,
• dají se spouštět v jakémkoliv pořadí,
• objeví chyby hned v první části vývoje,
• rychlé.
Nevýhody:
• příprava zabírá hodně času,
• obtížnost vymyslet testy,
• nutnost udržovat testy,
• nezkontrolují funkčnost celé aplikace
Jednotkové testování - „Teorie“
7 / 17
Jednotkové testy
Výhody:
• mohou být zcela automatizované,
• dají se spouštět v jakémkoliv pořadí,
• objeví chyby hned v první části vývoje,
• rychlé.
Nevýhody:
• příprava zabírá hodně času,
• obtížnost vymyslet testy,
• nutnost udržovat testy,
• nezkontrolují funkčnost celé aplikace
• bývalo to velice pracné.
Jednotkové testování - „Teorie“
7 / 17
Postup
1. Vybrat jednotku, kterou chceme testovat.
Jednotkové testování - „Teorie“
8 / 17
Postup
1. Vybrat jednotku, kterou chceme testovat.
2. Ujasnit si, co má dělat nebo jaký má být její výstup.
Jednotkové testování - „Teorie“
8 / 17
Postup
1. Vybrat jednotku, kterou chceme testovat.
2. Ujasnit si, co má dělat nebo jaký má být její výstup.
3. Napsat funkci, která jednotku otestuje.
Jednotkové testování - „Teorie“
8 / 17
Postup
1. Vybrat jednotku, kterou chceme testovat.
2. Ujasnit si, co má dělat nebo jaký má být její výstup.
3. Napsat funkci, která jednotku otestuje.
Příklad: Test funkce na sčítání.
Jednotkové testování - „Teorie“
8 / 17
Postup
1. Vybrat jednotku, kterou chceme testovat.
2. Ujasnit si, co má dělat nebo jaký má být její výstup.
3. Napsat funkci, která jednotku otestuje.
Příklad: Test funkce na sčítání.
Jakým způsobem testovat?
Jednotkové testování - „Teorie“
8 / 17
Postup
1. Vybrat jednotku, kterou chceme testovat.
2. Ujasnit si, co má dělat nebo jaký má být její výstup.
3. Napsat funkci, která jednotku otestuje.
Příklad: Test funkce na sčítání.
Jakým způsobem testovat?
Existuje hodně způsobů, nejznámější jsou metody bílé a černé
škříňky.
Jednotkové testování - „Teorie“
8 / 17
Metoda černé a bílé skříňky
Metoda černé skříňky (black box testing)
Jednotkové testování - „Teorie“
9 / 17
Metoda černé a bílé skříňky
Metoda černé skříňky (black box testing)
• Nemusíme znát implementaci.
Jednotkové testování - „Teorie“
9 / 17
Metoda černé a bílé skříňky
Metoda černé skříňky (black box testing)
• Nemusíme znát implementaci.
• Zajímá nás pouze vstup a výstup.
Jednotkové testování - „Teorie“
9 / 17
Metoda černé a bílé skříňky
Metoda černé skříňky (black box testing)
• Nemusíme znát implementaci.
• Zajímá nás pouze vstup a výstup.
• Nevíme, jak skříňka pracuje vevnitř s daty ani jak
zpracovává výjimky.
Jednotkové testování - „Teorie“
9 / 17
Metoda černé a bílé skříňky
Metoda černé skříňky (black box testing)
• Nemusíme znát implementaci.
• Zajímá nás pouze vstup a výstup.
• Nevíme, jak skříňka pracuje vevnitř s daty ani jak
zpracovává výjimky.
Metoda bílé skříňky (white box testing)
Jednotkové testování - „Teorie“
9 / 17
Metoda černé a bílé skříňky
Metoda černé skříňky (black box testing)
• Nemusíme znát implementaci.
• Zajímá nás pouze vstup a výstup.
• Nevíme, jak skříňka pracuje vevnitř s daty ani jak
zpracovává výjimky.
Metoda bílé skříňky (white box testing)
• Skříňka se kontroluje i „zevnitř“, testy napasujeme na
implementaci.
Jednotkové testování - „Teorie“
9 / 17
Metoda černé a bílé skříňky
Metoda černé skříňky (black box testing)
• Nemusíme znát implementaci.
• Zajímá nás pouze vstup a výstup.
• Nevíme, jak skříňka pracuje vevnitř s daty ani jak
zpracovává výjimky.
Metoda bílé skříňky (white box testing)
• Skříňka se kontroluje i „zevnitř“, testy napasujeme na
implementaci.
• Víme, jak jednotka pracuje s chybama a výjimkama.
Jednotkové testování - „Teorie“
9 / 17
Metoda černé a bílé skříňky
Metoda černé skříňky (black box testing)
• Nemusíme znát implementaci.
• Zajímá nás pouze vstup a výstup.
• Nevíme, jak skříňka pracuje vevnitř s daty ani jak
zpracovává výjimky.
Metoda bílé skříňky (white box testing)
• Skříňka se kontroluje i „zevnitř“, testy napasujeme na
implementaci.
• Víme, jak jednotka pracuje s chybama a výjimkama.
• Testujeme závislosti, průběžné výsledky, všechny možné
„cesty“ a stav skříňky na konci.
Jednotkové testování - „Teorie“
9 / 17
Slovníček pro jednotkové testy
Mock objekty: Objekty simulující interakci s okolím při
jednotkovém testování. Dají se vytvářet ručně (pracné) nebo
použít nástroje.
Jednotkové testování - „Teorie“
10 / 17
Slovníček pro jednotkové testy
Mock objekty: Objekty simulující interakci s okolím při
jednotkovém testování. Dají se vytvářet ručně (pracné) nebo
použít nástroje.
Pokrytí kódu (code coverage): Cíl – „pokrýt“, otestovat,
všechny logické části kódu.
Jednotkové testování - „Teorie“
10 / 17
Slovníček pro jednotkové testy
Mock objekty: Objekty simulující interakci s okolím při
jednotkovém testování. Dají se vytvářet ručně (pracné) nebo
použít nástroje.
Pokrytí kódu (code coverage): Cíl – „pokrýt“, otestovat,
všechny logické části kódu.
Programování řízené testy (test-driven development):
nejprve se napíšou test a až potom se programuje.
Jednotkové testování - „Teorie“
10 / 17
Osnova
1
Úvod
2
Jednotkové testování - „Teorie“
3
Jednotkové testování v praxi
Python – unittest
Java – JUnit
4
Závěr
Nástroje
Existují testovací nástroje pro skoro všechny programovací
jazyky:
Jednotkové testování v praxi
11 / 17
Nástroje
Existují testovací nástroje pro skoro všechny programovací
jazyky:
• C++: CppUnit, Google test...
Jednotkové testování v praxi
11 / 17
Nástroje
Existují testovací nástroje pro skoro všechny programovací
jazyky:
• C++: CppUnit, Google test...
• Java: JUnit (+ Mockito nebo JMock)...
Jednotkové testování v praxi
11 / 17
Nástroje
Existují testovací nástroje pro skoro všechny programovací
jazyky:
• C++: CppUnit, Google test...
• Java: JUnit (+ Mockito nebo JMock)...
• Python: unittest, py.test...
Jednotkové testování v praxi
11 / 17
Nástroje
Existují testovací nástroje pro skoro všechny programovací
jazyky:
• C++: CppUnit, Google test...
• Java: JUnit (+ Mockito nebo JMock)...
• Python: unittest, py.test...
• .NET jazyky: NUnit, NSTest...
Jednotkové testování v praxi
11 / 17
Nástroje
Existují testovací nástroje pro skoro všechny programovací
jazyky:
• C++: CppUnit, Google test...
• Java: JUnit (+ Mockito nebo JMock)...
• Python: unittest, py.test...
• .NET jazyky: NUnit, NSTest...
• PHP: PHPUnit, SnapTest...
Jednotkové testování v praxi
11 / 17
Nástroje
Existují testovací nástroje pro skoro všechny programovací
jazyky:
• C++: CppUnit, Google test...
• Java: JUnit (+ Mockito nebo JMock)...
• Python: unittest, py.test...
• .NET jazyky: NUnit, NSTest...
• PHP: PHPUnit, SnapTest...
• JavaScript, Lua, Lisp, F#, Matlab, R, Perl, Ruby, Shell,
SQL...
Jednotkové testování v praxi
11 / 17
xUnit
• Smalltalk - objektově orientovaný programovací jazyk z 80.
let minulého století
Jednotkové testování v praxi:
12 / 17
xUnit
• Smalltalk - objektově orientovaný programovací jazyk z 80.
let minulého století
• SUnit - framework pro jednotkové testovaní v Smalltalk
Jednotkové testování v praxi:
12 / 17
xUnit
• Smalltalk - objektově orientovaný programovací jazyk z 80.
let minulého století
• SUnit - framework pro jednotkové testovaní v Smalltalk
• xUnit - společné jméno pro frameworky na jednotkové
testovaní, které mají stejnou kostru jako SUnit
Jednotkové testování v praxi:
12 / 17
xUnit
Struktura xUnit:
• Test runner: spustitelná aplikace, která uskuteční test a
zpracuje výsledky
Jednotkové testování v praxi:
13 / 17
xUnit
Struktura xUnit:
• Test runner: spustitelná aplikace, která uskuteční test a
zpracuje výsledky
• Test fixture: nastavení podmínek před samotným
testováním, simulování prostředí atd. Po testování opět
"uklidí".
Jednotkové testování v praxi:
13 / 17
xUnit
Struktura xUnit:
• Test runner: spustitelná aplikace, která uskuteční test a
zpracuje výsledky
• Test fixture: nastavení podmínek před samotným
testováním, simulování prostředí atd. Po testování opět
"uklidí".
• Test case: základní třída při testování. Všechny testy jsou
složeny z těchto jednotek.
Jednotkové testování v praxi:
13 / 17
xUnit
Struktura xUnit:
• Test runner: spustitelná aplikace, která uskuteční test a
zpracuje výsledky
• Test fixture: nastavení podmínek před samotným
testováním, simulování prostředí atd. Po testování opět
"uklidí".
• Test case: základní třída při testování. Všechny testy jsou
složeny z těchto jednotek.
• Test suite: soubor více menších testů. Skládá se z objektů
třídy Test case nebo Test suite
Jednotkové testování v praxi:
13 / 17
unittest
Příklad
Jednotkové testování v praxi: Python – unittest
14 / 17
JUnit
• Framework pro jednotkové testování v jazyce Java,
Jednotkové testování v praxi: Java – JUnit
15 / 17
JUnit
• Framework pro jednotkové testování v jazyce Java,
• založený na xUnit,
Jednotkové testování v praxi: Java – JUnit
15 / 17
JUnit
• Framework pro jednotkové testování v jazyce Java,
• založený na xUnit,
• aktuální verze 4.12,
Jednotkové testování v praxi: Java – JUnit
15 / 17
JUnit
• Framework pro jednotkové testování v jazyce Java,
• založený na xUnit,
• aktuální verze 4.12,
• rozšíření:
I Cactus – testování Javy na straně serveru (Servlety, EJB...)
I JWebUnit – testování webových aplikací
I XMLUnit – práce s XML formátem
I JMock – vytváření Mock objektů
Jednotkové testování v praxi: Java – JUnit
15 / 17
JUnit
• Framework pro jednotkové testování v jazyce Java,
• založený na xUnit,
• aktuální verze 4.12,
• rozšíření:
I Cactus – testování Javy na straně serveru (Servlety, EJB...)
I JWebUnit – testování webových aplikací
I XMLUnit – práce s XML formátem
I JMock – vytváření Mock objektů
Příklad: JUnit a vývojová prostředí
Jednotkové testování v praxi: Java – JUnit
15 / 17
Osnova
1
Úvod
2
Jednotkové testování - „Teorie“
3
Jednotkové testování v praxi
Python – unittest
Java – JUnit
4
Závěr
Shrnutí – Jenotkové testování
• Jedná se o testování samostatných částí (jednotek)
aplikace.
Závěr
16 / 17
Shrnutí – Jenotkové testování
• Jedná se o testování samostatných částí (jednotek)
aplikace.
• Nestačí samo o sobě, ale je první, nezbytnou, částí při
celkovém testování.
• Je v dnešní době usnadněné mnoha nástroji pro všechny
programovací jazyky a lze ho do velké míry automatizovat.
Závěr
16 / 17
Shrnutí – Jenotkové testování
• Jedná se o testování samostatných částí (jednotek)
aplikace.
• Nestačí samo o sobě, ale je první, nezbytnou, částí při
celkovém testování.
• Je v dnešní době usnadněné mnoha nástroji pro všechny
programovací jazyky a lze ho do velké míry automatizovat.
Závěr
16 / 17
Děkujeme za pozornost.
17 / 17
Reference
http://web.stanford.edu/~ouster/cgi-bin/
cs190-spring15/lecture.php?topic=testing
https://www.cs.umd.edu/class/fall2006/
cmsc433/unittesting.pdf
http://testovanisoftwaru.cz
http://www.cs.toronto.edu/~yijun/csc408h/
handouts/tutorial4.pdf
ttp://condor.depaul.edu/sjost/hci430/
documents/testing/UnitTesting.pdf
http://artofunittesting.com/
definition-of-a-unit-test/
Závěr
17 / 17
Reference II
http://junit.org/
https://www.thekua.com/publications/
AppsUnitTesting.pdf
http://www.se.rit.edu/~se361/Slides/
JUnitIntro.pdf
http://docs.python-guide.org/en/latest/
writing/tests/
https://www.jeffknupp.com/blog/2013/12/09/
improve-your-python-understanding-unit-testing/
https:
//docs.python.org/2/library/unittest.html
Závěr
17 / 17

Podobné dokumenty

AutoCAD Raster Design Praktické použití

AutoCAD Raster Design Praktické použití AutoCAD Raster Design. Praktické použití. Nastavení Raster Design Options: Poznámka – Otevření výkresu není pro toto cvičení potřebné. První krok je volitelný. Ve složce Program Files\Raster Desig...

Více

Vývojové prostředí pro návrhové vzory v C

Vývojové prostředí pro návrhové vzory v C Hlavním tém atem práce je problem atika podpory návrhových vzorů ve vývojových prostředích. V dnešnídobě existuje dostatek m ateriálů,které vzory popisují,kategorizujínebo analyzují,současně však c...

Více

Testování webových aplikací

Testování webových aplikací testů podle jejich zaměření a vybráním protikladných a doplňujících technik, které jsou snadno proveditelné a lze je levně aplikovat. S náročnějšími aplikacemi a systémy se ztížilo i vyhledávání ch...

Více

The `pst-map2d` package A PSTricks package for

The `pst-map2d` package A PSTricks package for 1. Henri Bouasse : Géographie mathématique (1919), Delagrave. 2. http://mathworld.wolfram.com/topics/MapProjections.html

Více

[email protected] (+420) 773 400084

milan.karasek@algomica.cz (+420) 773 400084 Insurance 2009 – 2010; total allocation 1 year 2 months, customer: Allianz Direct - Work on three architecture and code redesign projects of broker application for online selling policies. Team lea...

Více

DEBRA ČR Noviny

DEBRA ČR Noviny pojišťoven, které začaly proplácet vhodný ošetřovací materiál pro nemocné s EB. DEBRA ČR dále zajišťuje celou řadu služeb pro pacienty i jejich rodiny. Před deseti lety se nám ani nesnilo, že se ná...

Více

Z leva od zhora : Vak SOURCE , 3L, uplne nový . Cena

Z leva od zhora : Vak SOURCE , 3L, uplne nový . Cena clanky vevnitr. Cena 1500 kc ( montaz neni soucasti )

Více