Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

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

Podobné prezentace


Prezentace na téma: "Visual Studio Team System: Individuální nástroje pro architekty, vývojáře, testery Michael Juřek Software Architect Microsoft s.r.o."— Transkript prezentace:

1

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

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

4 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

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

6 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

7 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

8 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

9 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

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

11 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

12 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

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

14 Správná informace…

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

16 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

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

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

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

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

21 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,...

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

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

24 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

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

26

27

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

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

30 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

31 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,...)

32 Příklad: Definice modelu

33 Příklad: Použití modelu

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

35 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

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

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

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

39 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

40 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, http://www.sei.cmu.edu/str/descriptions/mitmpm.html http://www.sei.cmu.edu/str/descriptions/mitmpm.html Halstead, Maurice H. Elements of Software Science, Operating, and Programming Systems Series Volume 7. New York, NY: Elsevier, 1977

41 Metriky kódu

42 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

43 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

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

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

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

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

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

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

50 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

51 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

52 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

53 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

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

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

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

57 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

58 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

59 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

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

61 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

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

63 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

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

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

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

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

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

69


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

Podobné prezentace


Reklamy Google