Jak testovat software v praxi

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

Jakub Čermák Microsoft Student Partner

Testování software. Jaroslav Žáček

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

CineStar Černý Most Praha

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

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

Vývoj řízený testy Test Driven Development

Praktické zkušenosti s Azure DevOps

Testování software. Jaroslav Žáček

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

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

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

MVVM pro desktop i web

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

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

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

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

Testovací protokol USB Token Cryptomate

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

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

Specifikace. Odevzdání do

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

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

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

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

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

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

1. SYSTÉMOVÉ POŽADAVKY / DOPORUČENÁ KONFIGURACE HW A SW Databázový server Webový server Stanice pro servisní modul...

Testovací protokol čipová karta ACOS5

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

Analýza a Návrh. Analýza

Testovací protokol USB token etoken PRO 32K

HLÁŠENÍ DODÁVEK LÉČIVÝCH PŘÍPRAVKŮ UVEDENÝCH NA TRH V ČR DRŽITELI ROZHODNUTÍ O REGISTRACI LP - REG13

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

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

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

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

Novinky ve Visual Studio Tomáš Kroupa

Architektury informačních systémů

Úvod 11 O autorech 13 O odborných korektorech 14 Poděkování 15 Předmluva 16. Část I. Někdo to má pozpátku 19

Architektury informačních systémů

Nový Node Monitor. 13. prosince Lukáš Turek Praha12.Net

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

Specifikace softwarového díla & Časový plán implementace. pro. MEF Editor

Olga Rudikova 2. ročník APIN

Testovací protokol čipová karta etoken PRO SmartCard 32K

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

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

Business Intelligence

Zátěžové testy aplikací

IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET)

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

Rozklad na prvočinitele. 3. prosince 2010

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

Návrh uživatelských rozhraní NOV-WEB. Jakub Bartoš, Pavel Dvořák, Jakub Motyčka, Kamil Procházka

Tvorba informačních systémů

RestSys. Iterace 6. Restaurační systém pro malé restaurace a kiosky

MS Excel makra a VBA

PŘÍLOHA C Požadavky na Dokumentaci

HelpDesk. Co je HelpDesk? Komu je aplikace určena? Co vám přinese?

StatSoft Jak vyzrát na datum

SOU Valašské Klobouky. VY_32_INOVACE_3_20_IKT_Tvorba_webovych_stranek_Redakcni_systemy. Mgr. Radomír Soural. Zkvalitnění výuky prostřednictvím ICT

HelpDesk. Co je HelpDesk? Komu je aplikace určena? Co vám přinese?

Nasazení nových modulů McAfee Seminář CIV (nejen) pro lokální správce

Administrační rozhraní Drupalu

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE

Tabulkový procesor. Základní rysy

Nápověda k aplikaci EA Script Engine

cena jednodenního školení: 4000Kč/osoba, druhá a další z téže firmy 3000Kč cena dvoudenního školení: 7000Kč/osoba, druhá další z téže firmy 6000Kč.

Komprimace/Dekomprimace

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

Uživatelská dokumentace

SOAP & REST služby. Rozdíly, architektury, použití

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

DOCUMENT MANAGEMENT TOOLKIT

Stručný obsah. Část I. Část II. Část III. Úvod do vývoje v prostředí Visual Studio 25. Návrh uživatelského rozhraní 127

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

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

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

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

Autodesk AutoCAD LT 2019

CASE. Jaroslav Žáček

KATALOG SLUŽEB NÁSLEDNÉ PODPORY

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

Tovek Server. Tovek Server nabízí následující základní a servisní funkce: Bezpečnost Statistiky Locale

Technologie Sharepoint

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

Lotus Quickr - ECM Integrace s LD/LN aplikacemi. Ing. Josef Homolka VUMS Legend

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

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

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

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

Téma Školitel Počet dní Moderní principy řízení výrobního podniku

SIMATIC S IT. Micro Automation. Promoters Meeting October Představení CP IT SPIDER CONTROL TELESERVIS. TESTOVACÍ server.

Healtcheck. databáze ORCL běžící na serveru db.tomas-solar.com pro

Databázové patterny. MI-DSP 2013/14 RNDr. Ondřej Zýka,

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

Instalace produktu Ontopia. ver (open-source verze)

Transkript:

Jak testovat software v praxi aneb šetříme svůj vlastní čas Tomáš Herceg Chief Software Architect @ Microsoft ASP.NET MVP http://www.herceg.cz, http://www.vbnet.cz

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

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!

Test z dočasného testovacího kódu DEMO Tomáš Herceg Chief Software Architect @ Microsoft ASP.NET MVP http://www.herceg.cz, http://www.vbnet.cz

Ú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í 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 apod.

Unit testy a jejich parametrizace DEMO Tomáš Herceg Chief Software Architect @ Microsoft ASP.NET MVP http://www.herceg.cz, http://www.vbnet.cz

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

Ú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

Testování Entity Framework modelu DEMO Tomáš Herceg Chief Software Architect @ Microsoft ASP.NET MVP http://www.herceg.cz, http://www.vbnet.cz

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 po sobě uklidí samy 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

Testy z reálného projektu DEMO Tomáš Herceg Chief Software Architect @ Microsoft ASP.NET MVP http://www.herceg.cz, http://www.vbnet.cz

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

Ú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í

Zátěžové testy ve Visual Studiu DEMO Tomáš Herceg Chief Software Architect @ Microsoft ASP.NET MVP http://www.herceg.cz, http://www.vbnet.cz

Testování uživatelského rozhraní Od Visual Studio 2010 podpora Coded UI Tests Podporuje Webové aplikace (libovolná technologie, prohlížeče IE a Firefox) Windows Forms aplikace WPF / Silverlight aplikace Omezeně C++ (MFC)

Testování uživatelského rozhraní Nefunguje bez chyb komponenty třetích stran často zlobí Vhodné pro jednodušší scénáře Např. smoke testing webové aplikace Proklikání všech stránek, jestli nějaká nepadá Vhodné v kontinuální integraci Doinstalovat Visual Studio 2010 Feature Pack 2

Coded UI testy DEMO Tomáš Herceg Chief Software Architect @ Microsoft ASP.NET MVP http://www.herceg.cz, http://www.vbnet.cz

Testování webových aplikací WatiN (http://watin.org/) Umožňuje z kódu Otevřít prohlížeč (IE, Firefox) na určité stránce Vyplňovat políčka Klikat na tlačítka a odkazy Kontrolovat hodnoty, vyhledávat text Lze užít k naskriptování složitějších scénářů

WatiN přidání komentáře v diskusi DEMO Tomáš Herceg Chief Software Architect @ Microsoft ASP.NET MVP http://www.herceg.cz, http://www.vbnet.cz

Testování UI Nepřeceňovat neumí všechno Některé věci musí zkontrolovat člověk Jestli se layout nerozpadá Jestli jsou hodnoty na správných místech Nepište je hned, UI se často mění i v závěrečných fázích vývoje aplikace Bude nutné měnit i testy

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í

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 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

Co byste si měli odnést Testování by mělo čas šetřit (v dlouhodobém horizontu) Nesnažte se testovat vše 100% code coverage je utopie a zbytečnost Testujte jen to, co má smysl Jenom testy UI jsou lepší než nic Ale měly by být doplňkem k integračním

Máte u produkčních projektů monitoring funkčnosti?

Logujete chyby vzniklé v produkčním prostředí?

A kontrolujete tyto logy pravidelně?

Diskuse Q&A Tomáš Herceg Chief Software Architect @ Microsoft ASP.NET MVP http://www.herceg.cz, http://www.vbnet.cz