Testing av programvare

Like dokumenter
Inf1055 Modul B 26 april 2017:

GJENNOMGANG UKESOPPGAVER 9 TESTING

Livsløpstesting av IT-systemer

Testing av programvare. INF1050: Gjennomgang, uke 08

Testplan (Software Test Plan)

Statisk testing. Testing uten datamaskin, men med vår egen evne til å vurdere og analysere

UKE 14 Versjonshåndtering og testing. Gruppetime INF1055 Julie Hagen Nilsen & Maria Stolinski

Løsningsforslag Sluttprøve 2015

GJENNOMGANG UKESOPPGAVER 7 REPETISJON

Modellering IT konferanse

GJENNOMGANG UKESOPPGAVER 2 PROSESSMODELLER OG SMIDIG PROGRAMVAREUTVIKLIG

Grunnleggende testteori

Validering og verifisering. Kirsten Ribu

UNIVERSITETET I OSLO

Grunnleggende testteori. Etter Hans Schaefer

BlackBox, WhiteBox og andre testmetoder. Etter ønske fra studentene 26. november 2009

Konfigurasjonsstyring

Automatisert Robusthetstesting. Erik Arisholm Testify AS

Akseptansetesten. Siste sjanse for godkjenning Etter Hans Schaefer

Prosessmodeller og smidig programvareutvikling. INF1050: Gjennomgang, uke 02

Løsningsforslag: Oblig 1. INF1050: Gjennomgang, uke 12

Kirsten Ribu

ISTQB Foundation Level Prøveeksamen

TESTRAPPORT Tittel på hovedprosjektet: Varebestillingssystem for Wokas Salg AS

Kravhåndtering. INF1050: Gjennomgang, uke 03

Testdekning og automatisering - Er 100% testdekning et mål?

Systemutvikling - oppsummering. Alexander Nossum blog.eksplisitt.net 22. mai 2006

Mellom barken og veden Smidig testing i krevende terreng TTC 2015

Kort om evaluering og testing av It-systemer. Hvordan vurdere, verdsette, velge og teste?

Grunnleggende testteori

Erfaring med funksjonell testing i en integrert ALM prosess

AlgDat 10. Forelesning 2. Gunnar Misund

Databaser og moderne systemutvikling - dag én

Kap 11 Planlegging og dokumentasjon s 310

Konfigurasjonsstyring. INF1050: Gjennomgang, uke 11

Forside Eksamen INF1055 V17

UNIVERSITETET I OSLO

Repetisjon av testing. Vi undersøker om systemet virker slik det skal

11 Planlegging og dokumentasjon

Gårsdagens testroller takler ikke dagens utfordringer. Magnus Halvorsen og Erik Rogstad

A tool for collaborating to success in a development project Experience with Visual Studio 2010 and Test Manager at Lånekasse

EKSAMENSOPPGAVE. Adm.bygget, rom K1.04 og B154 Ingen. Vil det bli gått oppklaringsrunde i eksamenslokalet? Svar: JA / NEI Hvis JA: ca. kl.

Systemutvikling (Software Engineering) Professor Alf Inge Wang

UKE 9 Prosesser og prosessmodeller inkludert smidige metoder. Gruppetime INF1055

Oppgave 1: Multiple choice (20 %)

Test i smidig. Laila Sandbæk Testrådgiver og testleder Sogeti

Gruppe 43. Hoved-Prosjekt Forprosjekt

3.3 Case 3: Opprette en bruker Case 4: Endre en bruker... 8

Kirsten Ribu

Repetisjon av testing. Vi undersøker om systemet virker slik det skal

EKSAMENSOPPGAVE. Vil det bli gått oppklaringsrunde i eksamenslokalet? Svar: NEI

Test i Praksis. NTNU Februar Copyright 2014 Accenture All Rights Reserved.

Prøveeksamen INF1050: Gjennomgang, uke 15

Prosjektet - leveranser. Testing og evaluering av systemer. Hva er sikkerhetskritiske systemer? I dag: Systemfeil og testing. Robust kraftforsyning?

Oppgave 1 Multiple Choice

Modellering av krav. INF1050: Systemutvikling 07. februar Førstelektor Yngve Lindsjørn

Effektiv testing. Per Otto Bergum Christensen September, JavaZone. Bergum Christensen Consulting

Modellering av krav. INF1050: Systemutvikling 11. februar Universitetslektor Yngve Lindsjørn

Læringsmål og pensum. Utvikling av informasjonssystemer. Oversikt. Systemutvikling Systemutvikling i seks faser Femstegs prosedyre for programmering

Innholdsfortegnelse. 1. Testing Feiltesting av koden Funksjonstesting: Kilder.10

Testrapport Prosjekt nr Det Norske Veritas

TDT4735 Systemutvikling, fordypning. Metoder for systemtest av websystemer

Forfattere: Daníelsdóttir, Drífa Meland, Maiken Mijalkovic, Biljana Svendsen, Simen H. Gruppelærer: Zarei, Amir Hossein. 5.

Hensikten med denne delen av kurset. Objektets egenskaper. Objektorientering hva er det? Best practises ved programvareutvikling. Kravspesifikasjonen

UKE 10 Kravhåndtering. Gruppetime INF1055

Modernisering av IKT i NAV

Eventhandler Teknologi, kunst og design Høgskolen i Oslo og Akershus, våren Testrapport

Evaluering av It-systemer i et forvaltningsperspektiv. Drift, vedlikehold og videreutvikling av IT-systemet

Kravspesifikasjon. Forord

Krav som bør stilles til leverandørens verifikasjon og test

GJENNOMGANG OBLIGATORISK OPPGAVE 1

EKSAMEN. Evaluering av IT-systemer. Eksamenstid: kl 0900 til kl 1300

1. Hvilke type krav angår sikkerhet og pålitelighet?

Lykke til! Eksamen i fag TDT4140 Systemutvikling NTNU Norges teknisk-naturvitenskapelige universitet

Mer om objektorientering og UML

Kontrakter og test i smidige prosjekter. Fagmøte Dataforeningen i Trondheim 12.Mars 2012

Eksamen INF1050: Gjennomgang, uke 15

System integration testing. Forelesning Systems Testing UiB Høst 2011, Ina M. Espås,

HiOA TDK. Ingeniørfag data. DATS1600 Programutvikling. Eva Hadler Vihovde. Prosjektoppgaven Prosessdokumentasjon - Alternativ 1

LEVER OFTERE TEST SMARTERE

Testdokumentasjon (Test Documentation)

Oppgave 1. Finn krav. Finn krav. Finn test

Test og kvalitet To gode naboer. Børge Brynlund

Software Test Plan. Team2. Høgskolen i Sørøst-Norge Fakultet for teknologi, naturvitenskap og maritime fag Institutt for elektro, IT og kybernetikk

Systemutviklingen er ferdig når et system er operativt. Med operativt menes når systemet blir brukt av brukerne på et faktisk arbeidssted.

Obligatorisk oppgave 3. INF1050: Gjennomgang, uke 16

MARE NOSTRUM. Del 2 Kravspesifikasjon

Ansvarlig: Faglig ansvarlig for innhold og revisjon, Testseksjonen TestiT, Avd. for Tjenesteproduksjon HN IKT

Læringsmål for forelesningen

Software Development Plan. Software Development Plan. Forum / Nettverkssamfunn Team 2

Kravspesifikasjon med UML use case modellering. Erik Arisholm

1. Hvilke type krav angår sikkerhet og pålitelighet?

Oppsummering. Thomas Lohne Aanes Thomas Amble

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

JigZaw. Teststategi utviklet av. Erik Drolshammer Bård Lind. Verifiser Forventet Funksjonalitet

INF Introduksjon til design, bruk, interaksjon Evaluering, del 2

AlgDat 12. Forelesning 2. Gunnar Misund

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Transkript:

Inf1050 07 mars 2017: Testing av programvare Yngve Lindsjørn ynglin@ifi.uio.no 1

Oversikt Hva er testing? Validering &Verifisering Testfaser Enhetstesting Integrasjonstesting Systemtesting Akseptansetesting Typer av test Blackbox testing Whitebox testing Regresjonstesting Testdrevet utvikling (TDD) Brukes ofte ved smidig metodikk Testing pleier ofte å dukke opp på eksamen i en eller annen form 2

Fra INF3121 Software testing 3

Fra INF3121 Software testing 4

Fra INF3121 Software testing 5

Antall feil Gjennomsnittet ute i industrien: 15-50 feil per 1000 linjer med kode (S. McConnell, 2004) 30-85 feil per 1000 linjer med kode 0.5-3 feil per 1000 linjer med kode ikke oppdaget før levering (M. Wooldridge, 2000) Gjennomsnittet blant Microsoft sine applikasjoner: 10-20 feil per 1000 linjer med kode 0.5 feil per 1000 linjer med kode ikke oppdaget før levering (S. McConnell, 2004) 6 HiOA - Systemutvikling -> Testing 3

Kostnad for å rette feil Kostnad for å rette feil Tidspunkt når feil blir oppdaget Arkitektur Konstruksjon Systemtest Etter release Kravspesifikasjon Kravspesifikasjon 1x 3x 5-10x 10x 10-100x Feil introdusert Arkitektur 1x 10x 15x 25-100x Konstruksjon 1x 10x 10-25x (NIST, M. Newman, 2002) 7

Hva er testing? Helt enkelt: For en gitt input forventer vi en gitt output Hensikten er: Å vise at systemet gjør det systemet er ment å gjøre Å oppdage feil før systemet blir tatt i bruk Testing viser bare feil som du oppdager under kjøring av testen. Den beviser ikke at systemet er feilfritt. Testing er en del av en mer generell verifikasjons- og valideringsprosess. 8

Validering & Verifisering Validering: Bygger vi det riktige produktet? Programvaren bør gjøre det brukerne virkelig ønsker Fokus på hele systemet Gjøres som regel i ekte eller simulerte omgivelser Verifisering: Bygger vi produktet riktig? Stemmer det med kravspesifikasjonen? Fokus på komponent/delsystem Gjøres som regel i laboratorium (test servere..) 9

Kontrollering av syntaks Det er mer foretrukket å oppdage feil under compile-time fremfor runtime Syntakssjekking brukes i flere IDEer: Sjekker bare om et program «ser» riktig ut Gjør ingen dypere analyse enn å kontrollere programspesifikke nøkkelord, gyldige datatyper etc. «Lint»-programmer brukes i flere og flere IDEer: Gjør mer holistiske analyser, f.eks.: this line will never be executed this variable may not be initialized IDE à Integrated development environment, f.eks. Visual Studio eller Eclipse Lint à Verktøy som flagger mistenkelig kode 10 21

Fire teststadier 1. Bestemme hva som skal måles 2. Bestemme hvordan testingen skal gjennomføres 3. Utvikle test cases 4. Lage et testorakel (B. Bruegge & A. H. Dutoit, 2009) 11 22

1. Bestemme hva som skal måles Analytisk kunnskap om funksjonelle krav: Use case Forventet input Ugyldig output Design-kunnskap om systemets struktur, algoritmer, datastrukturer: Kontrollstrukturer (loop, test branches) Datastrukturer (arrayer, lister, databaser) Implementasjon-kunnskap: F.eks. algoritmer: Division by zero Test cases utelukkende for interrupt handler 12 23

2. Bestemme hvordan testingen skal gjennomføres Kodeinspeksjon Black-box eller white-box Velge tilnærming for integrasjonstesting Hvem skal teste? 13 24

3. Utvikle test cases Et test case er et sett med testdata eller situasjoner som vil bli bruk til å måle enheten (kode, modul, system) som testes eller det attributtet som kontrolleres Kryssjekke test cases og eliminere duplikater Automatisering av så mange tester som mulig Mål: finne the laveste antallet med testcases som dekker flest mulig stier 14 25

4. Lag et testorakel Et orakel inneholder alle predikerte resultater for et sett med test cases Testorakelets prediksjoner må skrives ned før den faktiske testingen begynner Menneskelig orakel: En ekspert kan undersøke input og tilhørende output og avgjøre om programmet leverer riktig output for gitt input Input Testobjekt Passerer testen? Auomatisert orakel: Et system som er i stand til å utføre oppgaven over Output (M. Kamkar, 2007) Testorake l 15 26

Testing bør være Repeterbar Hvis en test avdekker en feil vil du ønske å kjøre testen på nytt for å finne andre feil Hvis du retter en feil vil du ønske å kjøre testen på nytt for å kontrollere Systematisk Tilfeldig testing er ikke tilstrekkelig Velge en rekke testsett som dekker spennet med tilstander programmet kan ha Velge en rekke testsett som er representative for ekte bruk av programmet Dokumentert Holde orden på hvilke tester som er utført og hva resultatet var 16

Generelle retningslinjer for testing Velg input som tvinger systemet til å generere alle feilmeldinger Design input som fører til overbelastning ( overflow ) Gjenta samme input eller serier av input en rekke ganger Prøv å framprovosere ugyldig output Prøv å tvinge fram beregningsresultater som er for stort eller for lite 17

Testfaser Utviklingstesting. Testing foregår under utviklingsfasen Brukertesting /Akseptansetesting. Brukerne eller potensielle brukere tester systemet i egne omgivelser 18

Utviklingstesting Enhetstesting (unit testing). Individuelle programenheter eller objektklasser testes. Fokus på å teste funksjonaliteten til objekter og metoder. Integrasjonstesting. Ulike individuelle enheter er integrert til sammensatte komponenter. Fokus på å teste grensesnittet til komponenter. Systemtesting. Noen eller alle komponentene i et system er integrert og systemet testes som en helhet. Fokus på å teste interaksjoner mellom komponenter. 19

Enhetstesting Enhetstesting er prosessen å teste individuelle komponenter isolert Enheter (Units) kan være Individuelle metoder i et objekt Objektklasser med attributter og metoder Sammensatte komponenter med definert grensesnitt 20

Testing av objektklasser Komplett testing av en klasse involverer Testing av alle metoder av et objekt (instans) av klassen Sette verdier og teste alle attributter Teste objektet i alle mulige tilstander Arvemekanisme gjør det vanskeligere å designe objektklassetester, siden vi på forhånd ikke vet hvor informasjonen som vi vil teste befinner seg 21

Automatisk testing Enhetstesting bør automatiseres så langt det lar seg gjøre, slik at tester kan kjøres uten manuell innblanding I automatisk enhetstesting brukes et automatiseringsrammeverk (for eksempel JUnit) for å skrive og kjøre testene 22

To typer enhetstester Tester normal bruk, for å sjekke om enheten/ komponenten oppfører seg som forventet Tester unormal bruk, for eksempel unormal input for å sjekke at enheten/komponenten ikke krasjer 23

Integrasjonstesting (grensesnittesting) Programvarekomponenter er ofte sammensatt av mange objekter som samhandler Funksjonaliteten til objektene aksesseres gjennom deres definerte grensesnitt Å teste sammensatte komponenter fokuserer på at grensesnittet oppfører seg i henhold til spesifikasjonen Kan anta at enhetstester på alle individuelle objekter som utgjør komponenten allerede er testet 24

Systemtesting Systemtesting involverer integrerte komponenter som til sammen skaper en versjon av systemet og som tester det integrerte systemet Fokuset i systemtesting er å teste samhandlingen mellom komponenter (eller sammensatte komponenter) Systemtesting sjekker at komponentene er kompatible, at de samhandler korrekt, og at de sender riktige data til riktig tid gjennom grensesnittene. 25

Fra E-resept- ulike moduler/systemer Faglige grunndata til bruk i e-resept skal leveres av Legemiddelverket gjennom deres FEST tjeneste. Grunndata levert fra FEST skal kunne kombineres med annen grunndata i mottakersystemene... FEST= forskrivnings- og ekspedisjonsstøtte VRS=Vareregisteret HELFO=Helseøkonomiforvaltningen Informasjon om Legemidler skal baseres på informasjon fra Athene og kombineres med informasjon fra VRS. Informasjon om Legemidler skal omfatte alle legemidler som har fått utdelt varenummer i VRS og finnes tilgjengelig i apotek. Legemiddelverket skal levere interaksjonsdata i FEST.. Informasjon om handelsvarer blir hentet fra to kilder, VRS skal levere alle handelsvarer som er relevant for multidosepakking og HELFO skal levere oversikt over pris og produkter som er refusjonsberettiget på blåresept (alle handelsvarer). 26

Akseptansetesting Evaluere systemet som leveres I smidig metodikk (XP, Scrum..) bruker man ofte funksjonell testing av brukerhistorier som akseptansetester Fokus: Validere at systemet som er utviklet faktisk er det kunden vil ha Mål : Bekrefte at systemet imøtekommer kundens krav og er klar til bruk 27

Testprosessen Integrasjonstesting Akseptansetesting Enhetstesting Systemtesting 28

Testdrevet utvikling Testdrevet utvikling (test-driven development (TDD)) er en tilnærming der testing og koding gjøres parallelt Kode utvikles i steg (inkrementelt), sammen med en test for hvert inkrement. Går ikke til neste inkrement før koden passerer testen TDD ble introdusert som en del av smidig metodikken i XP. Men TDD kan også brukes i plandrevet utviklingsprosess 29

Prosessaktiviteter i testdrevet utvikling Start med å identifisere funksjonaliteten som kreves i et inkrement. Normalt lite og kan implementeres i få linjers kode Skriv en test for denne funksjonaliteten og lag testen som automatisk test Kjør testen, sammen med andre tester som er implementert. Første gang er ikke koden skrevet for dette inkrementet, slik at testen vil feile Implementer funksjonaliteten, og kjør testen på nytt Når alle testene er OK (ikke feiler), starter implementering av funksjonalitet i neste inkrement 30

Fordeler ved testdrevet utvikling Dekning av kode All segment av kode har minst en assosiert test Regresjonstesting En regresjonstest-pakke utvikles inkrementelt og samtidig med at programmet utvikles Enklere å finne feil ( debugging ) Når en test feiler, er det enkelt å finne ut hvor feilen ligger Systemdokumentasjon Testene er i seg selv en form for dokumentasjon som beskriver hva koden gjør 31

Regresjonstesting Fokuserer på å finne feil etter endring av kode (som regel større kodeendring) Søker å finne feil som var der tidligere Kjører tidligere tester om igjen Fordel med automatiserte tester Testene må være godkjent før kodeendringen blir godtatt ( commited ) 32

Black-box testing Black-box testing er en metode (eller strategi) som tester funksjonaliteten til et program i motsetning til den interne strukturen eller kildenkoden Kunnskap om intern struktur eller programmering er ikke nødvendig Tester er bygd rundt spesifikasjoner og krav, dvs. hva programmet er ment å gjøre Black-box testing kan brukes på alle nivåer av programvaretesting: Enhetstesting, integrasjonstesting, systemtesting og brukertesting 33

Black-box testing Gitt input Forventet output Systemet 34

Fordeler med black-box testing Krever ikke programmeringskunnskaper Kan bruke uavhengige testere som ikke har vært involvert i utviklingen Unngår at testere gjør samme antagelser som utviklerne Resultater kan tolkes uten å kjenne til detaljer ved implementasjonen Testing gjøres fra en brukerperspektiv og kan dermed avsløre mangler i kravspesifikasjonen Planleggingen av testingen kan påbegynnes tidlig 35

Ulemper med black-box testing Kan kun teste et lite antall input og mange stier (paths) og tilstander vil derfor forbli utestet Man er aldri sikker på hvor mye av systemet eller hvilke deler av systemet som er testet Kan i noen tilfeller være redundante om utviklerne allerede har kjørt tilsvarende tester Selv om man kan planlegge disse testene tidlig kan de som regel ikke anvendes før i senere testfaser 36

White-box testing White-box testing (glass-box testing, strukturell testing) tester interne strukturer eller kode i et program, i motsetning til dens funksjonalitet I white-box testing kreves og brukes programmeringsferdigheter til å designe testene White-box testing brukes vanligvis under enhetstesting, men kan også brukes i integrasjons- og systemtesting. Kan avdekke mange feil eller problemer, men oppdager ikke ting som ikke er implementert i henhold til kravspesifikasjonen, heller ikke manglende krav 37

White box testing Gitt input Forventet output Systemet 38

Fordeler med white-box testing Kan utføres i et tidlig stadie -> trenger ikke vente på grensesnitt (f.eks. GUI) Testingen er mer grundig, systematisk og strukturert Fordi det krever innsikt i strukturen vil man enkelt finne ut av hvilken input/data som mest effektivt tester programmet Hjelper til med å optimalisere koden Tvinger utvikler til å begrunne kode Kan skrelle vekk overflødige kodelinjer 39

Ulemper med white-box testing Krever programmeringskunnskaper Kan kun utføres av utviklere som har vært involvert i utviklingen Som å studere innsiden av en motor for å forstå hvorfor bilen ikke fungerer -> gir ikke alltid riktige svar Kan være vanskelig å gjennomføre hvis implementasjonen forandres veldig ofte 40

Appendix: Mange typer tester Fasilitetstesting - > utfører systemet all påkrevd funksjonalitet? Volumtesting -> kan systemet håndtere store datavolum? Stresstesting -> klarer systemet å håndtere høy påkjenning? Utholdenhetstesting -> vil systemet klare kontinuerlig arbeid over lenger tid? Brukbarhetstesting -> kan brukere bruke systemet på en enkel måte? Sikkerhetstesting -> klarer systemet å takle angrep? Ytelsestesting -> hvor god er responstiden? Lagringstesting -> er det noen uforventede datalagringsproblemer? Konfigurasjonstesting -> vil systemet fungere på alle typer av påtenkt maskinvare? Installasjonstesting -> klarer vi å installere systemet? Pålitelighetstesting -> hvor pålitelig er systemet over tid? Gjenopprettingstesting -> hvor bra klarer systemet å gjenopprette fra feil? Vedlikeholdstesting -> hvor vedlikeholdbart er systemet? Dokumentasjonstesting -> hvor presis, dekkende, brukbar etc. er dokumentasjonen? Operasjonstesting -> er operatørenes instruksjoner dekkende og forståelige? Regresjonstesting -> gjenta alle gamle tester ved hver systemendring 41