Jednotkové testování
Transkript
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í.
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ý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...
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...
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
[email protected] (+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...
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á...
Z leva od zhora : Vak SOURCE , 3L, uplne nový . Cena
clanky vevnitr. Cena 1500 kc ( montaz neni soucasti )