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

Podobné dokumenty
Správa projektů a testování

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

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

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

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

Principy objektově orientovaného programování

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Vytváření a použití knihoven tříd

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

Vývoj řízený testy Test Driven Development

3 KTE / ZPE Informační technologie

Testování. Zadání příkladu. Vytvoření kostry třídy. Obsah:

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Komponenty v.net. Obsah přednášky

Abstraktní datové typy: zásobník

Základy programování Zdrojový kód, dokumentace, týmová práce

1 Webový server, instalace PHP a MySQL 13

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

KTE / ZPE Informační technologie

Softwarové komponenty a Internet

Řídicí struktury. alg3 1

1. Webový server, instalace PHP a MySQL 13

Algoritmizace a programování

MBI - technologická realizace modelu

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

Algoritmizace a programování

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Správa paměti. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

Formy komunikace s knihovnami

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

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

VISUAL BASIC. Přehled témat

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Java a XML. 10/26/09 1/7 Java a XML

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

PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2

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

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

Úvod do programování - Java. Cvičení č.4

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

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Programování v C++ 1, 1. cvičení

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

8 Třídy, objekty, metody, předávání argumentů metod

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

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

20. Projekt Domácí mediotéka

Profilová část maturitní zkoušky 2017/2018

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

České vysoké učení technické v Praze. Fakulta Elektrotechniky XD39NUR. Semestrální práce. Ovládání videokonferencí pomocí mobilního telefonu

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Testování software. Jaroslav Žáček

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

Algoritmizace. Cíle předmětu

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

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

Operační systémy. Cvičení 4: Programování v C pod Unixem

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

JUnit příklad na použití

Vývoj programů. ÚVOD DO OPERAČNÍCH SYSTÉMŮ

Úvod Vývojová prostředí Štábní kultura Dokumentace Konec. Programování v C# Prostředí a doporučení 1 / 39

Úvod do programovacích jazyků (Java)

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Aplikace s grafickým uživatelským rozhraním

Překladač a jeho struktura

PROGRAMOVÁNÍ V C++ CVIČENÍ

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

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

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

17. Projekt Trojúhelníky

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

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Rozklad na prvočinitele. 3. prosince 2010

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

1. Programování proti rozhraní

Algoritmizace a programování

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

Java/QE Akademie - Osnova

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Měření teploty, tlaku a vlhkosti vzduchu s přenosem dat přes internet a zobrazování na WEB stránce

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

XML A XWEB JAKO NÁSTROJE PRO TVORBU WEBOVÉHO SÍDLA S VELKÝM MNOŽSTVÍM KŘÍŽOVÝCH ODKAZŮ

Hodnoticí standard. Programátor (kód: M) Odborná způsobilost. Platnost standardu. Skupina oborů: Informatické obory (kód: 18)

1. Generátor výstupních objektů (GVO)

Algoritmizace a programování. Terminálový vstup a výstup

Nástroje pro tvorbu programů

Nástroje pro tvorbu programů

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

Transkript:

Testování, ladění a dokumentace programů doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Strategie ladění programů Testování správnosti programů Testování výkonnosti Generování dokumentace Internacionalizace (lokalizace) PTE - Testování, ladění, dokumentace 2 1

Strategie ladění programů Hledání chyby je proces ověřování mnoha věcí, v jejichž platnost věříme, až do nalezení toho, co není pravda. V určitém bodě programu má proměnná x hodnotu v. V konkrétním příkazu if-then-else se provede právě větev else. Funkce f se volá se správnými parametry. Vše je třeba ověřit jak? PTE - Testování, ladění, dokumentace 3 Strategie ladění programů Binární vyhledávání Omezujeme úsek programu, ve kterém se hledaná chyba může vyskytovat Příklad: Hledáme místo, kde se nastavila nesprávná hodnota nějaké proměnné. Lze použít i na některé problémy při překladu. PTE - Testování, ladění, dokumentace 4 2

Strategie ladění programů Ladicí výpisy pomocí printf/cout/systém.out.write nevhodné odstranění z odladěné verze komentáře, podmíněný překlad??? Logovací nástroje (např. log4j) možnost konfigurace (úroveň výpisu, kam, ) požadavek na nízkou režii ponechává se v hotovém programu PTE - Testování, ladění, dokumentace 5 Strategie ladění programů Sledování stopy programu (trace) Výpis posloupnosti zpracovaných řádků Výpis volání podprogramů Analýza obsahu paměti po chybě Uložení obrazu paměti do souboru (core v Unixu) Statická analýza bodu, kde došlo k chybě Propojení se zdrojovým programem PTE - Testování, ladění, dokumentace 6 3

Strategie ladění programů Využití ladicího programu Součást většiny integrovaných výv. prostředí Na zdrojové nebo instrukční úrovni 1. Definice bodů zastavení (breakpoint) 2. Spuštění programu 3. Kontrola stavu v bodech zastavení 4. Krokování od bodu zastavení (step into, step over) PTE - Testování, ladění, dokumentace 7 Testování programů Cíl: Snížení rizika výskytu chyby Nutný je pesimismus! výskyt chyb je třeba očekávat Opakované testování (re-testing) kontrola, zda jsme opravili chybu Regresní testování kontrola, zda jsme opravou nevnesli nové chyby PTE - Testování, ladění, dokumentace 8 4

Testování programů Verifikace Ověření interní konzistence produktu (zda produkt odpovídá návrhu, návrh analýze, analýza požadavkům) Formální verifikace často obtížná Validace Ověření (externím nezávislým zdrojem), zda celé řešení splňuje očekávání uživatelů nebo klientů PTE - Testování, ladění, dokumentace 9 Úrovně testování Alfa Provádí se před zveřejněním produktu Vývojáři Výstupní kontrola Beta Poskytnutí produktu vybrané skupině externích uživatelů, získání zpětné vazby Gama Kompletní dílo, které zcela neprošlo interní kontrolou kvality PTE - Testování, ladění, dokumentace 10 5

Co je to chyba? Jakýkoliv problém, snižující kvalitu programu. Funkcionalita Užitná hodnota Spolehlivost Výkon Požadavky uživatele PTE - Testování, ladění, dokumentace 11 Sledování chyb (bug tracking) Výskyt chyby je třeba zaznamenat tak, aby se chyba dala reprodukovat Jaké kroky k výskytu chyby vedly? Jaké bylo očekávané chování? Jaké bylo skutečné chování? (Jaké jsou důsledky a závažnost chyby?) Nástroje pro sledování chyb BugZilla http://www.bugzilla.org/ PTE - Testování, ladění, dokumentace 12 6

Metody testování Ruční testování náročné není opakovatelné snadno se přehlédnou chyby Systematické testování jednotkové testy (unit tests) třídy, metody integrační testy logické moduly, celé aplikace generování testů - zajištění maximálního pokrytí zdrojového textu PTE - Testování, ladění, dokumentace 13 Testování programů JUnit prostředí Java, varianty i pro jiné jazyky (NUnit, CPPUnit, ) programátorské rozhraní pro tvorbu testů nástroje pro automatické provádění testů grafické rozhraní příkazový řádek, akce pro Ant využití reflexe pro vyhledání testů uvnitř tříd rozšíření pro testování webových aplikací, servletů, databázových aplikací,... PTE - Testování, ladění, dokumentace 14 7

JUnit import junit.framework.testcase; public class TestXYZ extends TestCase { } void setup() { } inicializace void teardown() { } finalizace void testx() { } krok testu asserttrue(podmínka), assertfalse( ) assertequals(x,y), assertnotnull(x) PTE - Testování, ladění, dokumentace 15 Příklad package cviceni3; import junit.framework.testcase; public class TestZlomek extends TestCase { protected Zlomek z1 = new Zlomek(1, 3); protected Zlomek z2 = new Zlomek(2, 6); protected Zlomek z3 = new Zlomek(2, 3); } protected void setup() { } protected void teardown() { } public void testequals() { assertequals(z1, z1); assertequals(z1, z2); } public void testadd() { Zlomek result = Zlomek.plus(z1, z2); assertequals(result, z3); } PTE - Testování, ladění, dokumentace 16 8

Vývoj řízený testy (TDD) 1. Napíšeme testy 2. Napíšeme program 3. Spustíme automatizované testování 4. Provedeme refaktorizaci 5. Opakujeme až do odstranění všech chyb Hlavním cílem je dosáhnout toho, aby všechny testy prošly mohou ale být chybné testy! PTE - Testování, ladění, dokumentace 17 Refaktorizace Transformace zdrojového textu, která vede ke zlepšení jeho čitelnosti nebo struktury, avšak bez změny významu nebo chování Přejmenování proměnné. Vytvoření podprogramu ze zadaného úseku programu. Nahrazení posloupnosti příkazů if polymorfismem. Důležitá součást metodiky TDD, XP PTE - Testování, ladění, dokumentace 18 9

Testování výkonnosti Sledování počtu volání určitých funkcí Sledování času stráveného výpočtem různých částí programu podklad pro optimalizaci změnou algoritmu Nástroje: profiler gprof součást vývojových prostředí PTE - Testování, ladění, dokumentace 19 Generování dokumentace Oddělená dokumentace problémy s aktualizací nutnost uvádět kompletní specifikace Dokumentace jako součást zdrojového textu snadnější údržba (např. včetně verzování) literární programování (D. Knuth) dokumentační značky - javadoc PTE - Testování, ladění, dokumentace 20 10

Program javadoc Dokumentace ve speciálních poznámkách /** * Dokumentační poznámka */ Dokumentační značky + HTML @author <a href=mailto:joe@mit.edu>joe</a> @param x Popis parametru x Rozšíření generování zdrojových textů pomocí šablon - XDoclet PTE - Testování, ladění, dokumentace 21 Příklad /** * Konstruktor zlomku. * Naplní čitatele a jmenovatele a převede * zlomek do normalizovaného tvaru. * @param citatel Čitatel zlomku. * @param jmenovatel Jmenovatel zlomku. */ public Zlomek(int citatel, int jmenovatel) { this.citatel = citatel; this.jmenovatel = jmenovatel; normalizuj(); } PTE - Testování, ladění, dokumentace 22 11

Tvorba aplikací pro mezinárodní prostředí úprava programů pro mezinárodní prostředí Internacionalizace (i18n) Zajištění takových vlastností aplikace, aby byla potenciálně použitelná kdekoliv Lokalizace (l10n) Přizpůsobení aplikace konkrétnímu jazykovému a kulturnímu prostředí PTE - Testování, ladění, dokumentace 23 Internacionalizace (i18n) Formát data a času Zápis čísel Měna Jazyk (abeceda, číslice, směr psaní, ) Telefonní čísla, adresy, PSČ Míry a váhy PTE - Testování, ladění, dokumentace 24 12

Lokalizace (l10n) Jazykové verze, překlady Zvyklosti Symbolika Barvy ikony Estetika Kulturní hodnoty, sociální kontext PTE - Testování, ladění, dokumentace 25 Nástroje pro i18n/l10n Překlad textových řetězců extrakce textů překlad vložení zpět oddělení textů od programu např. soubory.properties v různých jazykových verzích knihovna gettext pro různé progr. jazyky Přístup k informacím o prostředí setlocale(), getlocale(), PTE - Testování, ladění, dokumentace 26 13