Automatisert Robusthetstesting. Erik Arisholm Testify AS

Like dokumenter
Effektiv testing med rike anonymiserte testdata

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

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

GJENNOMGANG UKESOPPGAVER 9 TESTING

Inf1055 Modul B 26 april 2017:

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

Automatisert test som leveransekrav

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

Livsløpstesting av IT-systemer

Modernisering av IKT i NAV

Testplan (Software Test Plan)

Finansportalen Historiske bankdata

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

Testing av programvare

LEVER OFTERE TEST SMARTERE

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

KTN1 - Design av forbindelsesorientert protokoll

Retningslinjer for akseptansetest

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

Testbilag til IT kontrakter

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

Oppsummert. Trude Rosendal. Ingebjørg Hammersland

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

Test Beskrivelse Resultat Innhenting CBIS Programmet mottar data fra CBIS OK, men kun. Innhenting Tellus Programmet mottar data fra Tellus OK

altinn tjenester 3.0

Cross the Tech Bridge. Anette Valaker

Akseptansetesten. Siste sjanse for godkjenning Etter Hans Schaefer

Elhub Strategi Aktørtesting

ISTQB Foundation Level Prøveeksamen

Retningslinjer for akseptansetest

Modellering IT konferanse

Testdata og maskering i praksis

Grunnleggende testteori

Testrapport. Aker Surveillance. Gruppe 26. Hovedprosjekt ved Høgskolen i Oslo og Akershus. Oslo, Public 2013 Aker Solutions Page 1 of 5

Validering og verifisering. Kirsten Ribu

Testing i en smidig verden med hyppige leveranser og litt om Asberger

Programvareutvikling hos Sun Microsystems. Jørgen Austvik Sun Microsystems Database Technology Group

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

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Kirsten Ribu

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

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

Lånekassen, Modulisprosjektet

Produksjonssettingsrapport

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

FS-API Status og veien videre. Kai Quale og Mario Ledinscak KDTO

Spring 2017, integrasjoner og API er. Integrasjoner: Hot or not?

- analyse og implementasjon

Databaser og moderne systemutvikling - dag én

Demo for første sprint

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

Verdien av god leverandørtesting i konstruksjonsfasen i smidige prosjekter

Generelt om operativsystemer

Eksamen 2013 Løsningsforslag

KTN1. Gruppe 502. Håkon Sandsmark, Torbjørn Kvåle, Kristoffer Eckhoff, Daniel Børseth og Steffen Amundsen

Ingen søvnløse netter

Test og kvalitet To gode naboer. Børge Brynlund

Bilag 1 til vedlikeholdsavtalen samt driftsavtalen KRAVSPESIFIKASJON. Administrativt system for skole og SFO

Kapittel 4: Transportlaget

Sikkerhetstesting gjennom utviklingsløpet

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

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

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

Testing av programvare. INF1050: Gjennomgang, uke 08

Jini. Gruppe 1 Martin Skarsaune Bjørn Arne Dybvik Cuong Huu Truong. Definisjon

MRS Medisinsk registreringssystem Drift av kvalitetsregistre.

Hvordan kan vi utvikle og etablere sikrere løsninger? Kasus: for mobiltelefoner og nettbrett

Regelbaserte systemer for beregning av pensjon

Http- og WebServices funksjoner

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

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

Message Oriented Middleware (MOM) Thomas Filip Andresen Arild Berggren Eivind Bøhn

Hovedprosjekt i Informasjonsteknologi ved Høgskolen i Oslo og Akershus. Forprosjektrapport. Presentasjon

FluentAutomation. Et automatiserings-rammeverk for regresjonstesting (og mye annet! )

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

GraphQL. Hva, hvorfor, hvordan

Forprosjektrapport gruppe 3

Stikkord: Java EE, EJB, JSF, JPA, SWT, klient/tjener, Glassfish server, Application Client.

Generelt om permanent lagring og filsystemer

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case? Use case modellering. Eksempel

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case?

Ikke glem hvorfor! Et kundeforedrag om veien til god tjenesteovervåking

Ytelsestesting. Erfaringer og Utfordringer i forbindelse med Ytelsestesting mot Komplekse og Integrerte Løsninger.

Fra papir til cloud på 4 måneder Full digitalisering av SMB med S/4HANA 16/

Statusrapport. MUSIT Ny IT-arkitektur Pilot. NØKKELINFORMASJON Rapporteringstidspunkt 17. januar 2017 Rapporteringsperiode Desember 2016

Bilag 3: Beskrivelse av det som skal driftes

TESTRAPPORT FORORD INNHOLD INNLEDNING TEST AV SYSTEMET Databasen og SQL spørringer... 93

e-forvaltning Altinndagen 2012 Nytt om Altinnløsningen for utviklere Lars Petter Svartis Løsningsarkitekt i AEI

TDT4735 Systemutvikling, fordypning. Metoder for systemtest av websystemer

Grunnleggende testteori

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

Prosjektet E-tinglysing

Presentasjon Test. Møte med Systemleverandører 5.desember 2014

KARTETS ROLLE. - Bakgrunnskart, oppsett, ytelse og de ulike formatene

Læringsmål for forelesningen

Erfaring med Soti Telemark - Vestfold

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

EN INNFØRING I BPM

Løsningsforslag og estimat for integrasjon av kalenderdata

Transkript:

Automatisert Robusthetstesting Erik Arisholm Testify AS

21. september Robusthetstesting Robusthetstesting er testing som avslører sårbarheter i et system overfor uventede (kombinasjoner av) input stressende miljøpåvirkninger Dagens tema: stressende miljøpåvirkninger Test som avslører sårbarheter som oppstår ved høy last, nettverk/serverproblemer, nedetid/oppgradering, opp-/nedskalering på avhengige komponenter, o.l.

21. september Motivasjon Skatteetatens moderniserte systemlandskap Java mikrotjenestebasert arkitektur Skybasert infrastruktur (Openshift PaaS) Stor grad av automatisering (24/7, grønt løp, uberørt av menneskehånd) Alle komponenter skal kunne skaleres opp og ned uten forvarsel, redeployes uten at andre komponenter feiler permanent men i stedet høflig står og venter, rapportere egen helsetilstand til alle som bør vite om det, forstå hva som har feilet tidligere og fikse seg selv

21. september Testutfordringer Forretningstransaksjoner er distribuert på tvers av mange komponenter Atomiske transaksjoner finnes ikke lenger Fingranulert sikkerhet/tilgangskontroll Nye komponenter og tjenester hele tiden! Parallell og asynkron behandling Kompleks feilhåndtering som forårsaker følgefeil for eksempel en retry-kø som er for treg (hoper seg opp, disk full, manglende indeks ) eller for rask (overbelaster andre komponenter) Krav til robusthet er ofte skissert på et generelt nivå

Med andre ord En testers drøm!!

Automatisert test Testnivåer vs robusthetstesting Akseptansetest Verdikjedetest Kontrollpunkt Demo Manuell test Systemintegrasjonstest Systemtest Ende-til-ende-test Grensesnitttester Utforskende tester Black-box tester White-box tester BDD-tester Regresjonstester Enhetintegrasjonstest White-box tester TDD-tester Enhetstest White-box tester TDD-tester

Eks: komponent svarer ikke 21. september finnpart(orgnr) finnpart(orgnr) Tolldek-mottak Feed GET tolldekl.xml tolldekmottak finnpart(orgnr) partsregister finnpart(orgnr) Hvordan kan vi teste (deler av) dette scenariet ved hjelp av enhetstesting?

JUnit + Mockito (TDD) 21. september tolldekl-mottak OPPSETT (when-then) identpart(orgnr) TollBehandling :: finndeklarant identpart(orgnr) identpart(orgnr) identpart(orgnr) Partsregister PartsregisterREST RESTKlient Klient MOCK finnpart partsreg VERIFISER (antall kall + sluttresultat)

21. september Hva har vi (ikke) testet så langt?? Vi har testet at feilhåndteringen er implementert i Tollbehandling, dvs: At metoden TollBehandling::finnDeklarant vil kalle PartsregisterRESTKlient::identPart flere ganger dersom identpart returnerer en feilkode, og helt til den returnerer et gyldig partsnummer Vi har IKKE testet PartsregisterRestKlient eller dens integrasjon mot Partsregisteret Likevel en billig og enkel test av sentral feilhåndtering, som også i beste TDD-ånd spesifiserer at det er metoden finndeklarant som har ansvaret for å prøve igjen!

Automatisert test Testnivåer vs robusthetstesting Akseptansetest Verdikjedetest Kontrollpunkt Demo Manuell test Systemintegrasjonstest Systemtest Ende-til-ende-test Grensesnitttester Utforskende tester Black-box tester White-box tester BDD-tester Regresjonstester Enhetintegrasjonstest White-box tester TDD-tester Enhetstest White-box tester TDD-tester

21. september Black-box isolert systemtest Verifikasjon av hver enkelt komponent gjennom eksterne grensesnitt (GUI, REST) både for funksjonell og ikke-funksjonell testing Isolert testing, slik at vi har kontroll over omgivelsene og ikke trenger å inkludere hele verden i en test Nyttig for å verifisere at en komponent ikke er sårbar overfor mer komplekse feilsituasjoner, og mer helhetlig enn det vi kan teste på enhetstestnivå

21. september Eks. verktøy for isolert robusthetstest Cucumber BDD Største verdien er kanskje at man «limer sammen» krav og tester Robusthetskravene = testscenariene blir lette å forstå. Wiremock et mock-verktøy på «utsiden» (Mockito = på innsiden ) Er en stand-alone HTTP-server som testkomponenten kan kobles til Emulerer (deler av et) API til felleskomponenter slik at komponenten under test er helt uvitende om at den kjører i et isolert testmiljø. Kan også simulere nettverksfeil (delays, responsfeil, komponent svarer ikke, osv) Kalles også tjenestesimulering

Eksempel - systemnivå (Wiremock) Tolldekl Atomhopper Tolldekl mottak 21. september Scenario: Partsregisteret svarer ikke Gitt at 1 tolldeklarasjon er tilgjengelig Når tolldekl_mottak startes Så skal tolldekl_mottak hente tolldeklarasjon Og skal partsregister ikke svare 3 ganger Og skal partsregister returnere OK 3x feil + OK (Wiremock) Partsregister

Eksempel - systemnivå 21. september Saksmappe Oppslag Tolldekl Atomhopper Filarkiv Scenario: Filarkiv er utilgjengelig Når Filarkiv stoppes Og tolldekl_mottak startes Så skal Oppslag motta helsetilstand "PAUSE_RETRY" * at Filarkiv startes Og skal Filarkiv kalles Tolldekl mottak Og skal Kvitteringshopper motta kvittering Og skal tolldeklarasjonen lagres i Skatteinfo Og skal det søkes etter og opprettes ny mappe i Saksmappe Og skal Oppslag motta helsetilstand "FRISK" Kvittering Atomhopper Skatteinfo Partsregister

Oppsummering systemtester Kan teste mer komplekse og realistiske systemnivå scenarier Komponenten kjører som den vil kjøre i PROD (uvitende om at det finnes mocks) testen kontrollerer (mesteparten av) omgivelsene Krever mye oppsett hvis man skal teste lange kallsekvenser og tilstandsavhengige responser. Klarer uansett ikke å spesifisere ALLE mulige (kombinasjoner av) scenarier! Antar at komponenter faktisk oppfører seg slik vi har definert dem i WireMock! Kun en test av seg selv i en emulator, ikke av alle andre Kan altså ikke erstatte systemintegrasjonstest mot reelle komponenter

Automatisert test Testnivåer vs robusthetstesting Akseptansetest Verdikjedetest Kontrollpunkt Demo Manuell test Systemintegrasjonstest Systemtest Ende-til-ende-test Grensesnitttester Utforskende tester Black-box tester White-box tester BDD-tester Regresjonstester Enhetintegrasjonstest White-box tester TDD-tester Enhetstest White-box tester TDD-tester

Ende-til-ende robusthetstesting - inkl. funksjonell verifikasjon Testklient Saksmappe Meldings produsent TollDek Feed Tolldekl mottak Skatteinfo partreg Filarkiv Statens innkrevingssentral

Automatisert Sabotasjetesting Ta opp og ned komponenter og komponentinstanser (skalering) Kontrollerte kall til OS (kill -9, ssh start-app, OpenShift REST API) Chaos Monkey: Monkey-Ops, m.m. Framprovosere nettverkstrøbbel skape mer sammensatte eller uforutsette robusthetstester. sette opp delays, pakketap, TCP timeouts, mm (kontrollert og tilfeldig) Eksempel på verktøy: Saboteur/Crash Lab/ToxiProxy

21. september Oppsummering Modernisert arkitektur krever mye ift test av robusthet Automatisert robusthetstesting på flere testnivåer er helt sentralt TDD enhetstesting inkl. objectmocking: JUnit + Mockito BDD + Isolert systemtesting: Cucumber + Wiremock E2e-testing: kombinere ytelse og robusthetsscenarier med funksjonell verifikasjon på tvers av verdikjeden Saboteur el.l. for å teste oppførsel under nettverksfeil automatisert chaos monkey tankegang i test.

Takk for meg! 21. september