640 likes | 838 Views
Testing med Visual Studio Team System for Software Testers. Martin Pamdeth martinpa@microsoft.com Developer & Platform Strategy Microsoft Danmark blog: http://blogs.msdn.com/martinpa. TechTalk. Agenda. Mål for VSTS og TFS Tests: Hvorfor, Hvornår og Hvad? Testning med VSTS Test Typer
E N D
Testing medVisual Studio Team System for Software Testers Martin Pamdeth martinpa@microsoft.com Developer & Platform Strategy Microsoft Danmark blog: http://blogs.msdn.com/martinpa TechTalk
Agenda • Mål for VSTS og TFS • Tests: Hvorfor, Hvornår og Hvad? • Testning med VSTS • Test Typer • Administration og Kørsel af Tests i VSTS • Load Testing • Build management med Team Build • Et par gode råd • Afrunding inkl. spørgsmål og svar
Visual Studio Team SystemUdvidelseaf Visual Studio påtværsafApplikationsLivsforløbet (ALM) Developer Database Professional Designer Architect Tester Business Analyst IT / ProjectManager Projekt Gennemsigtighed Team Samarbejde Software Kvalitet
Visual Studio Team SystemApplication Life Cycle Management (ALM) Løsning Business Analyst Web Clients and XML Web Services Operations, QA and Help Desk Third-Party IDEs
Visual Studio Team System Team Build Server Visual Studio Team Suite SoftwareArchitects SoftwareDevelopers DatabaseProfessionals SoftwareTesters VisualStudioTeamExplorer VisualStudioIndustryPartners Application Modeling Code Analysis Performance Testing Database Deployment Infrastructure and Deployment Modeling Performance Tuning Manual Testing DatabaseChange Mgmt. Test Case Management Database Testing Security Analysis Unit Testing Code Coverage MSF Process and Guidance Class Modeling Visio and UML Modeling Visual Studio Professional Edition Load Test Agent Visual Studio Team Foundation Server Change Management Reporting Integration Services Work Item Tracking Project Site Project Management
Agenda Mål for VSTS og TFS Tests: Hvorfor, Hvornår og Hvad? Testning med VSTS Test Typer Administration og Kørsel af Tests i VSTS Load Testing Build management med Team Build Et par gode råd Afrunding inkl. spørgsmål og svar
Hvorfor teste? • Øget kvalitet • Find og ret design fejl • Lavere TCO og vedligeholdelses omkostninger
Hvornår skal man teste? • Så ofte som muligt • Så tidligt som muligt • Automatiserede tests vil være til hjælp
Hvad skal man teste? • Kritisk forretningslogik • Alt andet • Jo tydligere kravene til performance og skalerbarhed er beskrevet, desto lettere er det at vide, hvad der skal testes • Projektledelsen bør skaffe disse data så tidligt som muligt i forløbet • Bør helst være defineret fra start af
Test af applikationer • Funktionel test • Performance test • Sikkerheds test • Robustheds test • Usability test • …
Funktionelle test • Validerer brugerkrav • Test data skal defineres • Store applikationer/web sites kan være svære at teste • Fejl skal gøres reproducerbare • Test repetitioner er nødevendige • regressions/integrations tests
Performance tests • En af de mest kritiske og ofte oversete tests for web løsninger • Bør køres for hver iteration i projektet • Vigtigt at definere mål og holde testene op imod disse mål • Optimer applikationen om nødvendigt
Projekter og Tests • Ofte dyrt at vente til sidst • Strategier for at minimere indvirkningen 30 25 20 Relative omkostninger for at rette bugs... 15 10 5 Kodning Integration Post-Release Beta Test Krav
Udfordringer... • Det er dyrt at finde og rette fejl, der undslipper ifm. den daglige udviklings praksis • Det er svært at diagnostisere fejl ved runtime • Hvorfor kører en given applikation langsomt? • De enklete udviklere og testere har brug for at vide om de følger tidsplanen • Test og udvikling er ofte ude af synk • Den endelige test fase ifm idriftsættelse er ofte for ad-hoc • Hvornår har man testet tilstrækkeligt?
“Defence In Depth” • Microsoft bruger en 'defence in depth' strategi • Unit testing • Kode reviews • Jævnlige builds • Fang fejlene tidligt • Statiske checks • Runtime checks
Agenda Mål for VSTS og TFS Tests: Hvorfor, Hvornår og Hvad? Testning med VSTS Test Typer Administration og Kørsel af Tests i VSTS Load Testing Build management med Team Build Et par gode råd Afrunding inkl. spørgsmål og svar
Fokus på kvalitet tidligt i processen Visual Studio Team System klient Team Foundation Server Unit Testing og Code Coverage Versions-styring Statisk og Dynamisk Analyse Bug Tracking Checkin regler Build Server Web og Load Testing Reporter m. Kvalitets metrikker
VSTS Developer &TesterEksempel på forløb Udv. skriver kode Udv. skriver & kører Unit Tests Udv. laver kode review Udv. kører Kode Analyse Udv. definerer Load Tests Udv. checker arbejde ind Tester undersøger Build Status Tester kører Load Test Tester rapporterer fejl Udv. diagnosticerer og retter fejl Udv. checker arbejde ind
Integration af Udv. og Test • Tests er bare endnu en form for kildekode: • Er under versionskontrol • Versioneres sammen med produktet • “Test Komplet” • Test kodningen planlægges sammen med udviklings arbejdet • Spores vha. work items • Testere notificeres når fejl bliver rettet
Visual Studio Team SystemTeam Edition for Software Testers Manuelle test Ikke eller svært automatiserbare tests Unit testing Gerne kombineret med Code Coverage, måler effektivitet af ens tests Web test Automatisk afspilning af optagede web scenarier (HTTP/S),samt kode generering Web services tests via protocol-baseret script Load test Parallelt distribuerede unit og funktionelle test Præ-konfigurerede samt skrædersyede load mønstre Foruddefineret metrik opsamling samt overvågning af tærskler Generiske test Integration af anden test kode (Pass/Fail) Skrædersyede test typer 3. parts test integration Test administration samt kobling til Build services
Web Tests • Ikke kun til ASP.NET • HTTP-baseret • En vilkårlig web side • Kan benyttes til test af Web Services
Test Typer • Optagede tests (deklarative) • XML format • Liste af URL’er og parametre • Validerings- samt ekstraktions-regler • Kodede tests • Udvides via programlogik • Konverteres fra optagne tests
Smarte Features • Forberedt for Forms Authentication • Viewstate Tracking • Cookie Tracking
Validerings- og ekstraktions regler • Valider webside tilgang • Check indhold eller respons • Definer skræddersyede regler • Validering kan være data-styret • Extraher attributter / parametre • Til brug i efterfølgende requests
Kodede Web Tests • Komplet skræddersyet test løsning // Create a test WebTestRequest request1 = new WebTestRequest("http://localhost/StoreCSVS"); request1.ThinkTime = 8; // Add a rule ValidationRuleFindText rule1 = new ValidationRuleFindText(); rule1.FailIfTextFound = false; rule1.TextToFind = "IBuySpy"; request1.ValidateResponse += new ValidateResponseEventHandler(rule1.Validate);
Test Typer – kan udvides • Vi understøtter 5 test typer “out of the box”: • Manuelle • Unit (C#, C++ and VB .NET) • Web • Load/Stress/Smoke • 3. parts leverandører kan tilføje deres egne -- fuldt integrerede -- test typer
Andre Test Typer • Ordnet • Afvikler en gruppe af tests i foruddefineret rækkefølge • Generisk • En indkapsling af eksisterende tests (Pass/Fail)
Tests: kerne element i VSTT • Understøtter forskellige roller • Test implementatør (udviklere & testere) • Test afvikler & organisator • Build miljø understøttelse • Nye brugergrænseflade elementer • Test View – implementering, kørsel • Test Manager – gruppering, kørsel • Test Results – kørsels resultater • Test Runs – status og historik • Code Coverage Results – test effektivitet
Administation & kørsel af tests • Tests kan gruppperes i kategorier • Kørsel af tests: • Lokalt & remote • Via IDE’et • Fra kommandolinen: MSTest.exe • Via MS Build Task • Integration i en større sammenhæng: • Kildekode kontrol • Issue / Work item tracking • Microsoft Solutions Framework
ASP.NET Performance Problemer • Hvordan opfører jeres applikationer sig under load? • Hvilken funktionalitet har størst performanceimpact? • Processor / disk forbrug? • Er i nødt til at deploye til en produktions server for at kunne teste?
Login script - 10% Browse script - 60% Search script - 30% ASP.NET Load Testing • Integreret i VSTS for SW Testers • Anvender test scripts til scenarierne • Browser / bruger load / server kontrol (?) • Visualisering af resultater Grafer Web Site Tabeller XML
Work Load Modellering • Modeller brugadfærd, load, browsertyper og netværksforbrug vha. scenarier Web tests Load Pattern Unit tests
Definer Counter Sets Foruddefinerede counters til de forskellige teknologier
Load Test Profiler • Constant • Step • Goal Seeking • Øg load indtil et mål er nået • F.eks. øg loadet indtil load agentens CPU er på 90%, og hold derefter loadet stabilt
Load Test Monitor Sort by response time Goal-based Performance Reporting
Load Test Monitor • Lav skræddersyede grafer til at sammenholde responstider med server aktivitet • Tærskel alarmer • Bor ind for at gennemgå fejl detajlerne • Sorter data kolonnerne for nemt at finde langsomme web sider • Automatisk rapportering af “Page Times” • Se hvilker web sider, der ikke står mål med performance kravene
Threshold Violations Drag counters From machines under test onto graph
Load Test Analyzer • Al data opsamles i SQL Server til analyse • Lav skræddersyede grafer til at sammenligne maskinaktivitet med performance • Zoom ind for at grave dybere i analysen
Click and drag to zoom
Fordele – Load Testing Scale out load generering Effektiv load generering (1000 virtuelle brugere på en typisk maskine med en typisk web test) IP Switching til test af web farme Per CPU licensiering (ingen virtuel bruger lic.) Performance counters opsamles på Load Agents og maskiner under test Data (stats og logs) gemmes i central TFS SQL Server til analyse Load Test Monitor giver mulighed for monitorering af igangværende load test
Agenda Mål for VSTS og TFS Tests: Hvorfor, Hvornår og Hvad? Testning med VSTS Test Typer Administration og Kørsel af Tests i VSTS Load Testing Build management med Team Build Et par gode råd Afrunding inkl. spørgsmål og svar
Team FoundationBuildOut-of-the-box daglige builds • En god build proceskanværesvær at opnå • Mange udviklingsprojekterudnytterikkemuligheden • Mål: Gørdettrivielt • Builds gøresreproducerbare • VS Projekterbyggesdirekte • Builds udføresautomatiskt via scheduler eller on-demand • Build rapporterpubliserescentralt • Mål: Tæt integration med VS Team System værktøjerne, heriblandt: • Kodeanalyse, unit tests, web test mv.
Build initiated from server Create a build ID Document build environment Sync sources and tools Calculate code churn Produce build report Publish build Updatework items Calculate code coverage Executetests Compile and analyze Build Automatisering