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

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

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

Podobné prezentace


Prezentace na téma: "Visual Studio Team System: Kvalita software a Test- Driven Development Michael Juřek Software Architect Microsoft s.r.o."— Transkript prezentace:

1

2 Visual Studio Team System: Kvalita software a Test- Driven Development 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 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

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

6 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

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

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

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

10 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

11 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

12 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

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

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

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

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

17 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

18 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

19 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

20 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

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

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

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

24 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

25 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

26 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

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

28 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

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

30 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

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

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

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

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

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

36


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

Podobné prezentace


Reklamy Google