Dagens agenda Inledning Test och testverktyg MSVSTS2008TE Omvärlden Belastningstester Hur går det till Faror Tips och trix Genomgång av gränssnittet för VSTEST Webtest genomgång Databaser Bygga lasttestscenarion och monitorering Demo av lasttest Analys av testresultat Genomgång av erfarenheter från tre praktikfall Summering och frågor
Handuppräckningsövning Hur många jobbar med test Hur många är utvecklare Hur många är chefer och ledare Hur många har arbetat med VS Hur många har arbetat med TFS Microsoft Visual Studio Team System 2008 Test Edition Hur många anser sig jobba agilt Hur många utför belastningstester
1000 / 200 130 / 65 19/17 Vi levererar det stora företagets ITkompetens med det lilla företagets själ och den enskilde konsultens engagemang.
Know IT:s verksamhet på en bild Offentlig sektor Läkemedel Industri Bank/Finan s Försäkring Telecom Business Intelligence CMS r Integration Test o kvalitet Strategisk rådgivning Systemutveckling Förvaltning Utredare/ upphandlare Metodstöd/ mentor Projektledare Arkitekt/ designer Utvecklare/ DBA etc. Testare/ testledare
Om testning
Test styrs av standarder på projektledningens uppdrag Exempel på standardprocesser BS 7925-2 (7925-1) IEEE 1008 T-Map/TPI MSF GDF IEEE 1012 PTM IEEE 703 RUP DSDM XP Dessutom finns de som indirekt påverkar ISO 14000 ISO 9000-3 ISO 15026 ISO 12207 ISO 9001 IEEE 829 IEEE 610.12 Testorganisationens motiv Kontroll på projektet/produkten Riskeliminering Smidigare utvecklingsarbete Normalt brukar test stå för mellan 30-80% av projektbudgeten. Dyrt?
Rättningskostnadens exponentiella fördelning - exempel Rätta upp ett krav vid kravfångsten Rätta upp ett krav vid kravtecknandet Rätta ett fel i enhetstest/komponenttest/programtest/modulte st Rätta ett fel i systemtest Rätta ett fel i systemintegrationstest Rätta ett fel i produktion 1kr 10kr 100kr 1000kr 10000kr 100000kr
Testorganisationen Uppgift Bedöma produktens kvalitet och råda projektledningen i frågor om denna Verifiera kravuppfyllnad Verifiera (genom att testa) att produkten är byggd enligt specifikationerna Visa att produkten fungerar enligt sin design Hitta och dokumentera buggar Produkt Rapporter av olika slag: Testrapporter Avvikelserapporter Trendrapporter Statusrapporter
Testverktyg
Vem har nytta av testverktyg? Organisationsledningen Projektledningen Testledaren Testaren Kodarna Slutanvändarna
Testmognad Optimerad Ständig förbättring Kontrollerad Mätning, Styrning, Uppföljning av metodiken Definierad Välbeprövad, reviderbar metodik Repeterbar Företagsanpassad, erfarenhetsbaserad metodik Projektspecifik Ad hoc, Slumpvis, personberoende testning
Typer av testverktyg ρ Kravhanteringsverktyg Testadministrativa verktyg Testautomatiseringsverktyg Avvikelse-/ärendehanteringsverktyg Belastningstestverktyg Arial 18 pt Kodgranskningsverktyg (statiska/dynamiska) Analys- och dokumentationshjälpmedel Övervakningsverktyg för miljöer och applikationer Notepad / papper&penna
Belastningstester med Visual Studio 2008 - Praktikfall Visual Studio genom applikationens livscykel
Belastningstester med Visual Studio 2008 Verktygsstöd genom applikationens livscykel Krav Design Implementering Driftsättning Produktion Test Spårbarhet Säkerställa att design, implementering och test utgår från samma underlag Utvecklarnära tester Säkerställa att designen är korrekt och effektivt implementerad System tester Säkerställa att kraven är implementerade enligt specifikationerna Testledning och kontroll Planera och följa upp design, implementering och exekvering av tester Mätetal och beslutsunderlag Faktabaserad uppföljning och rapportering Felhantering Rapportera och åtgärda upptäckta fel Versionshantering Kontroll av kod, testfall, testresultat och testdata
Belastningstester med Visual Studio 2008 - Verktygsstöd genom applikationens livscykel Krav Externt system Work Items Architecture edition Design Team Foundation Server Test Test edition Developers edition Database edition Implementering Spårbarhet Kraven kopplas till Work Items (ärenden el. aktiviteter) som kan spåras genom alla utvecklingsfaser Man kan mäta testtäckning av krav Integrationen i Team Foundation Server säkerställer att alla aktiviteter utgår från samma underlag
Belastningstester med Visual Studio 2008 - Verktygsstöd genom applikationens livscykel Enhetstester Profilering Kod analys Databas test Web test Lasttest Manuell test Generisk test Incheckningsregler som bl.a. kan kontrollera graden av kodtäckning Team Edition for Software Developers Utvecklarnära tester Integrerat stöd i utvecklingsverktyget Speciellt stöd för test av databaser och framtagning av testdata Incheckningsregler kontrollerar att alla obligatoriska tester har utförts Team Edition for Software Testers Systemtester Stöd för att utveckla, organisera och exekvera tester Automatiserade tester av användargränsnitt finns ej
Belastningstester med Visual Studio 2008 - Verktygsstöd genom applikationens livscykel Testledning och kontroll Verktyg för att planera och tilldela arbetsuppgifter Möjlighet att följa upp status för varje aktivitet inklusive beroende aktiviteter inom andra discipliner Stöd för att i tid få reda på att planen inte håller och att man därför måste vidta åtgärder
Belastningstester med Visual Studio 2008 - Verktygsstöd genom applikationens livscykel Mätetal och beslutsunderlag Skapar faktabaserat beslutsunderlag angående systemets kvalitet Ger stöd för att kunna ta beslut om när systemets kvalitet är tillräckligt hög för att sätta i produktion Kan ge indikationer på var i projektet som kvalitetshöjande åtgärder måste sättas in
JD1 När? - W-modellen (testnivåer) Kravspecifikation Acceptanstest Systemspecifikation Designspecifikation Systemtest Integrationstest Kodning Komponenttest v
Bild 21 JD1 V-modellen används ofta även inom iterativa metoder, för att visa nivåmappningen snarare än att visa något kronologiskt flöde Jörgen Damberg; 2006-10-03
Visual Studio på testverktygsmarknaden
Aktörer på testsvitsmarknaden HP (Mercury Interactives) Borland (Segue) IBM Rational Compuware Vermont RadView RSW Envive Konsultbolag1 Freeware FitNesse Empirix Quest Tillverkare av Selenium Keynote utvecklingsverkty Telelogic Cyrano g/lösningar Solstice Testquest Hostade Parasoft tjänster QES Microsoft
SDLC Microsoft IBM Borland Compuware
Sviter av integrerade verktyg µ Sparar data i databaser Kan användas separat eller integreras Rapporter kan baseras på data från flera delverktyg (t.ex. Ljusgrå hur många krav har defekter kopplade till sig?) Enterprise-lösningar (licensservrar) Drar nytta av versionshantering, iterationsplanering, stubbar o.s.v. Öppna API:er Anpassningsbart
Var passar Visual Studio? Ur ett testperspektiv innehåller VSTS följande ben: Bugghantering Testadministrativt verktyg Testautomatisering Manuella tester Belastningstester Kodtäckning Kodanalys Gränssnitt Webb Tung klient Typer av testverktyg Kravhanteringsverktyg Testadministrativa verktyg Testautomatiseringsverktyg Avvikelse-/ärendehanteringsverktyg Arial 18 pt Belastningstestverktyg Kodgranskningsverktyg (statiska/dynamiska) Analys- och dokumentationshjälpmedel Övervakningsverktyg för miljöer och applikationer Notepad / papper&penna
Belastningstester
Belastningstester - karaktäristika Kan ske på Enhetstestnivå Integrationstestnivå Systemtestnivå Systemintegrationstestnivå Kommunikationsemulering på protokollnivå Snudd på omöjligt/dyrt utan verktyg Komplexa beroenden
Olika typer av belastningstester Belastningstest - Hur beter sig systemet under last? Stresstest - Vad händer med systemet när det blir överlastat? Prestandatest - Vilka svarstider har vi vid en viss last? Långtidstest - Hur beter sig systemet efter några dagar med normal last? (resursläckage) Volymtest - Hur många användare orkar systemet med innan det blir överlastat? Konfigureringstest - Vilken av två olika konfigureringar ger bäst svarstider vid samma last? Optimeringstest - Man fintrimmar systemet under last. Flaskhalsanalys Analys av root cause för prestandaproblem Samtidighetstest Funktionellt test O.s.v. Dessutom återfinns varianter under olika namn. En viss begreppsförvirring råder.
Generell uppdragsgång Uppdragsinitiering Instudering Testdesign Förberedelser Testimplementation Testutförande Resultatanalys Testrevision Rapport
Terminologi - Några viktiga begrepp: Användarscenario Lastscenario Parameterisering Korrelering Session Virtuell användare Tänketider/väntetider
Skillnader i utförande mellan olika testnivåer Enhetstester Stubbar Egenproducerat data Eventuellt på samma maskin Systemintegrationstester Separat(a) lastgenerator(er) Varsko noga Håll koll på bakgrundsbrus Integrationstester Ev. stubbar Ev. egenproducerat data Systemtester Arbetar mot DB Separat lastgenerator
Enkelt exempelsystem Microsoft Visual Studio Team System 2008 Test Edition Ext. källor AD / LDAP PC-klient PDA / Mob. Gateway Web-klient LB Web-server Webbcache SSL DNS / WINS Nätverk Pres.-serv. Appl.-logik DB Klusterhanterare Loggar, debugging, feldesignade databaser, inställningar, dålig arkitektur, programmeringsmissar o.s.v.
Delmoment i lasttestsammanhang Analys Förutsättningar Jörgen Damberg Omständigheter Lastgenerering Testkörning Mätetal/ monitorering Bakgrundslast, datamängder, produktionsplanering, konfigurationshantering, parametrar/settings/inställningar, miljöutseende, nätverkskonfiguration, arkitektur, applikationsimplementation, prestandakrav, användningsfall, användarrättigheter o.s.v.
Lastgenerering Distribution Var i nätverket Håll koll på lastgeneratorerna (footprint) Tänketider Parameterisering av data Korrelering av data Verifiering av svar Bra scenarion
Mätetal Avancerade tekniker Monitorera ingående HW/SW-komponenters nyttjande: CPU ( och processorkö) Redirector NIC RAM-användning I/O Svarstider och överföringstider Osv Paketanalys i nätverket SQL-optimering Osv Gör detta samtidigt som man följer lastens progress (antal VU, transaktionstäthet o.s.v.
Förutsättningar och omständigheter Belastningstesters resultat beror på så många olika parametrar. Det finns inte några prestandakrav som inte måste analyseras och tolkas Ofta arbetar man i ett system under utveckling Testdata förbrukas ofta
Prestanda är en mycket viktig kvalitetsaspekt för upplevd kvalitet Vanliga beaktanden vid belastningstester på systemtestnivå och över Definiera prestandamåttet Stäm av ofta så att vi gör rätt saker Håll koll på miljön och allt annat som kan påverka prestanda. Måste utföras av kunnig personal för att få trovärdiga resultat! Måste utföras med ett för ändamålet passande verktyg
Analys Tack vare stora datamängder och erfarenhet kan man ofta finna flaskhalsar och åtgärdsplaner. Tänk på att om man får bort en flaskhals är det inte säkert att de andra identifierade flaskhalsarna är de rätta längre.
Att tänka på Backa upp SUT innan testen Se upp för spill-laster till andra system När i veckan/månaden/specialtillfällen är lasten ovanligt tung? Parallella processer i systemen; batchar, backup, bakgrundsjobb osv Datamängdernas fördelning över tid nya system jämfört med efter något år (arkivdata) Inloggninsparameterisering Nätverkskartor (dubbelkolla) Ta hjälp av expertkompetenser (DBA, Applikationsexperter, domänexperter, nätverkstekniker, IT-driften osv) Monitorera eventuellt även brandväggar/routrar och liknande Använd gärna en riktig klient för att mäta upplevd svarstid, och eventuellt för att sprida lasten ytterligare
Prestandaoptimering av applikationer Karaktäristik 1. Bygger på analyser av vad som är viktig funktionalitet i applikationssystemet 2. Genomförs med belastningstestverktyg (performance tuning) 3. Initieras vanligen tack vare upptäckta besvär efter driftsättning eller som ett resultat av Viktigt funna att undermåliga ta med sig: prestanda efter ett belastningstest. 4. Analys av datavolymers Ingen kan potentiella kunna allt ensam! framtida storlek (analys av stora tabeller) är centralt 5. Testdata kan vara ett besvär att finna. 6. Samma test flera gånger under olika förutsättningar (inställningar i systemet). Dessa tester jämförs sedan. 7. Kräver hjälp av andra experter (middleware, DBA, nätverk o.s.v.) 8. Resulterar ofta i flera åtgärder. Hjälper ofta så att man slipper dålig respons från applikationssystemets slutanvändare.
Summering
Framgångsfaktorer för effektiv kvalitetssäkring Analys Design Utveckling Driftsättning Förvaltning Versions- och konfigurationshantering Dokumentera lagom Kontroll på testmiljöerna Bra testdata Ändringshantering Enhetstester Kontroll på förutsättningarna Samarbete mellan rollerna i projektet Verktyg Visuell kommunikation Verksamhetsmedverkan Prioritering genom riskhantering
β Om testning var gratis... Testa alla nya funktioner Testa alla rättade buggar Testa allt gammalt när något har ändrats Testa när vi byter någon komponent eller ramverk Testa alla nya versioner Testa när vi patchar servrar och klienter Testa när vi integrerar mot nya backendsystem Testa varje morgon kl 05:01 etc.
Frågor?
Fika