Visual Studio Team System: Individuální nástroje pro architekty, vývojáře, testery Michael Juřek Software Architect Microsoft s.r.o.

Slides:



Advertisements
Podobné prezentace
© 2000 VEMA počítače a projektování spol. s r. o..
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
Nadpis Portál pro komunikaci s občany 1 Portál pro komunikaci s veřejností Portál pro komunikaci s veřejností DATRON, a.s. ing. Jaromír Látal projektový.
Stručný úvod do UML.
Mainstream Technologies, s.r.o.
Projektové řízení Modul č.1.
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ý.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Přednáška č. 5 Proces návrhu databáze
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.
Softwarový systém DYNAST
METODOLOGIE PROJEKTOVÁNÍ
Metody zpracování vybraných témat (projektů)
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
Vývoj aplikací pro SharePoint
Michael Juřek Software Architect Microsoft s.r.o.
KEG Použití vzorů při vyhledávání na webu Václav Snášel.
Software Architect Forum 2006 Trendy ve vývoji aplikací Michael Juřek, Dalibor Kačmář Microsoft s.r.o.
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í :
Relační databáze.
Tomáš Urych, ESO9 Intranet a.s.
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.
Podpora a rozvoj komunikační infrastruktury ISVS Ing. Lubomír Moravčík
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:
Reporting Ing. Jan Přichystal, Ph.D.. Úvod Uživatelé obvykle přistupují k DW pomocí BI aplikace Většina využívá předdefinované reporty Poskytují standardizovaný.
LiveContent Univerzální Formulářové Řešení Michal Petrtýl, Marek Beneš.
B. Miniberger, BIVŠ Praha 2009
Transparentní modelování a provádění procesů Michael Juřek Software Architect Microsoft s.r.o.
Dokumentace objektů a zveřejnění funkcí
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
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.
Systémy pro podporu managementu 2 Inteligentní systémy pro podporu rozhodování 1 (DSS a znalostní systémy)
Visual Studio Team System: Kvalita software a Test- Driven Development Michael Juřek Software Architect Microsoft s.r.o.
Novinky pro webovou platformu Jiří Burian, Tomáš Kutěj,
HUMUSOFT s.r.o. Konference WITNESS Setkání uživatelů programu WITNESS Hotel Valáškův Grunt, Kozov
Databázové modelování
Česko a Slovensko, výhledy do budoucnosti Michal Tomek – InterSystems BV.
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.
Nové technologie pro webové aplikace v cestovním ruchu Nové technologie pro webové aplikace v cestovním ruchu Pavel Čech Unverzita Hradec Králové.
Michael Juřek Software Architect Microsoft s.r.o.
SERVICESSERVER CLIENT Operating System Relational Database Application ServicesSystems Management Developer Tools Programming Model Applications.
SOA = Architektura orientovaná na služby
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í.
OPERAČNÍ SYSTÉMY.
14. června 2004Michal Ševčenko Architektura softwarového systému DYNAST Michal Ševčenko VIC ČVUT.
Softwarové inženýrství semestrální projekt
Visual Basic - programování
Testování s TestComplete
A jeho praktická aplikace Štěpán Vacek Univerzita Hradec Králové Liberecké informatické fórum 2010.
Návrh uživatelského rozhraní. Volba akcí uživatele – Systém menu Formát ukládání a modifikace dat – Vstupní formuláře Způsob formulování dotazů – SQL,
.NET framework platforma Jiří Pokorný
XML a datový standard Zdeněk Jirkovec Softwarové Aplikace a systémy.
Team Foundation Server 2015
Vlastnosti souborů Jaroslava Černá.
Budování Integrovaného informačního systému Národního památkového ústavu Petr Volfík, NPÚ ÚP
Návrhový vzor Flyweight
Web Application Scanning
Transkript prezentace:

Visual Studio Team System: Individuální nástroje pro architekty, vývojáře, testery 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 2008 Change Management Work Item Tracking Reporting Project Portal Visual Studio Team Foundation Server Integration Services Project Management Process and Architecture Guidance Dynamic Code Analyzer Visual Studio Team System Architecture Edition Static Code Analyzer Code Profiler Application Designer System Designer Logical Datacenter Designer Visual Studio Team System Development Edition Visual Studio Industry Partners Team Build Deployment Designer Unit Testing (C#, VB.NET) Code Coverage Team Explorer (includes Team Foundation Server CAL) Visual Studio Professional Edition Load Testing Web Testing Visual Studio Team System Test Edtiion Class Designer (in Visual Studio Standard Edition and higher) Visio for Enterprise Architects (in MSDN Premium Subscription) Visual Studio Team System Database Edition Offline Database Project Schema Compare DB Rename Refactoring Data Generator Data Compare Unit Testing (T-SQL) Code Metrics Manual Testing Test Case Management

Agenda Návrh distribuovaných systémů Návrh tříd Vlastní modely a postupy Analýza kódu Unit testy Další typy testů Správa testů

Administrátoři nerozumí aplikacím, jejich nárokům a požadavkům Vývojáři Administrátoři Vývojáři nerozumí provoznímu prostředí, jeho nastavení apod. Distribuované aplikace znamenají problémy

Merc.StageShuttleJob Cache HTTP SQL Feed Store Feed Store DSS FTP Vize - System Definition Model „Živá“ předloha pro fungování aplikace Potřebné zdroje Politiky pro běh aplikace Operační možnosti Vytvoření definice nového systému nebo jeho úprava Fungování systému podle jeho definice Automatická alokace zdrojů a konfigurace podle definice STORAGESERVERSNETWORKING SDM dokument

Applications Application Hosts Network Topology & OS Hardware System Definition Model (SDM): Formální popis celého systému Obsahuje informace pro instalaci a nasazení Automaticky čitelný, zachycuje záměry vývojářů i správců Topologie systémů Požadavky vývojářů IT politiky Pokyny pro instalaci Model „zdraví“ aplikace Pravidla pro monitorování Service Level Agreement Reporty ? ? System Definition Model

Snižují složitost návrhu a vývoje distribuovaných systémů Lepší komunikace mezi architekty a vývojáři Návrh distribuovaného systému je automaticky synchronizován se skutečným stavem (kódem) Zvyšuje šanci na úspěšné nasazení do provozu Umožňuje vzájemné porozumění požadavkům vývojářů a správců Nabízí možnost ověření návrhu systému oproti prostředí, ve kterém má být aplikace nasazena Zlepšují komunikaci uvnitř vývojových týmů Distributed System Designers

Application Designer Hostování aplikací Aplikace Deployment Designer System Designer System Definition Model Logical Datacenter Designer Distributed System Designers

Aplikace Nedělitelná jednotka pro nasazení Typ (WinForms, ASP.NET, web služba,...) Verzována Lze definovat rozhraní služby Nabízí a/nebo používá služby ostatních aplikací (endpoint) Definuje požadovanou konfiguraci Může definovat omezení na hostující prostředí (OS, IIS,...) Uložena jako SDM dokument

Systém Jednotka nasazení složená z aplikací VerzovánaKompoziceZapouzdření Nabízí a/nebo používá služby ostatních aplikací/systémů Může přepsat konfiguraci a omezení v ní vložených aplikací Uložena jako SDM dokument

Application Diagram: Návrh architektury Nastavení a omezení Implementace a synchronizace

Správná informace…

Zjednodušená abstrakce části datového centra Popisuje typy serverů nikoliv počty Popisuje nastavení a konfiguraci serverů nikoliv jejich fyzické charakteristiky Popisuje povolené a dostupné protokoly nikoliv IP konfiguraci, routovací tabulky apod. Popisuje komunikační hranice nikoliv firewally, VLAN, switche, routery,... Popisuje požadavky na autentizaci nikoliv kryptografii na úrovni síťových paketů Popisuje požadavky na konfiguraci aplikací bez nutnosti složité dokumentace a komunikace Co je logické datové centrum?

Popisuje možnosti datového centra pro provozování aplikací Verzováno Definuje logické aplikační servery: Konfigurace, možná spojení Požadavky na aplikace Umístěny v zónách zastupujících komunikační hranice Uložena jako SDM dokument Logické DC

Popis nasazení konkrétního systému v konkrétním logickém DC Mapuje jednotlivé aplikace na logické servery v DC Slouží k ověření slučitelnosti požadavků vývojářů (na úrovni aplikace) s požadavky správců (na úrovni DC) Definice nasazení

Logical Datacenter Diagram: Návrh datového centra Nastavení a omezení Deployment Diagram: Validace

Agenda Návrh distribuovaných systémů Návrh tříd Vlastní modely a postupy Analýza kódu Unit testy Další typy testů Správa testů

Diagramy se stávají nedílnou součástí celého životního cyklu Diagram je pouze pohled na kód Praktičnost, snadnost použití Přirozená práce s koncepty CLR Terminologie specifická pro jazyk použitý vývojářem (VB.NET, C#) Komfortní uživatelské rozhraní hladce integrované do Visual Studia Object Test Bench pro jednoduché testování funkce objektů Proč návrh tříd?

Diagram tříd - vlastnosti Podobnost s UML Class diagramem Možnosti použití: Prvotní návrh tříd Porozumění, dokumentace a vizualizace tříd Revize a refactoring kódu Neobsahuje žádný aspekt kódu: Pouze automaticky synchronizovaný pohled na kód Uložen v projektu Více tříd v jednom diagramu Vztahy – dědičnost, asociace Konstrukce – class, enum, struct, interface,...

Diagram tříd: Návrh tříd „Synchronizace“ s kódem Analýza tříd Object Test Bench

Agenda Návrh distribuovaných systémů Návrh tříd Vlastní modely a postupy Analýza kódu Unit testy Další typy testů Správa testů

Guidance Automation Toolkit (GAT) Postupy vytvořené expertem urychlují vývoj i méně zkušeným Aby byly postupy aplikovatelné: Musí mít připraveny v přesném kontextu Musí být integrovány do nástrojů (jinak často zůstanou nenaplněným dokumentem) GAT je sada nástrojů pro implementaci vlastního know-how v projektech: Integrované rozšíření Visual Studia Dostupné v přesném kontextu Volně k dispozici, zatím v Beta verzi

GAT – základní pojmy Action Atomická operace nad položkou řešení ve VS Recipe Definuje jednu nebo více akcí Definuje, kde akce získávají parametry pro svůj běh Definuje, jakým způsobem uživatel může spustit akci jednorázově nebo opakovaně ve vazbě na konkrétní položku nebo bez ní

Vizuální jazyky property Corona label Shape GroupBase members waiting running pausebegin stop playing +v 0v 0.7CR R C 0.1R C R

DSL DSL = Domain Specific Languages Specializovaný jazyk zaměřený na řešení nebo popis specifického problému nebo úlohy Mnoho příkladů SQL, designéry GUI, HTML, regulární výrazy VS Distributed System Designers, Class Designer Díky nim je řešení snadno pochopitelné a dlouhodobě dobře udržovatelné

DSL Tools pro Visual Studio Volně k dispozici Visual Studio 2005 Microsoft Modeling Platform In Visual Studio DistributedSystemsDesignersClassDesigner DSL Tools for Visual Studio Váš nový designér

Microsoft Modeling Platform In Visual Studio DSL nástroje pro Visual Studio Domain Model Framework Design Surface Framework Template Engine Shell Frame- work Validation Frame- work Paměťová databáze objektového grafu + služby (transakce, serializace, dotazy,...) Rozšiřitelné a programovatelná kreslící plocha (autolayout apod.) Generování artefaktů řešení Provádí kontrolu sémantické správnosti, případně vede vývojáře při nápravě chyb Integrace do prostředí VS (panel nástrojů, nabídky,...)

Příklad: Definice modelu

Příklad: Použití modelu

Agenda Návrh distribuovaných systémů Návrh tříd Vlastní modely a postupy 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

Metriky kódu Jeden z ukazatelů zdraví a čistoty kódu Změří složitost vašeho kódu Umožňuje porovnávat části a hledat problematická místa Pomáhá zvýšit udržovatelnost kódu Snižuje rizika Vhodné např. pro zvážení rizika přebrání existujícího kódu

Metriky kódu - definice Pomocné metriky – čím méně, tím lépe Lines of code – počet výkonných řádků kódu (bez deklarací, komentářů, složených závorek apod.) Cyclomatic complexity – počet cest v kódu (podmínky, smyčky, apod. + 1) Class inheritance – “hloubka” dědičnosti tříd Class coupling – počet vzájemných závislostí mezi jednotlivými třídami Celková metrika – čím více, tím lépe Maintainability Index – index udržovatelnosti Carnegie Mellon University, Software Engineering Institute, Maintainability Index Technique for Measuring Program Maintainability, Halstead, Maurice H. Elements of Software Science, Operating, and Programming Systems Series Volume 7. New York, NY: Elsevier, 1977

Metriky kódu

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 CPU, 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žnosti analýzy: Uložení reportu a analýzy, export reportu (XML, CSV), vizualizace kritické cesty, redukce šumu, definice vlastních filtrů, porovnání dvou reportů (baselining) Analýza dat z profilování

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

Agenda Návrh distribuovaných systémů Návrh tříd Vlastní modely a postupy Analýza kódu Unit testy Další typy testů Správa testů

Zdroj:Ron Patton, Software Testing SAMS, 2005 Zdroj:Ron Patton, Software Testing SAMS, 2005 Stokrát více...

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 Návrh distribuovaných systémů Návrh tříd Vlastní modely a postupy 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 Návrh distribuovaných systémů Návrh tříd Vlastní modely a postupy 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ů