Validering og verifisering

Slides:



Advertisements
Liknende presentasjoner
12.Studienreise nach Finnland,
Advertisements

Hvor stor er en fisk? Yggdrasil Hvor stor er en fisk?  Vanlige kundetyper og prosjekter  Faktorer som påvirker.
Kvinner og politikk Kvinnelig valgmobilisering i Nord-Norge: Glasstak eller etterslep? Marcus Buck.
Trykk på mus eller tastatur for neste bilde…
Litt mer om PRIMTALL.
Ti måter å ødelegge en CT-undersøkelse av halsen på
Hjemmeoppgave 1: Å høre etter NAVN: ……………………………….. DATO: ……………………….
Praktisk info til prosjektkunder
Grafisk design Visuell kommunikasjon
Sunndalsøra Registertjenester Per Ivar Larsen Sugar
Teknologi for et bedre samfunn 1 Asbjørn Følstad, SINTEF Det Digitale Trøndelag (DDT) Brukervennlig digitalisering av offentlig sektor.
Egenskaper til stoff og tidsbegrep: En modell for aspekt i russisk Laura A. Janda UNC-Chapel Hill/University of Tromsø
Kontrollstrukturer (Kapittel 3)
7. Fysisk arbeidsmiljø Jeg er fornøyd med den ergonomiske utformingen av arbeidsplassen min Jeg er fornøyd med inneklimaet på arbeidsplassen.
1 Arbeidssted, bruk av fasiliteter og - mengde 5.
Møre og Romsdal. 2 Ligger det et bedehus eller et kristelig forsamlingshus (ikke kirke) i nærheten av der du bor? (n=502) i prosent.
Programvaretesting In 140 Sommerville kap 20.
NRKs Profilundersøkelse NRK Analyse. Om undersøkelsen • NRK Analyse har siden 1995 gjennomført en undersøkelse av profilen eller omdømmet til NRK.
2. Planter. Del 1 (1–4). Nivå 2. Side 19–24
Kap 05 Betinget sannsynlighet
Å overleve oppgaveskriving: Litteraturgjennomgang
1 Validering og verifisering Kirsten Ribu I dag Validering og verifisering Inspeksjon Testing.
Kapittel 14 Simulering.
13. februar 2004TDT4285 Planl&drift IT-syst (M15)1 Automatisering TDT4285 Planlegging og drift av IT-systemer Anders Christensen, IDI.
23. januar 2004TDT4285 Planl&drift IT-syst1 Tjeneroppgraderinger TDT4285 Planlegging og drift av IT-systemer Anders Christensen, IDI.
1 Oppgave gjennomgang Kap Oppgaver -Kap 12: 1, 2, 3, 5, 7, 8, 11, 18, 19.
Grunnleggende testteori
Verifikasjon og validering
Prototyping In 140 Sommerville kap. 8. Mål Forstå hensikten med prototyping i forskjellige utviklingsprosjekt Forstå forskjellen mellom evolusjonær og.
Introduksjon til systemutvikling
Kravanalyse og spesifikasjon
Oppsummering av hovedområdene i kurset LO 135A Kirsten Ribu
HiO -Anvendt datateknologi - Kirsten Ribu Kan vi stole på datamaskinen? Sikkerhet og systemfeil Kapittel 4 - A Gift of Fire Kirsten Ribu
HiO -Anvendt datateknologi - Kirsten Ribu Testing og evaluering av systemer Kirsten Ribu
Brukergrensesnitt og design av skjermbilder
1 Skal vi snakke sammen? Jan Håvard Skjetne SINTEF / University of Melbourne
Empiriske metoder Oppgaveanalyse, observasjon
Presentasjon  SW faults og failure/testing issues –Gruppe 1 Petter Therese Kjell Gunnar Christian Eva.
Testing av system Gruppe 6 Henrik Bækhus Morten A. Iversen Mathias Bondeson Gunnar K. Kulleseid Svein Ivar Kristiansen Ronny Hulthin.
Automated Testing Tool & When to Stop Testing
SINTEF Teknologi og samfunn PUS-prosjektet Jan Alexander Langlo og Linda C. Hald 1 Foreløpig oppsummering – underlag for diskusjon på PUS-forum
Malverk intern produktopplæring
GRØNNALGER BRUNALGER RØDALGER
1 BM-dagen 29.okt BM1 Fysisk miljøplanlegging Studieprogram for Bygg- og miljøteknikk Meny Prosjektoppgaven Arealbruk og befolkning Transport og.
Eiendomsmeglerbransjens boligprisstatistikk Februar 2011 Norges Eiendomsmeglerforbund og Eiendomsmeglerforetakenes Forening ECON Poyry og FINN.
Andre funksjoner. Her kommer en beskrivelse av søkefunksjoner, knapper og annen funksjonalitet. 2.
Velkommen! 4/4/2017.
Retningslinjer for spesifikasjoner til oppdrag
Konfigurasjonsstyring Configuration Management
Problemstyring Problem Management
Hvorfor bruke tid på testing ?
Virksomhetsrapport Oktober Innhold 1. Oppsummering 2. Hovedmål 3. Pasient 5. Aktivitet 4. Bemanning 6. Økonomi 7. Klinikker 2.
En oversikt over personopplysningsloven Dag Wiese Schartum, AFIN.
Å omfavne forandringer med ekstrem programmering(XP) Brukt i In140 Skrevet av Ola Bø Bygger på Kent Becks artikkel "Embracing change with extreme programming."
1 Oppgave gjennomgang Kap. 1 og 2. 2 Oppgaver -Kap 1: 5, 6, 7, 10, 12, 16, 22 og 25 -Kap 2: 2, 6, 10, 12, 13, 14 og 20.
Avlevering i praksis KDRS-samling
Kontinuerlig kvalitetskontroll. Hvordan komme helt i mål.
Jæger: Robuste og sikre systemer INF150 Programmering Kapittel 2: Problemløsning Kapittel 3.1 og 3.2.
BUCS Utfordringer og valg av fokus Tor Stålhane. Rammebetingelser Første spørreundersøkelse viser at det vi gjør må kunne: Brukes sammen med UML Passe.
Virksomhetsrapport August Innhold 1. Oppsummering 2. Hovedmål 3. Pasient 5. Aktivitet 4. Bemanning 6. Økonomi 7. Klinikker 2.
Objektorientert utforming In 140 Sommerville kap. 12.
Økoprofil - en miljøvurderingsmetode
Kirsten Ribu Samfunnsinformatikk Mer om tilgjengelighet Kirsten Ribu HiO.
Dagligbankundersøkelsen Fakta Dagligbankundersøkelsen intervju Befolkning 15 år + TNS Gallup Forfatter Bente Pettersen Roar Thorvaldsen.
Forstudie Nå situasjonen: dagens situasjon med ulemper og fordeler
Gamle systemer In 140 Forelesning Nr 19 Sommerville kap 26.
Befolkning og arbejdsmarked 7. Mikroøkonomi Teori og beskrivelse © Limedesign
FINF- H -04, 21 september 2004 Arild Jansen. AFIN/UiO 1 FINF Forelesning uke 39 Personvern som premiss for SU-prosessen Diskusjon om personvern som.
FINF- H -05, 13. september 2005 Arild Jansen. AFIN/UiO 1 FINF Forelesning 13.sept Personvern som premiss for SU-prosessen Diskusjon om personvern.
Objektorientert utforming In 140 Forelesning Nr 11 Sommerville kap 12 – del 1.
Utskrift av presentasjonen:

Validering og verifisering Kirsten Ribu 04.04.2005

I dag Validering og verifisering Inspeksjon Testing

Validering og verifisering Hva ligger i disse begrepene: Å sørge for at et datasystem tilfredsstiller brukerens behov!

Hvorfor validering og verifisering? For å kunne vurdere hva vi gjør og hvorfor vi gjør det Behov for verifisering øker med størrelsen på systemet Ca 1/3 av utviklingstiden brukes å testing Noen ganger opp til 50% Systemutvikling er en industriell prosess!

Statisk og dynamisk verifisering Inspeksjoner (statisk verifisering) Analyse av systemet kodeinspeksjon og gjennomgang av dokumentasjon for å oppdage probelemer Testing (dynamic verifisering) Observasjon av systemoppførsel Systemet kjøres med testdata

V&V: Validering: “Bygger vi det riktige systemet?” Snakke med brukerne Bruke use case modellen Verifikasjon: “Bygger vi systemet riktig?” Manuelle inspeksjonsmetoder Automatisert testing

Mennesker gjør feil Det vi lager er ikke det vi burde laget Det vi lager har defekter Vi trenger ikke nødvendigvis ”best mulig” kvalitet: Godt nok er bra nok. Jo senere en feil oppdages, desto mer alvorlig er det Feil kan være forretningskritisk (i ytterste konsekvens kan menneskeliv gå tapt)

Hva slags feil?

Hvorfor finnes feil i ferdige produkter? Det som er laget er feil (ikke det kunden vil ha) Ikke alle feil prioriteres rettet: Kategori 1: Kritiske feil som MÅ rettes (lansering holdes igjen til feilen er rettet) Kategori 2: Kritiske feil som bør rettes (betydelig reduksjon av kvaliteten) Kategori 3: Ikke-kritiske feil (kosmetiske feil)

Forts. I praksis er det umulig å få verifisert alle kombinasjoner av input til et system Det er en tendens til å teste og vektlegge bekreftelser, i motsetning til å prøve å falsifisere. NB! Det er en vesentlig forskjell i holdning mellom det å utvikle og det å teste. En god utvikler er ”konstruktiv”, mens en god tester er ”destruktiv”. Mange organisasjoner velger derfor å skille rollene, dvs. å ha egne testere. Det er lett å tro at sist funnet feil er “siste feil”.

Hvordan verifisere? Finn ut om vi har laget systemet riktig: Sammenlign produktet med kravspesifikasjonen Kravspesifikasjonen er visualisert i use case modellen beskrevet i use case’ne Bruk use casene til å teste

Hensikten med testing Finne feil Vurdere kvaliteten på systemet i forhold til kravene Riktig kvalitet ( ikke nødvendigvis ’beste kvalitet’) Vite når systemet er ferdig!

Det er 3 måter å verifisere/validere på: Prototyping Benyttes tidlig i utviklingsprosessen Lage et utkast til hvordan det endelige systemet kan se ut. Testes mot sluttbruker Inspeksjoner Benyttes i alle faser av utviklingsprosessen Gjennomgang av leveranser Utføres hovedsakelig mennesker, men kan være programmer Testing Gjøres sent i utviklingsprosessen Sjekke hvor godt systemet oppfyller kravene Resultatet av kjøringer sammenlignes med fasit

Ikke motsetninger Inspeksjoner og testing bør brukes sammen under programvareutviklingen Test-casene bør også inspiseres! Inspeksjoner avdekker feil ved test- casene Dermed kan det lages mer effektive måter å teste systemet på

1.Prototyping Utkast til hvordan systemet kan se ut Tegninger (storyboarding) Skjermbilder uten funksjonalitet Brukes til validering av systemet i krav/analyse-fasen Enkelt for brukere å forholde seg til (i forhold til modeller og dokumenter) Avdekker effektivt manglende/feil krav og forretningsregler Ulemper: Gode prototyper kan gi falske forventninger i forhold til hvor langt prosjektet har kommet Brukere kan bli opphengt i irrelevante detaljer

Verktøy Penn og papir Whiteboard Tegneprogrammer HTML-editorer GUI-byggere Modellbaserte prototypingsverktøy Programmeringsspråk

Eksempel – lag en prototyp med HTML:

2. Inspeksjon Dokumentgjennomgang Kodegjennomgang

Dokumentgjennomgang Gjennomgang av dokumenter med formål å finne feil og mangler Forskjellige teknikker kan benyttes: ”parprogrammering” (kontinuerlig inspeksjon) Forskjellige typer gjennomgangsmøter (dokumentet presenteres i møtet, distribueres på forhånd Hvem bør gjennomgå dokumentet? De som skal ha systemet De som skal bruke dokumentet De som har vært delaktige i utformingen av dokumentet Eksperter (rollen / forretningsområdet)

Kodegjennomgang Gjennomgang av kildekoden for å finne feil og mangler Funksjonelle feil (avvik fra design og kravspesifikasjon) Avvik fra kodestandard og retningslinjer (for eksempel navngiving av klasser) Tekniske feil (for eksempel feil i en hashmap-funksjon) Testbarhet (for eksempel dokumentasjonsmangler, muligheten for isolasjon, etc) Forskjellige teknikker kan benyttes Parprogrammering (kontinuerlig kodegjennomgang) Distribusjon til en eller flere for gjennomlesning Koden gjennomgås av en review-gruppe i et møte Aspektbasert inspeksjon

Inspeksjons-team Hvem bør gjennomgå kode? Sjefsprogrammerer/designere Juniorprogrammerere (opplæring) Testere Tekniske eksperter Arkitekter Minst 4 medlemmer i teamet: Den som har laget koden Inspektør som finner feil, uoverenstemmelser, mangel på konsistens Oppleser som leser koden for teamet Møteleder som noterer feilene som blir funnet

Automatisert kodeanalyse Programmer som analyserer kildekode og avdekker avvik fra spesifiserte krav Sjekker at alle klassenavn begynner med store bokstaver Sjekker at metoder ikke er for lange Sjekker at input-paramtere valideres Sjekke at alle metoder er dokumentert Ikke-eksekverbar kode Variabler som aldri brukes Minnehåndtering Kan integreres i utviklingsmiljøet, versjonshåndteringssystemet eller byggesystemet For eksempel kan kode hvor verktøyene rapporterer feil i nektes innsjekking Raskt å kjøre (billig) i motsetning til inspeksjon – Men mange ting fanges ikke opp her. Eksempel på verktøy: – kompilatorer – jDepend – jMetric

Fordeler Mer enn 60% av alle feil kan oppdages ved kodeinspeksjon Med matematisk verifisering kan 90% av feil i koden oppdages. Mange ulike defekter oppdages under en enkelt inspeksjonsrunde (Ved testing: Kan ofte bare oppdage 1 feil - programmet kræsjer f.eks ved feil)

3. Testing Typer av test V-modellen Testplan Testdata Ekvivalensklasser Enhetstesting (med verktøy og eksempler gjerne relatert til XP) Testdrevet utvikling Gjenbruk

Det første virkelige tilfelle av ”bug” 9. september 1945, kl. 3:45 p.m., fant forskere ved Harvard universitetet årsaken til at Mark II Aiken Relay kalkulatoren oppførte seg merkelig En møll ble funnet fanget mellom punkter på relé #70, panel F Maskinen ble ”debugget” med en pinsett! Dokumentert i loggen som ”First actual case of bug being found.” med møllen tapet inn ved siden av

Testing En form for ”induktiv bevisføring”, dvs. å vise (sannsynliggjøre) at alle svaner er hvite ved å observere et representativt utvalg av alle svaner. Test er både verifikasjon og validering Testing kontrollerer ny funksjonalitet, samt at eksisterende funksjonalitet fortsatt virker (regresjonstesting) Effektiv testing gjøres ved: Testbare krav Testbare programvarestrukturer Bruk av ekvivalensklasser Testverktøy

Retningslinjer for testing Velg input som tvinger systemet til å generere feilmeldinger: Bruk input som overbelaster systemet Gjenta samme input flere ganger Tving fram ugyldig output Tving systemet til å gjøre beregeninger som frambringer for store eller for små resultater

Use cases Use cases kan brukes til å lage tester Use case identifiserer operasjoner som skal testes, og er en støtte når man designer test cases. Input og output kan lages på basis av et sekvensdiagram

Vær-data sekvensdiagram

Bruk pre-og postbetingelser til testing Bruk inputs som bekrefter prebetigelser (bruker er registrert) Samme med postbetingelser (bruker er registrert, melding er sendt)

Testing vs. debugging Testing er ikke det samme som debugging Testing er å finne feil Debugging er å rette feil men begge deler gjøres ofte i test-fasen av prosjektet (noe uklare grenser)

Eksempel

Type test Enhetstest/funksjonstest Integrasjons- og systemtest Hvem tester: Programmerer Integrasjons- og systemtest Hvem tester: Tester Akseptansetest Hvem tester: Installatør og kunde Drift: Kunde

Typer testing Enhetstest Integrasjonstest Tester at komponenten (klassen) virker isolert Simulerer omgivelsene til komponenten Utføres av utviklere Skrives ofte som automatiske tester Integrasjonstest Tester at komponenten (klassen) virker sammen med andre komponenter Simulerer ofte andre sub-systemer Bruker konstruerte testdata Utføres ofte av utviklere Gjøres ofte manuelt, men kan med fordel automatiseres

Typer testing forts. Betatest Akseptansetest Systemtest Utvalgte kunder tar i bruk systemet før offisiell lansering Akseptansetest Tester at systemet lar brukerne gjøre det de trenger Tester med reelle data Utføres gjerne i samarbeid mellom kunder og testere Systemtest Tester at systemet oppfører seg korrekt i samspill med omgivelsene

Type testing forts. Ytelsestest (tester ytelse = hastigheten på én transaksjon) Stresstest (overbelastningstest) (tester skalerbarhet = hastigheten på mange samtidige transaksjoner) Recoverability-test (tester systemets håndtering av uforutsette avbrudd)

Black- og white-box testing Komponent Inndata Utdata Black box: Gir input forventet output? Komponent Inndata Xxxxx xxxxx Utdata White box: Følger hvert trinn i komponenten. Midlertidige utskrifter.

V-modellen (verifikasjonsmodellen)

Testplan – skal inn i prosjektet V&V-plan (kvalitetssikringsplan) er en del av prosjektplanen Fokus på feilavdekking/-retting ved kjøring av programmer Testplanen bør inneholde beskrivelse av enhetstest (UT) integrasjonstest (IT) systemtest (ST) akspetansetest (AT) Tidsplan (hvilke tester når) Ressursbruk (mennesker/systemer/maskiner/data) Testleveranser (testscript, testrapporter, dokumentasjon, etc.) Risikofaktorer

Eksempel For hvert testdesign For hver test-case Gjennomføring av test for en eller flere ”features” Relatert til kravspesifikasjon ”Features” som skal testes/ikke testes Hvilke ”test-cases” inngår For hver test-case Situasjoner som tester funksjonalitet Input og forventet output Eksekveringsbetingelser (f.eks. hvilke kundedata som skal ligge i databasen) Testprosedyre (detaljert steg-for-steg beskrivelse for gjennomføring av testen)

Testdata Eksempel: Skal ikke betale moms Ok første gang Skal teste at en kunde flytter fra Oslo til Svalbard Skal ikke betale moms Bruker Per som testdata Ok første gang Andre gang feiler testen siden Per ble flyttet i test nr 1 ==> Testdata må resettes mellom hver test Dette er vanskelig/umulig Vanskelig: å finne komplette/realistiske testdata å isolere testdata mellom tester å teste konfidensielle data Testdatabaser får fort dårlig datakvalitet Blir ikke vedlikeholdt på linje med produksjonsdatabaser Data blir herjet mer med enn data i produksjon Feil i kode kan føre til inkonsistente tilstander

Enhetstesting i praksis Målet er å skrive automatiserte enhetstester

JUnit Java-basert verktøy Kan lastes ned gratis på www.junit.org

Eksempel på JUnit

4. Gjenbruk Kode som gjenbrukes er allerede testet Mange penger å spare Men den er ikke nødvendigvis testet for ditt bruk ikke testet i din anvendelse ikke testet med din konfigurasjon

Neste gang Gjesteforelesning: Å være gründer. En systemutviklingside blir til forretning. Yngve Lindsjørn Kompetanseweb as.