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

Podobné dokumenty
Agenda. Opakování Manuální testování Automatické testování Antipatterns Testování testů Pokud zbyde čas. Užitečné nástroje

Agenda. Opakování Manuální testování Automatické testování Antipatterns Testování testů Pokud zbyde čas. Užitečné nástroje

Agenda. Docházka Návrat k minulému praktickému cvičení Zápočtové práce. Dokumentace. Dotazy, přání, stížnosti. Co, jak a proč dokumentovat

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

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

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

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

Jak testovat software v praxi

Analýza a Návrh. Analýza

Vývoj řízený testy Test Driven Development

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

Testování software. Jaroslav Žáček

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

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

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

Joelův test. 12 kroků k lepšímu programování. Jaroslav Šnajdr

End-to-end testování. 26. dubna Bořek Zelinka

Testování prakticky Otakar Ertl 17. ledna 2018

Testování software. Jaroslav Žáček

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

Řízení reálných projektů, agilní metodiky

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

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

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

Obecné informace o cvičeních

JAVA Unit testing Java, zimní semestr

Jakub Čermák Microsoft Student Partner

Vývoj informačních systémů. Obecně o IS

Jak efektivně testovat IB. Otakar Ertl

H.P.L. Systems s.r.o. Jičínská PRAHA 3, CZ Obsah

Softwarový proces. Bohumír Zoubek, Tomáš Krátký

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

14. května 2012, Brno

Testování SW produktů. Jiří Sochor, Jaroslav Ráček 1

Podnikový informační systém SAP

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

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

Základní pojmy. Matice(řádky, sloupce) Matice(4,6) sloupce

Agenda. Docházka Odhadování Neohlášený test Vedení projektů Historie projektů

WPA - Konfigurace Java EE aplikace (Maven, struktura war arch. kontejnerem Tomcat 8

Nástroje pro průběžnou integraci a testování

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

Testování aplikací do náročného provozu

Procesní řízení. Hlavní zásady a praxe dodavatele Komix

Maintenance. Tomáš Krátký, Bohumír Zoubek

IRAE 07/08 Přednáška č. 1

Praktické zkušenosti s Azure DevOps

Vedení projektů, Odhadování, historie

Zátěžové testy aplikací

Specifikace. Odevzdání do

1. Téma 12 - Textové soubory a výjimky

Vývoj aplikací řízený testy. Miroslav Beneš

Obsah přednášky. Vývoj aplikací řízený testy. Extrémní programování (XP) Požadavky na nástroje pro XP. Testování aplikací

Proces vývoje HRIS Vema (Human Resources Information System) Jaroslav Šmarda

UJO Framework. revoluční architektura beans. verze

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

Testování aplikací I a II

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

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Úvod do softwarového inženýrství a týmového vývoje

Java/QE Akademie - Osnova

Architektura softwarových systémů

Jazyk C# (seminář 3)

RDF DSPS ROZVOJ PORTÁLU

Význam měřm. Mgr. Anna Borovcová doc. Ing. Alena Buchalcevová, Ph.D. VŠE Praha

Ročníkový projekt. Jaroslav Žáček

A7B36SI2 Tematický okruh SI08 Revidoval: Martin Kvetko

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Vývoj informačních systémů. Přehled témat a úkolů

C# &.NET. Cvičení Mgr. Filip Krijt.

programátor vs. vývojář

Seminární práce Vývoj informačního systému. Manažerská informatika 2 Ing. Miroslav Lorenc

Pragmatická filozofie Můj zdrojový kód snědla kočka 20 Přijímání odpovědnosti Entropie softwaru 21 Být schopen uhasit požár 22

Quality assurance a testování

Architektury Informačních systémů. Jaroslav Žáček

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

Rozvoj a údržba systémů

Vývoj informačních systémů. Přehled témat a úkolů

Aktuální otázky provozu datových skladů PAVEL HNÍK

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Ročníkový projekt. Jaroslav Žáček

Česká zemědělská univerzita v Praze

POŘÍZENÍ A IMPLEMENTACE INFORMAČNÍCH SYSTÉMŮ

CM, Prostředí, Údržba

Minerva TPV+ TPV funkcionalita v QAD. David Pochman Senior konzultant

Smíšené regresní modely a možnosti jejich využití. Karel Drápela

Architektury Informačních systémů. Jaroslav Žáček

Dokumentace, konfigurační řízení

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: AVTK. Úvod. strana 1

Mobile application developent

Vývojové prostředí, maintenance

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

Využití chemie v procesu testování webových aplikací vytvořených pomocí technologií PHP a Java

SIEM Mozek pro identifikaci kybernetických útoků. Jan Kolář , Praha, Cyber Security konference 2014

Project management. Příprava projektu Zahájení High level plánování. Vykonávání Detailní plánování Vykonávání Řízení a monitorování

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

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

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Transkript:

Testování a QA

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

Klasifikace Kategorie black box grey box Typ unit integration Podtyp funkční nefunkční white box system system integration výkon (load/stress) bezpečnost usability localization Způsob manuální automatické Exekuce kódu statické dynamické Skupiny regresní akceptační kvalifikační usability smoke

Obecná pravidla Oddělené testovací prostředí Jinak se testy mohou chovat nedeterministicky. Vývojáři a testeři se mohou vzájemně rušit. Oddělení může být časové (od teď už se nevyvíjí, ale testuje) Testovací prostředí by mělo být co nejpodobnější reálnému (HW, SW) Drahé často se sahá ke kompromisům Žádná umělá degradace

Obecná pravidla Neoddělovat vývojáře a testery Vývojáři již při vývoji myslí na testovatelnost Nevzniká bariéra mezi vývojáři a testery Efektivnější alokace lidí. U velmi velkých systému toto neplatí

Obecná pravidla Testy psát co nejkratší testující jen jednu funkčnost. Minimálně dva testy na úspěch (různé parametry) Testovat mezní hodnoty a nepřípustné hodnoty parametrů. Hlavně pozor na null / 0

Bugzilla Bug tracking systém Zřejmě nejpoužívanější (v Profinitu tvoří páteř IS :-) ) Uchovává historii bugů i po letech lze zjistit, proč se udělalo to či ono. Životní cyklus chyby New (někdo nahlásí chybu) Assigned (ujme se jí vývojář) Fixed (chyba je opravena) Verified (interní přetestování) Closed (ověření zákazníkem). Umožňuje připojovat soubory logy, screenshoty...

Klasické problémy Odkládání tvorby testů až bude čas Vývoj testů ad-hoc bez jakéhokoliv plánu, rozmyšlení, architektury Někdy se vyplatí pojmout tvorbu testů jako samostatný projekt. Duplikace kódu, málo komentářů či absence dokumentace. Testy jsou, ale nikdo je nepouští. Testy se pouští, ale nikdo nekontroluje výsledky.

Klasické problémy Neznalost kontextu zákazníka. Například máte přetestovat opravu následující chyby: V pojištění STR se u Doložky 22 špatně aplikuje pro-rata. Může pomoci Bugzilla (nebo kolegové). Chyba objevená při testování (nebo hůř v produkci) se nedá v testovacím prostředí reprodukovat. Čím jsou testy podrobnější, tím nákladnější je jejich údržba. Tím větší tlak na dočasné vyřazení rozbitých testů

Automatické testy Automatické testy většinou zlepšují design aplikace. Vývojáři jsou nuceni programovat s ohledem na snadnou testovatelnost loose coupling. U složitějších aplikací usnadňují ladění Nemusí se debuggovat přes UI.

Manuální vs. automatické Vzájemně se doplňují Většinou není možné (ekonomické) plně pokrýt aplikaci automatickými nebo manuálními testy. Nám se osvědčilo: Před prvním nasazením se aplikace důkladně prokliká. Vytvoří se regresní testy (testují aplikaci z GUI) Selenium, HttpUnit, AutoIt Vytvoří se (během vývoje) unit testy pokrývající core funkcionalitu (výpočty, práce s daty )

Unit testy Testují jednotku (unit) nezávisle na ostatních unit většinou = třída. Mockování ostatních (asociovaných) tříd. Simulujeme jejich chování => testování třídy nezávisle na ostatních Typicky připojení k databázi Vede k výraznému zrychlení Nástroje: jmock, EasyMock

Unit testy (2) Specifická forma dokumentace kódu Z testu lze vyčíst, jak daný kód použít Dá se na ně dívat jako na rozšíření kompilátoru Kontrola sémantiky Frameworky JUnit, NUnit, TestNG (i integrační testy)

Testování testů? Jak poznat, že testy k něčemu jsou? Teoretici i testy se musí testovat. Do kódu záměrně zaneseme chyby a zkoumáme, zda je testy odhalí Používá se jen u mission-critical systémů Praxe měření pokrytí kódu Pokrytí metod Pokrytí řádků kódu Pokrytí větví.

Pokrytí kódu - Cobertura Poskytuje vývojáři informace o: Pokrytí balíčků Pokrytí tříd Pokrytí metod Pokrytí větví Reporty lze procházet až na úroveň zdrojových kódů Přehledně znázorněno, kolikrát byl daný řádek navštíven.

Cobertura - Nevýhody Svádí k uctívání pokrytí 100 % pokrytí kódu neznamená, že je program bez chyb Někteří projektoví vedoucí mají tendence stanovovat minimální procento pokrytí kódu. => Easy testy (testují se gettery, settery ) Někdy obtížně integrovatelná s projektem Například pokud testy běží v kontejneru Pouze pro automatické testy

Cobertura - Ukázkový report Screenshoty pochází z ukázkového reportu na adrese http://cobertura.sourceforge.net/sample/

Antipatterns

Jen jeden happy path test public class Factorial { public int eval(int cislo) { return (cislo!= 1)? cislo * eval(cislo - 1) : 1; } } public void testeval() { Factorial fact = new Factorial(); int vysledek = fact.eval(3); assertequals(6, vysledek); }

Kde je problém? Test projde i pro následující implementaci: public class Factorial { public int eval(int cislo) { return (cislo!= 1)? cislo + eval(cislo - 1) : 1; } } Ale i předchozí implementace je chybná eval(0); Nutno testovat mezní hodnoty

Easy tests Testují se snadno testovatelné podpůrné metody, ale ne hlavní logika. Gettery, settery, tostring Problém hlavně u nezkušených programátorů Časté rovněž při direktivním stanovení určitého pokrytí kódu testy.

Spoléhání na konkrétní implementaci Někdy je to vhodné, ale zpravidla je lepší se tomu vyhnout. public class Data { private Collection prvky = new ArrayList(); } public void pridej(object prvek) { prvky.add(prvek); } public Collection getprvky() { return prvky;} public void testpridej () { Data data = new Data(); data.pridej(0); // spolehame na autoboxing assertequals(0, ((ArrayList) data.getprvky()).get(0)); }

Diskuse Komentáře Otázky Připomínky Upřesnění Poznámky