Effektiv testing. Per Otto Bergum Christensen. 9.-10. September, JavaZone. Bergum Christensen Consulting

Like dokumenter
Teknisk gjeld - hvor mye er forsvarlig? Per Otto Bergum Christensen, Objectdesign 27 August, Smidig fagdag i SPK

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

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

Dårlige tider gir gode verktøy - visualisering av komplekse feilsituasjoner -

GJENNOMGANG UKESOPPGAVER 9 TESTING

Altinns nye tjenesteverksted. Lars Vegard Bachmann, produkteier portal og tjenester, Altinn

JigZaw - Verktøy. Teststategi utviklet av. Erik Drolshammer Bård Lind. Verifiser Forventet Funksjonalitet

Testbilag til IT kontrakter

Regelbaserte systemer for beregning av pensjon

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

Automatisert test som leveransekrav

Inf1055 Modul B 26 april 2017:

Cross the Tech Bridge. Anette Valaker

1 Forord. Kravspesifikasjon

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

Automatisert Robusthetstesting. Erik Arisholm Testify AS

3. Kravspesifikasjon. Experior - rich test editor for FitNesse -

Verdien av god leverandørtesting i konstruksjonsfasen i smidige prosjekter

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

Validering og verifisering. Kirsten Ribu

OPPGAVE 5b og 8b Java Kode

Livsløpstesting av IT-systemer

Mellom barken og veden Smidig testing i krevende terreng TTC 2015

Summer internship i SpareBank 1 et av Norges mest interessante teknologimiljø

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

Læringsmål for forelesningen

Sigurd Gimre. Nøkkelkvalifikasjoner. Teamleder / Seniorkonsulent. E-post: sgimre@gmail.com Telefon mobil:

Testing tidlig i livssyklusen smidige prosjekter. Arne Erik Hurum Helsedirektoratet Bjørn Andersen - Steria

KRAVSPESIFIKASJON v.1.2

LEVER OFTERE TEST SMARTERE

Modernisering av IKT i NAV

Forprosjekt Hovedprosjekt ved Høgskolen i Oslo Våren 2008

Kirsten Ribu

MUTASJONSTESTING LAG BUGS FOR Å FÅ BEDRE KODE

Fra idé til marked Hvorfor elektronikk handler om mer enn kretskort

BE AGILE. Torbjørn Laukvik og Bjørn Andreas Wang Pettersen Seniorkonsulenter, Sogeti Norge

Overordnet Testplan. MUSIT Ny IT-arkitektur, Pilot og Hovedprosjekt. Page 1 of 11

Planlegging/forprosjekt:

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

altinn tjenester 3.0

GJENNOMGANG UKESOPPGAVER 2 PROSESSMODELLER OG SMIDIG PROGRAMVAREUTVIKLIG

Grunnleggende testteori

Kravspesifikasjon MetaView

IT-puls Trondheim november ROBOTISERT PROSESS- AUTOMATISERING. Digital modenhet. Gina Husebø, EVRY. #ITpuls

EN INNFØRING I BPM

Finansportalen Historiske bankdata

Agenda. Tiden som har gått Tiden som kommer Noen tips til deg

Frank Sandersen, EVRY 3. April Avansert integrasjon Saksbehandling med ephorte som arkiv

Verifikasjon og validering

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

AP221 Use Case - TUL - Utarbeid prosessflytmal og komponenter

TDT4100 Objektorientert programmering

Public. earkiv 360. Integrasjonsmuligheter og nye metoder for import Stian Gregory

CORBA Component Model (CCM)

Sikkerhetstesting gjennom utviklingsløpet

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

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

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

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

ISTQB Foundation Level Prøveeksamen

Rolle / Oppdrag. Henrik Holum Født: 1981 Nasjonalitet: Norsk

Kapittel 8: Programutvikling

Kvalitetssikring i vår digitale hverdag - kan vi teste som vi alltid har gjort?

2 Om statiske variable/konstanter og statiske metoder.

Grunnleggende testteori

- analyse og implementasjon

Ingen søvnløse netter

AlgDat 10. Forelesning 2. Gunnar Misund

K-Nett. Krisehåndteringssystem for Norges vassdrags- og energidirektorat i en beredskaps- og krisesituasjon. av Erik Mathiessen

Lånekassen, Modulisprosjektet

Grunnleggende testteori. Etter Hans Schaefer

Oppgraderinger i SAP. Planlegge, organisere og gjennomføre en oppgradering til ECC 5.0/ECC 6.0. Sveinung Gehrken

HYPPIGE LEVERANSER HVORDAN KOMMER SPK DIT? Ved Mette Gjertsen Statens pensjonskasse

or*dtrosnilt,'+'.q':'

Kostnadseffektivt eller bortkastet tid? Øyvind Woll Seniorkonsulent, Vivento AS

Velkommen til BRUK AV TANKEKART SOM HJELPEMIDDEL TIL TESTPLANLEGGING 21. APRIL 2015

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

En algoritme for permutasjonsgenerering

4. Installasjonsveiledning. Experior - rich test editor for FitNesse -

Kunden er en av Norges ledende leverandører av digital-tv og bredbåndstjenester.

Verifikasjon og validering

Unified Consulting AS Objectnet AS

Installere JBuilder Foundation i Mandrake Linux 10.0

Oppgave 1. Finn krav. Finn krav. Finn test

Integrasjon - fra strategi til vellykket implementering. Integrasjonsdagene Halden, august 2013 Ståle Hustad, TrønderEnergi Nett AS

Kirsten Ribu

Muligheter etter studiene

INF1010, 15. januar time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Model Driven Architecture (MDA) Interpretasjon og kritikk

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

HØGSKOLEN I OSLO OG AKERSHUS. FôrIt CDS. Testrapport

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006

Læringsmål for forelesningen

Request for information (RFI) Integrasjonsplattform

Kravhåndtering. INF1050: Gjennomgang, uke 03

Forprosjektrapport. Presentasjon. Studentgruppen. Bekk Consulting AS. Android app for aktivering av jakt- og fiskekort

Why Desperate Houswives make Excellent Test Managers Testprosjektet som suksessfaktor i et hvert prosjekt

Intelle har siden starten i i leverandør av av programvare for data- og og systemintegrasjon.

EKSAMEN I FAG TDT MMI Tirsdag 1. juni 2004 Tid: kl

Transkript:

Effektiv testing Per Otto Bergum Christensen 9.-10. September, JavaZone Bergum Christensen Consulting

Om meg Per Otto Bergum Christensen (33) Siv.ing, Datateknikk, NTNU Jobbet med utviklingsprosjekter på JEE siden 2000, som utvikler, teamleder og arkitekt 8 års erfaring fra BEKK Consulting Nå: Bergum Christensen Consulting Bergum Christensen Consulting

Hvilke sideeffekter har test på et prosjekt?

Et verktøy for å nå nye høyder? Periklisgr - Fotolia.com http://www.flickr.com/photos/thyristor/2653744298/

Et hinder for endring? nsphotography - Fotolia.com

Hva må vi tenke på angående automatisert test?

Riktig valg av testverktøy RTimages - Fotolia.com

Riktig bruk av testverktøy Martin Green - Fotolia.com

Agenda: Effektiv testing Enhetstest Funksjonell test Test av brukergrensesnittet Eksempel på effektiv testing

Enhetstest frenta - Fotolia.com

En test public class TestSluttrabatt { @Test public void beregnesbasertpaaantallvarerogpris() { List<Integer> varebeloep = HandelTestdata.belopslisteMedTreVarekjoep(); int rabatt = Sluttrabatt.kalkulert(vareBeloep); assertequals(10, rabatt); } }

public class TestSluttrabatt { @Test public void beregnesbasertpaaantallvarerogpris() { List<Integer> varebeloep = HandelTestdata.belopslisteMedTreVarekjoep(); int rabatt = Sluttrabatt.kalkulert(vareBeloep); assertequals(10, rabatt); } }

Rimeligste vare i rabatt ved kjøp av tre varer public class TestSluttrabatt { @Test public void beregnesbasertpaaantallvarerogpris() { List<Integer> varebeloep = HandelTestdata.belopslisteMedTreVarekjoep(); int rabatt = Sluttrabatt.kalkulert(vareBeloep); assertequals(10, rabatt); } } [ 10, 20, 30 ]

Test redesignet public class TestSluttrabatt { @Test public void rimligstevareirabattvedkjoepavtrevarer() { List<Integer> varebeloep = aslist(10, 20, 30); int rabatt = Sluttrabatt.kalkulert(vareBeloep); assertequals(10, rabatt); } }

Enhetstest - tips Testmetodenavn som beskriver et krav Testblokk som verifiserer et krav Testdata nærme testblokken Testblokk som har riktig størrelse Unngå mocks i enhetstest

Funksjonell test Lukasz Laska - istockphoto.com

Fra Fitnesse Scenario Implementasjon av forretningsregler i regelmotor Test av forretningsregler med bruk av FitNesse Ingen faktisk bruk av FitNesse for å endre eller legge til testtilfeller Utfordringer Å utvikle tester og kjøre disse lokalt tok lang tid En kjøring på CI-server kunne ta 2-3 timer Alltid en eller flere tester som var brukket på CI Endring var tungt

Til funksjonell enhetstest Løsning Bruke testverktøy integrert med regelmotor Kjøring av tester på egen CI-server Migrere tester fra FitNesse til brunit Effekt Å utvikle tester og kjøre disse lokalt tok kort tid En kjøring på CI-server tok 1 minutt! Skjeldent at tester feilet på CI Endring var lett

Funksjonell test - tips Ikke lag en Fitnesse test pr funksjonelt krav, vedlikeholdskostnaden vil bli enorm Test avansert funksjonalitet uten infrastruktur, test infrastruktur med enkel funksjonalitet * Integrerer automatisk funksjonell akseptansetest i utviklingsmiljø og på CI-server Inkluder en stub-arkitektur som tillater kjøring av akseptansetester når integrasjonspunkter er nede * Sitat Johannes Brodwall

Test av brukergrensesnittet http://www.flickr.com/photos/arthur-caranta/3061093760

Mange tester Verifiserte brukerhistorier i detalj Brukt som akseptansetest Serverfarm for å få ned kjøretid på GUI-tester Alltid en eller flere tester som feilet Blame game når en GUI-test feilet

En stor test Smoke test av applikasjonen Ikke brukt som akseptansetest Ble kjørt av utviklere før innsjekk av kode Holdt applikasjonen stabil for utvikling

Test av brukergrensensittet - tips Ikke lag en GUI test pr funksjonelt krav, vedlikeholdskostnaden vil bli enorm Test solskinnshistorier. Unntak bør testes i raske funksjonelle tester Definer maks kjøretid for testene, og optimaliser testsettet når maks kjøretid er nådd Design applikasjonen slik at det er lett for tester å benytte den

o m e Hva får du av staten når du går av d g o r e l p m med pensjon? e s k E Eksempel på test av kode for beregning av alderspensjon http://www.nav.no/binary?id=331164&download=true

Valg av testverktøy Muligheter Watir/Cucumber FitNesse JUnit Konsekvenser Skrive ruby for test gjennom brukergrensesnittet? Skrive fixturekode for fit-tabeller? Skrive junit-tester? Hva har vi (utviklere) mest lyst til? Håndsopprekning!

JUnit vant!

Men, kunden snakker ikke Java... Sergey Rusakov - Fotolia.com

Det finnes løsninger Bruk av forretningsterminologi i koden Tester som uttrykker forretningskrav Eksempler relatert til forretningskrav Ett rapportverktøy som trekker ut relevante krav og eksempler, men finnes det? tiero - Fotolia.com

b c o D B i g d i r h t ng p a g e

BDoc #1 Primærverktøy når kunden ønsker å overlate utforming av tester og eksempler til utviklere, men samtidig ønsker innsyn Sekundærverktøy når kunden selv ønsker å definere tester, men ikke alle Er utvikleren sin letteste ryggesekk når det gjelder dokumentering av implementerte krav

BDoc #2 Analyserer JUnit-tester for brukerhistorier, krav og eksempler Produserer en javadoc-like rapport for brukerhistorier Designet med tanke på integrasjon med Maven Admin på BDoc: Per Otto Bergum Christensen

D O M E http://www.perottobergumchristensen.com/pensjonsberegning/site/bdoc

QA av BDoc rapport * Beregning av alderspensjon Spesifikasjonene var ikke 100% riktig Regler for opptjening til grunnpensjon var utelatt Pensjonsprosent så ikke riktig ut Dobbelsjekk med fagekspert angående pensjonsprosenten: Regler for pensjonsprosent var muligens riktig, men ikke sånn vi pleier å gjøre det QA gjennom bdoc-rapport avdekket feil og egne tolkninger hos utvikler angående regler, før applikasjonen var testet ved faktisk bruk *QA: Johannes Brodwall (takk skal du ha:)

Noen avsluttende ord om test

Ikke lag tester som ligner på dette... Perry Gerenday Photography

Følg enkle regler for testing Bruk riktig verktøy. Ideelt sett de verktøy som tilhører teknologien Skap bevissthet om feil i systemet Rett brukne tester når de oppstår Skriv om eller kast skjøre tester Ikke aksepter at kjøretid går fra minutter til timer Bruk tid på å etablere og rafinere praksis Det er lov å teste manuelt Invester i gode JUnit tester!

Bergum Christensen Consulting