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



Podobné dokumenty
Jak testovat software v praxi

Testování software. Jaroslav Žáček

Vývoj řízený testy Test Driven Development

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

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

Jakub Čermák Microsoft Student Partner

Testování software. Jaroslav Žáček

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

Nové jazykové brány do Caché. Daniel Kutáč

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

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

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

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

SQL Server Data Tools (SSDT) RNDr. David Gešvindr MVP: Azure MCSE: Data Platform MCSD: Windows Store

Analýza a Návrh. Analýza

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

CineStar Černý Most Praha

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

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

Specifikace. Odevzdání do

Testování SOA systémů v Oracle SOA Suite

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

Tabulkový procesor. Základní rysy

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

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

KNX. LOGO! univerzální KNX/ EIB zařízení. Siemens s.r.o siemens.cz/micro. Unrestricted Siemens AG 2019

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET)

Zátěžové testy aplikací

StatSoft Jak vyzrát na datum

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

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

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

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

Praktické zkušenosti s Azure DevOps

Business Intelligence

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

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

Prototypy a testování

Komprimace/Dekomprimace

Zkušenosti nejen z provozu Portálu občana. Jan Vlasák NAKIT Miroslav Vacula Jihomoravský kraj Václav Koudele - Microsoft

Programování v Pythonu

Formální Metody a Specifikace (LS 2011) Formální metody pro kyber-fyzikální systémy

Převod 4GL aplikací do webového prostředí. Ing. Jan Musil, IBM ČR Community of Practice for

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

Seznámení s prostředím dot.net Framework

UNIVERZITA PARDUBICE

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE

A7B36SI2 Tematický okruh SI08 Revidoval: Martin Kvetko

Datové úložiště referenčních nemocnic (DÚ RN): Zajištění sběru dat v roce Petr Klika a kol., ÚZIS ČR

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

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

Podnikový informační systém SAP

Petr Náhlovský, Servodata a.s. Michal Oškera, AUKRO s.r.o. IT PROJEKT ROKU 2017

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

Implementace dávkových operací

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

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

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

ČMSS: CRM systém pro efektivní práci s klienty

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

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

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

Instalace produktu Ontopia. ver (open-source verze)

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

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

ové kampaně Byznys CRM s.r.o.

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

Hromadné výpočty s využitím Excelu

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

Základní uvedení do provozu frekvenčního měniče SD6/SI6 od firmy Stöber

Co je doma, to se počítá, aneb Jak ušetřit na komunikaci. Petr SOLNAŘ / Liberecká IS, a.s. Michal NOVÁK / SOITRON CZ, s.r.o

MS Excel makra a VBA

Registrační číslo projektu: CZ.1.07/1.5.00/ Název projektu: Moderní škola 21. století. Zařazení materiálu: Ověření materiálu ve výuce:

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Návod k práci s programem MMPI-2

Jak efektivně testovat IB. Otakar Ertl

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

M4 PDF rozšíření. Modul pro PrestaShop.

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Aplikace vytěžování dat

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

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

Ceník služeb platný k

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

Softwarový projekt 2008/2009 MFF UK

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Visual Basic for Application

Programování II. Návrh programu I 2018/19

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

MVVM pro desktop i web

Nástroje pro vývoj software

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

Vytvoření.NET komponenty (DLL) ve Visual Studiu

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Úvod 9

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

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

Jak udělat webový projekt

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

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

Transkript:

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

Proč testy nepíšeme Nemáme na to čas Platí v cca 5% případů Nový projekt Prototyp je třeba mít během pár dní Počítá se s tím, že další verze se napíše znovu Zákazník to nezaplatí Je třeba mu vysvětlit, že ušetří na údržbě a na budoucím rozvoji Zahrnout to do nákladů na vývoj Není to potřeba Legitimní u malých krátkodobých projektů bez budoucího rozvoje Nebo u kódu, který se testuje tak obtížně, že testy již nejsou přínosem

Proč testy psát Investujme trochu času teď V budoucnu se nám mnohonásobně vrátí Některé výhody Nerozbijeme to, co už fungovalo a bylo otestované Programátoři se nebudou bát opravovat chyby Neuděláme hloupé chyby Chyby se nám nebudou vracet

Úrovně testování Developer testing Zmáčknout F5, proklikat, vyzkoušet hned Debugovací výpisy, dočasný kód Nejlevnější a nejrychlejší oprava chyby Výhoda: dělá každý vývojář (výjimky zastřelit!) Problém: opakovatelnost Převést Debug.WriteLine a ruční kontrolu na automatizovaný test je práce na 2 minuty!

DEMO Test z dočasného testovacího kódu

Úrovně testování Unit testing Testování izolovaných jednotek Vhodné mimo jiné Pro různé algoritmy, vlastní kolekce Kusy kódu bez závislostí Pokud má kód závislosti, nutno izolovat Mnoho frameworků NUnit, xunit, MS Test

Vlastnosti unit testů Nezávislé na sobě Nezávislé na pořadí spouštění Paralelizovatelné (ideálně) Nezávisí na stavu prostředí Izolace od závislostí Mockování Náhrada reálné funkcionality zjednodušeným mechanismem pro účely testování Platební brána, rozesílání e-mailů, místo DB kolekce v paměti, odstínění od filesystému, aktuálního času apod.

DEMO Unit testy a jejich parametrizace

Na co si dát při testech pozor Extrémní případy Číslo v poli je minimum (maximum) Chybné vstupy Ale není nutno všude, nebrat dogmaticky Psát unit test na každý if throw je ztráta času

DEMO Izolace od globálního stavu

Mockování Problém Pro účely testování můžeme potřebovat desítky mock tříd, psát je ručně je otrava Frameworky Mock vygenerujete na pár řádků přímo v testu Moq, Rhino Mocks Microsoft Moles (od VS 2012 - Fakes)

Úrovně testování Integrační testy Testují spolupráci více komponent systému V praxi jich napíšete zřejmě mnohem víc než unit testů Záleží na projektu Blíže realitě nesnažíme se o kompletní izolaci Typicky jdeme proti reálné databázi

DEMO Testování Entity Framework modelu

Testování proti reálné DB Testy by neměly databázi měnit Opakovatelnost, determinismus Možnosti Před testem zahájit transakci a na konci rollback Nelze použít vždy Před testem udělat RESTORE databáze Pomalé Testy před spuštěním uklidí samy Dilema: Proč ne hned po spuštění? Dobře řešeno má např. RavenDB Umí pracovat v inmemory módu

Testování proti reálné DB Typicky separátní databáze s předpřipravenými daty Je nutno synchronizovat schéma Databázové projekty ve Visual Studiu to umí Občas musíme synchronizovat i data Číselníky apod. Testovací databáze by měla být verzována s projektem Ideálně v Source Control

Typy testů (nejen integračních) Black box White box Black nezajímá nás, jak to funguje uvnitř White test počítá s konkrétním algoritmem, který se používá uvnitř Smoke testy základní sada testů ověřující základní funkce aplikace Jestli aplikace vůbec nastartuje Jestli nějaké okno v aplikaci nevyhazuje chybu

DEMO Testy z reálného projektu

Úrovně testování Systémové testování Aplikace se testuje jako celek Ideálně V reálném prostředí Na reálných datech Testování funkčnosti Zátěžové testy Testy zabezpečení

Jak psát testovatelný kód Třídy s jasně definovanými závislostmi V konstruktoru SOLID http://www.augi.cz/programovani/moderniprogramovani-v-c/ Vyhnout se statickým proměnným a metodám, kde to jen jde Přípustné jsou jako syntax helpery Obtížně se testují, skrývají závislosti

Smiřte se s tím, že Ne vše lze testovat Ovládání různých hardwarových zařízení Ne vše má smysl testovat Malé aplikace, kde není budoucí rozvoj Často se měnící, neustálené části aplikace Ne vše lze testovat pohodlně Složitější UI plné komponent třetích stran Mnoho vztekání a ztraceného času nevyplatí se

Doporučení Napsal jsem metodu, která něco počítá, a nejsem si jistý, jestli funguje Místo Debug.Print a ruční kontroly napíšu test Pište testy alespoň pro základní a důležité aplikační bloky a třídy Máte chybu, která se neustále vrací? Chce to test! Používejte vlastní hlavu a nápady Nebojte se podvádět (stress testy) Zautomatizujte často opakované činnosti Začněte používat kontinuální integraci

Na co se ještě podívat Mockovací frameworky (odstřižení závislostí v unit testech) Rhino Mocks nebo Moq Microsoft Moles