Visual Studio Team System: Kvalita software a Test- Driven Development Michael Juřek Software Architect Microsoft s.r.o.

Slides:



Advertisements
Podobné prezentace
Software Development Conference 2007 Vztah dodavatele a odběratele Zdeněk Borůvka.
Advertisements

Stránka 1, © Vema, a. s.. Stránka 2, © Vema, a. s. Podnikové aplikace  Integrovaný podnikový systém (Integrated Business System):  komplex aplikací.
ŘEŠENÍ PRO TÝMOVOU INFRASTRUKTURU
Stručný úvod do UML.
Přednáška č. 3 Normalizace dat, Datová a funkční analýza
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
Přednáška č. 5 Proces návrhu databáze
Autor : Ladislav Ullrich.  Automatizované testování Problematika Přínosy  Funkční testování Problematika Princip  Požadavky na ATN  Přehled komerčních.
Workflow Foundation Základy a architektura
Modelování procesů pomocí workflow
Operační systémy a aplikační servery Tomáš ZACHAT SPŠ Praha 10, STIC.
 Vyhledání míst v programech vhodných pro optimalizaci  Sleduje se četnost volání a trvání jednotlivých částí programu JetBrains dotTrace Profiler.
Softwarový systém DYNAST
C# pro začátečníky Mgr. Jaromír Osčádal
Office 2007 – klient Štěpán Bechynský Developer Evangelist Microsoft s.r.o.
Visual Studio Team Edition for Database Professionals
Programování v C++ Cvičení.
Visual Studio Team System: Individuální nástroje pro architekty, vývojáře, testery Michael Juřek Software Architect Microsoft s.r.o.
Microsoft Confidential Michael Juřek Software Architect Microsoft.
WBI Systems a.s. Barákova Říčany T: F: E: W: SQL Server 2008 R2 Základy licencování.
Aukro.cz – projektový management v e-commerce Tereza Kabrdová.
11. Trendy ve vývoji aplikací, podporujících podnikové procesy
ESTUP – Elektronické STUdentské Práce, Martin Pešava 2006, Brno Systémy pro zpřístupňování VŠKP: zkušenosti, možnosti, nabídky, potřeby... Systém pro eVŠKP.
Vývoj aplikací pro SharePoint
Michael Juřek Software Architect Microsoft s.r.o.
PHP – Základy programování
Informatika / programování
Rozšíření jednouživatelské verze IS na víceuživatelskou Prezentace Diplomové práce Autor : Libor Tomášek Spoluautoři : Pobucký M., Drábek L. Vedoucí :
Plán testů Tým FelPay. Testování a kvalita obecně Přispívá ke správné funkci systému Přispívá ke správné funkci systému Snižuje finanční a časové ztráty.
4IT445 – Testování a ladění v PHP Ing. Jan Mittner
Metainformační systém založený na XML Autor: Josef Mikloš Vedoucí práce: Ing. Jan Růžička, Ph.D. V/2004.
4. Lekce Dílčí procesy funkčního testování
SIPVZ – Státní informační politika ve vzdělávání w w w. e - g r a m. c z E-gram E-gram Informační a komunikační web SIPVZ 1. Původní web:
LiveContent Univerzální Formulářové Řešení Michal Petrtýl, Marek Beneš.
Transparentní modelování a provádění procesů Michael Juřek Software Architect Microsoft s.r.o.
Dokumentace objektů a zveřejnění funkcí
Pojmové vymezení. Proč pojmové vymezení? Spousta firem deklaruje svou projektovou orientaci Ve skutečnosti pouze používají několik metodik pro podporu.
Microsoft Office InfoPath 2003 Tomáš Kutěj Account Technology Specialist
Multiplatformní, řídící systém elektronického vzdělávání pro školy eDoceo Multiplatformní, řídící systém elektronického vzdělávání pro školy Tomáš Hrdonka.
Dokumentace informačního systému
Vize Visual Studia 2005 Podpora živého partnerského ekosystému Podpora živého partnerského ekosystému Jednoduché vytváření propojených systémů Jednoduché.
Jiří Burian DPE PM Nový typ aplikací a požadvků Visual Studio 2008 Silverlight Expression Web 2.0 Připravujeme lokalizaci komunitních.
Copyright (C) 2000 Vema, a. s.1 V3 klient Michal Máčel Provozní integrace G2, HR/Win a internetu.
Microsoft Office Project 2007 Představení aplikace.
Úvod Benchmarkování –Měření a vyhodnocování výkonnosti software pomocí modelových aplikací Regresní benchmarkování –Porovnávání výkonnosti vývojových.
Novinky pro webovou platformu Jiří Burian, Tomáš Kutěj,
organizační struktury Implementace EOS III na Olomouckém kraji Pro:Krajský rok informatiky 2005 Autor:Jan Kadlec Datum:
HUMUSOFT s.r.o. Konference WITNESS Setkání uživatelů programu WITNESS Hotel Valáškův Grunt, Kozov
Citect SCADA 7.30 ADO.NET 2013/04 Petr Zima.
Nebezpečí webových aplikací Tomáš Strýček Invex Forum Brno
2005 Adobe Systems Incorporated. All Rights Reserved. 1 Inteligentní PDF formuláře Vladimír Střálka Territory Account Manager Adobe Řešení pro.
Michael Juřek Software Architect Microsoft s.r.o.
SERVICESSERVER CLIENT Operating System Relational Database Application ServicesSystems Management Developer Tools Programming Model Applications.
INTERNET VE STÁTNÍ SPRÁVĚ A SAMOSPRÁVĚ 2008 © Copyright IBM Corporation 2008 Správa obsahu v podání IBM 7. – 8. dubna 2008 ibm.com/cz/public Daniel Beneš.
Microsoft SQL server Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
14. června 2004Michal Ševčenko Architektura softwarového systému DYNAST Michal Ševčenko VIC ČVUT.
Protálová řešení Příklady reálných nasazení Tomáš Kutěj System Engineer Microsoft.
Visual Basic - programování
Testování s TestComplete
Detekce a odstraňování chyb Vývoj informačních systémů.
Visual Studio Team System: Práce v týmech s pomocí Team Foundation Serveru Michael Juřek Software Architect Microsoft s.r.o.
Zálohování dat. Zálohování dat (podle CHIP) důvody zálohování – problémy HW, SFTW, viry, chyby uživatele, viry, hackeři, přírodní katastrofy, krádeže.
A jeho praktická aplikace Štěpán Vacek Univerzita Hradec Králové Liberecké informatické fórum 2010.
.NET framework platforma Jiří Pokorný
TDD - Test Driven Development
Team Foundation Server 2015
Budování Integrovaného informačního systému Národního památkového ústavu Petr Volfík, NPÚ ÚP
GaP a správa úvazků.
Web Application Scanning
DevOps (nejen) pro mobilní aplikace
Transkript prezentace:

Visual Studio Team System: Kvalita software a Test- Driven Development Michael Juřek Software Architect Microsoft s.r.o.

Členové týmu Architekt infrastruktury Architekt aplikace Projektový manažer Vývojář Tester Koncový uživatel

Visual Studio Team System Change ManagementWork Item TrackingReportingProject Portal Visual Studio Team Foundation Server Integration ServicesProject Management Process and Architecture Guidance Dynamic Code Analyzer Visual Studio Team Edition Software Architects Static Code Analyzer Code Profiler Application DesignerSystem Designer Logical Datacenter Designer Visual Studio Team Edition Software Developers Visual Studio Industry Partners Team BuildDeployment DesignerUnit Testing (C#, VB.NET)Code CoverageTeam Explorer (includes Team Foundation Server CAL)Visual Studio Professional EditionLoad TestingManual Testing Test Case Management Visual Studio Team Edition Software Testers Class Designer (in Visual Studio Standard Edition and higher) Visio for Enterprise Architects (in MSDN Premium Subscription) Visual Studio Team Edition Database Professionals Offline Database Project Schema Compare DB Rename Refactoring Data GeneratorData CompareUnit Testing (T-SQL) Návrh tříd Návrh distribuovaných systémů Analýza kódu Další typy testů Správa testů Unit testy

Agenda Analýza kódu Unit testy Další typy testů Správa testů

Statická analýza Identifikace problémů v kódu před spuštěním nebo nasazením Analyzuje úspěšně zkompilovaný kód, nikoliv zdrojový kód Řada konfigurovatelných pravidel: Od jmenných konvencí až po potencionální bezpečnostní díry Integrována s Team Foundation Serverem Politika pro check-in, analýza buildů Původ je v nástrojích FxCop a PREFast

Kompilace Kód.dll,.exe Preproc Compiler, linker Varování, chyby Bez statické analýzy...

Kód Kompilace Statická analýza Analýza kódu Kontrola pravidel Varování, chyby.dll,.exe Se statickou analýzou...

Statická analýza kódu: Nastavení analýzy Spuštění analýzy Integrace s TFS

Profilování Analýza běžícího kódu Řízený (managed) nebo nativní kód Sběr informací o běžícím kódu, zásobníku, čase, alokaci paměti (objektů) apod. Založen na dvou nástrojích používaných interně v MS Integrován do prostředí Visual Studia Dva způsoby měření: Sampling – sběr informací v pravidelných intervalech (HW závislé, nelze na VirtualPC) Instrumentace každého volání bloku kódu

main AMethod BMethod Aplikace nezměněna, měření má malou režii, ale je pouze přibližné main 3 AMethod 6 BMethod 9 2 Sampling

main AMethod BMethod main 001 AMethod0023 BMethod0098 … Přesné měření (větší režie), ale aplikace není původní, má přidané instrukce. Instrumentace

Analýza zásobníku a běžících vláken kódu Vizualizace dat v prostředí Visual Studia Volání mezi bloky kódu: Doba a počet volání bloků Vztah volající – volaný Analýza paměti a funkce GC (volitelně): Počet a místo alokace typů objektů Doba života objektů Možnost exportu do XML Analýza dat z profilování

Profilování managed kódu: Nastavení vlastností SpuštěníAnalýza

Agenda Analýza kódu Unit testy Další typy testů Správa testů

Integrace testování do vývojového procesu Unit testy definují postup vývoje: Testy jsou vytvářeny podle specifikace rozhraní tak, aby pokryly všechny dostupné metody Testují základní funkci, okrajové podmínky, definované chybové stavy Vytváří se pouze kód, který vede k úspěchu nějakého unit testu Kód Vývoj založený na testování (Test-driven development, TDD)

Initialization/Clenaup kód na úrovni knihovny (assembly), třídy i metody Statická třída Assert pro výstup výsledků ExpectedException atribut pro očekávané výjimky Více volání téhož testů s různými parametry: Data-driven testy (vizuální podpora vytváření) Integrace s prostředím Možnosti unit testů ve VSTS

Integrace s prostředím.NET framework Testovací metody založeny na atributech Visual Studio Automatické generování testovacích tříd Implementace a ladění testovacího kódu Správa testů a seznamů testů Měření pokrytí kódu (Code coverage) Team Foundation Server Testy jsou odrůdou zdrojového kódu (verzování, správa zdrojového kódu) Vytváření testů je součástí projektového plánu (Work Items integrace) Udržování vazeb a příčinných souvislostí: selhaný test -> bug -> fix -> automatické oznámení testerovi

Code coverage Pro unit testy není důležitá kvantita, ale kvalita Vhodným měřítkem je „code coverage“ Jaký podíl napsaného kódu je pokryt unit testy? Možnost analýzy „shora dolů“ Řešení -> Projekt -> Třída -> Metoda Pozor, neměří kvalitu kódu ani testů: Pokud např. v kódu není ošetřena hraniční podmínka a neexistuje unit test pro tuto situaci, můžete mít 100% pokrytí a přesto je to špatně Proto je důležité psát testy podle zadání a ne podle kódu Dejte si vysoký, ale realistický cíl pro pokrytí 100% je typicky nedosažitelných

Code coverage Kolik kódu bylo skutečně otestováno unit testy? Vizuálně v kódu Procentuálně jako rozpad podle projektů, tříd, bloků kódu

Unit test: GenerováníImplementaceSpuštění Integrace s Code coverage Data-driven, ExpectedExceptionAttribute

Umístěte testy do separátních projektů Udržujte vztah 1:1 mezi projektem a jeho testovacím projektem Používejte „black box“ přístup Pište testy podle zadání/analýzy a ne podle implementace Pište testy PŘED anebo BĚHEM vývoje, ne PO Každý test by měl testovat pouze jednu funkci Každý test by měl být nezávislý na ostatních testech Testujte hraniční případy i případy vedoucí k očekávaným výjimkám Najdete-li chybu v kódu, napište selhávající unit test a teprve pak ji začněte opravovat Doporučení

Agenda Analýza kódu Unit testy Další typy testů Správa testů

Funkční testy web aplikací Některé možné otázky ohledně funkce: Jaká je doba odezvy na typickou úlohu? Nenarušil upgrade/fix funkci aplikace? Dává vyhledávání očekávaný výsledek? Mnoho řešení od třetích stran: Různé schopnosti, různé možnosti vlastního rozšíření, různé cenové hladiny Nový nástroj pro tyto scénáře ve VSTS: Nástupce nástroje Application Center Test Nepodporuje jiné typy rozhraní (WinForms,...) Alespoň ne v této verzi

Web testy Integrovány do Visual Studia Jednoduše – další typ testu Na základě nahrané posloupnosti stránek anebo pomocí kódu: Extrakce parametrů a validace výsledku Nejen pro ASP.NET Pro jakoukoliv HTTP komunikaci Lze použít i pro webové služby Absolutní rozšiřitelnost Zajímavé rysy: Forms Authentication, Viewstate, Cookies

Možnosti web testů Web Test je posloupnost URL s parametry Možnost nahrání z Internet Exploreru Editovatelný XML formát Variace parametrů (data-driven test) Extrakce parametrů pro následné použití Text, regulární výraz, hlavička, atribut, skryté pole, pole formuláře,... (vlastní) Validace výsledku: Hodnota pole, hledání textu, doba odezvy, kontrola atributů, kontrola počtu tagů,... (vlastní) Možnost automatického převodu na kód Poté neomezená rozšiřitelnost a flexibilita

Web test: Nahrání Nastavení data-driven provádění Validation rules Extraction rules Vytvoření testu jako kódu

Zátěžové testování Multi-threadové provádění: unit testů web testů Sběr hodnot přednastavených výkonových čítačů Porovnání hodnot s nastavenými mezními hodnotami Možnost nastavení mixu scénářů, prohlížečů, kvality síťového spojení Flexibilní nastavení zátěže: Konstantní Postupné zvyšování Zvyšování až do splnění nějakého cíle

Zátěžový test: Vytvoření Nastavení sledovaných čítačů SpuštěníVyhodnocení

Ostatní typy testů „Setříděný“ test (Ordered) Provádí jiné testy ve specifikovaném pořadí Obecný test (Generic) Obalení existujícího programu z příkazové řádky Vyžaduje minimální integrační práci Manuální test Dokument ve Wordu nebo v textovém souboru Integrace do spouštění seznamu testů Výsledek testu = volba testera spouštějícího test Vlastní testy Možnost rozšiřování Visual Studia

Agenda Analýza kódu Unit testy Další typy testů Správa testů

Test Manager Vytváření a správa seznamů testů Jednotlivé testy jsou v hierarchických seznamech Podobně jako jsou soubory ve složkách Nastavení konfigurace spouštění testů Řada parametrů ovlivňujících běh testu Code coverage atd. Spouštění testů: Vybraných individuálně Podle seznamů testů

Integrace do prostředí VS Definice seznamů testů a konfigurace testů je uložena v souborech: Mohou být využity mimo Visual Studio, např. z příkazové řádky (MSTest.exe) Integrace s Team Foundation Serverem Definice seznamů testů a konfigurace testů může být uložena ve verzovaném úložišti Úspěšný průchod seznamem testů může být podmínkou pro uložení kódu do úložiště Seznam testů může být prováděn jako součást kontroly automatických buildů

Test Manager Práce se seznamy testů Spouštění testů Spouštění testů z příkazové řádky Integrace s TFS – automatický build

Závěrem Visual Studio Team Edice přinášejí velké množství individuálních nástrojů architektům Návrh distribuovaných systémů Modelování tříd Vlastní modely a postupy... vývojářům Statická analýza kódu Profilování kódu... testerům Unit testy Další typy testů Správa testů