Vývoj řízený testy Test Driven Development

Podobné dokumenty
Testování software. Jaroslav Žáček

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

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

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

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

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

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

A7B36SI2 Tematický okruh SI08 Revidoval: Martin Kvetko

Zátěžové testy aplikací

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

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

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

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

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

Testování software. Jaroslav Žáček

PŘÍLOHA C Požadavky na Dokumentaci

Java/QE Akademie - Osnova

1 Úvod 1.1 Vlastnosti programového vybavení (SW)

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

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

Analýza a Návrh. Analýza

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

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

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

Nebojte se přiznat, že potřebujete SQA

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

Aplikační Dokumentace Standardy ICT MPSV

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

Jak testovat software v praxi

3 Inženýrství systémů založených na počítačích (Computer-based System Engineering)

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

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

3 Inženýrství systémů založených na počítačích (Computer-based System Engineering)

2. Začlenění HCI do životního cyklu software

Programování II. Modularita 2017/18

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

Architektura softwarových systémů

Odbor informatiky a provozu informačních technologií

Agilní metodiky vývoje softwaru

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy

Testovací protokol. webový generátor PostSignum. sada PIIX3; 1 GB RAM; harddisk 20 GB IDE OS: Windows Vista Service Pack 2 SW: Internet Explorer 9

Modelování požadavků

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

Helios IP Dokumentace

TREND POPIS ODPOVĚDNOSTI PRACOVNÍKA MANAŽER VÝVOJE

Jakub Čermák Microsoft Student Partner

IS pro podporu BOZP na FIT ČVUT

Obsah. Zpracoval:

SOFTWAROVÉ INŽENÝRSTVÍ 1

Datové struktury. alg12 1

Vytvoření bootovatelného média

ÚVOD DO SOFTWAROVÉHO INŽENÝRSTVÍ

Informační systémy ve strojírenství

Jak efektivně testovat IB. Otakar Ertl

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

Rozvoj a údržba systémů

CASE. Jaroslav Žáček

Metodika analýzy. Příloha č. 1

Řízení kvality SW produktů Jiří Sochor, Jaroslav Ráček 1

EXTRAKT z technické normy ISO

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Program a životní cyklus programu

IS pro managment flotily vozidel. Project overview statement

Předávací protokol projektu Kos Klient

Návrh softwarových systémů - úvod, motivace

Software generické produkty - smluvní, zakázkové produkty - - udržovatelnost spolehlivost efektivita použitelnost specifikace

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

(PROPOJOVACÍ BOD A TECHNICKÉ PARAMETRY) SMLOUVY O PROPOJENÍ VEŘEJNÝCH SÍTÍ ELEKTRONICKÝCH KOMUNIKACÍ. mezi společnostmi. NEW TELEKOM, spol. s r.o.

Prezentace 2. Slide 1. Slide 2. Slide 3. Slide 4. Prezentace pdf. nazev projektu jmena atd.. Obsah

SOFTWAROVÉ INŽENÝRSTVÍ Řízení IT projektů

Co je refaktorování Historie Proč refaktorovat Kdy refaktorovat Jak refaktorovat Code obfuscation Shrnutí. Refaktorování.

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

7 Jazyk UML (Unified Modeling Language)

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

eidas electronic IDENTITY PORTAL SOLUTION DEFINICE PRODUKTU TS-MyeID PORTAL

CASE nástroje. Jaroslav Žáček

vlastnosti Výsledkem sledování je: a) Využití aplikací b) Používání internetu c) Vytížení počítačů d) Operační systém e) Sledování tisků

7. Pracovní postupy. Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt

jako základní princip vývoje svobodného softwaru

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

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Základy programování Úvodní informace. doc. RNDr. Petr Šaloun, Ph.D. VŠB-TUO, FEI (přednáška připravena z podkladů Ing. Michala Radeckého)

Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ

Specifikace projektu Ocerus

Testování a verifikace softwaru

4. Rekurze. BI-EP1 Efektivní programování Martin Kačer


VYUŽITÍ VÝSLEDKŮ UČENÍ NA VYSOKÝCH ŠKOLÁCH. Příručka pro pedagogickou praxi a vedení VŠ

EMBARCADERO TECHNOLOGIES. Jak na BYOD chytře? Možnosti zapojování různých mobilních zařízení do podnikových informačních systémů.

Základní datové struktury

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

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

Karel Bittner HUMUSOFT s.r.o. HUMUSOFT s.r.o.

Specifikace požadavků. POHODA Web Interface. Verze 1.0. Datum: Autor: Ondřej Šrámek

14. května 2012, Brno

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Klasická metodologie testování

Klasická metodologie testování

TECHNICKÉ POŽADAVKY NA NÁVRH, IMPLEMENTACI, PROVOZ, ÚDRŽBU A ROZVOJ INFORMAČNÍHO SYSTÉMU

Zavádění služby ecall u HZS ČR. kpt. Ing. Jan Urbánek MV-generální ředitelství HZS ČR

Transkript:

Vývoj řízený testy Test Driven Development Richard Salač, Ondřej Lanč Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze 23. - 30. 10. 2012

Obsah 1 Testování 2 Klasický přístup 3 Vývoj řízený testy 4 Shrnutí

Definice testování Testování Testováním rozumíme cílené spouštění vyvíjeného programu s předem definovanými provozními podmínkami a očekáváními jeho chování za účelem zlepšení jeho kvality.

Kvalita softwaru FURPS F - funkčnost (bezpečnost) U - použitelnost (z pohledu uživatele) R - spolehlivost (chybovost, přesnost) P - výkon (rychlost, odezva, vytížení HW) S - Rozšiřitelnost (údržba, testovatelnost, monitoring)

Kvalita softwaru FURPS+ Implementace - návrh aplikace, závislost na architektuře Rozhraní - připojení na zařízení a externí systémy Operační systémy - kompatibilita a nutnost úprav Obchodní a právní aspekty - licence, konkurenceschopnost

Vývojářské testování Vývojář Píše program tak, aby fungoval Předem známý konec Tester Píše test tak, aby program nefungoval Nekonečný příběh

Vývojářské testování Definice chyby Program nedělá něco, co by dělat měl Program dělá něco, co by dělat neměl Program dělá něco, o čem se specifikace nezmiňuje Program nedělá něco, o co v dokumentaci není, ale mělo by být

Vývojářské testování Vývojářské testování testy funkčnosti testy spolehlivosti

Vývojářské testování Funkční testování black-box testing Akceptační testy Strukturní testování white-box testing Testování jednotek (Unit testing) Testování komponent Integrační testy

Rozsah testování Adresář Jméno - max. 20 znaků, abeceda 42 prvků Adresa - max. 20 znaků Telefonní číslo - 9 znaků, 10 možných číslic Celkem možností 10 74 možností

Rozsah testování Adresář Jméno - max. 20 znaků, abeceda 42 prvků Adresa - max. 20 znaků Telefonní číslo - 9 znaků, 10 možných číslic Celkem možností 10 74 možností

Odhad chyb Analýza mezí n vs. n 1 >= vs. > Složené meze Vznikající na základě více faktorů Tvořené za běhu programu

Odhad chyb Třídy dobrých dat Normální případy - běžně očekávané hodnoty Minimální normální data Maximální normální data Kompatibilita se starými daty Třídy špatných dat Příliš málo dat (žádná data) Příliš mnoho dat Nesprávný typ Neplatná data Nesprávná velikost dat

Vývojářské testování Tipy por usnadnění Rozdělení na třídy ekvivalence Ruční kontrola

Minimální rozsah testování Není možné testovat vše Pokryjeme alespoň všechny cesty algoritmem Úplné pokrytí kódu Za přímý průchod přičteme 1 Za každé větvení přičteme 1 Za každou alternativu přepínače přičteme 1

Minimální rozsah testování Příklad void znamenko(double cislo) { if( cislo > 0 ) printf("kladne"); else printf("zaporne"); }

Testování Zdrojový kód testovaného programu je neměnný. Žádný test nesmí měnit původní kód ani pro svou práci tyto změny vyžadovat.

Testování Jak napsat test Cíl testu Vstupní testovací data Očekávaný výsledek testu Průběh testu Definice proměnných testu a inicializace pomocných objektů Inicializace SUT Spuštění testu Ověření testovacích podmínek

Test-last

Test-last Kódování Implementace nové funkcionality Vychází z analýzy případů užití (use case)

Test-last Napsat test Ověření funkcionality Pokrytí kódu

Test-last Spuštění testů Úspěšný test odhalí chybu Nalezli jsme chybu - zpět ke kódování

Test-last Čištění kódu Refactoring

Test-last Testy Úspěšný test odhalí chybu Cíl: způsobit chybu Dokumentace API Na co dát pozor Pokrytí kódu Pokrytí požadavků

Test-last Testy Úspěšný test odhalí chybu Cíl: způsobit chybu Dokumentace API Na co dát pozor Pokrytí kódu Pokrytí požadavků

Náklady na odstranění chyby

Test-first

Test-first Napsat test Nová funkcionalita - nové testy Use case jako podklad pro napsání testu

Test-first Spustit testy Ověření funkčnosti testu Napoprvé selže Pokud ne - chybný test nebo požadavek

Test-first Kódování Implementace nové funkcionality Přidáme jen to, co je nezbytně nutné ke splnění testů

Test-first Testování Spuštění sady testů Objevila-li se chyba, vracíme se k implementaci

Test-first Čištění kódu Refactoring

Test Driven Development Testy Specifikace rozhraní Prostředek návrhu aplikace Pokrytí kódu zajištěno z podstaty TDD Na co dát pozor Pokrytí požadavků

Test Driven Development Testy Specifikace rozhraní Prostředek návrhu aplikace Pokrytí kódu zajištěno z podstaty TDD Na co dát pozor Pokrytí požadavků

Test Driven Development Test Driven Development Malé iterace Vhodné propojení s CVS Snadná detekce problémů a návrat k funkční verzi Rychlejší vývoj Lepší software

Srovnání Klasický přístup Nejdříve vzniká samotná aplikace Podkladem pro testy je napsaný kód Nutno sledovat pokrytí kódu Test Driven Developement Nejdříve vznikají testy Podkladem pro testy je specifikace Pokrytí kódu zajištěno z podstaty TDD Lepší kód a kratší vývoj

Literární zdroje Beck K.: Test Driven Development: By Example, Addison Wesley - Vaseem, 2003 Knaer, Cem, Falk, Jack, Nguyen, Hung, Quoc: Testing Computer Software, Wiley Computer Publishing, 1999 http : //www.agiledata.org/essays/tdd.html http : //en.wikipedia.org/wiki/test driven_development