Dårlige tider gir gode verktøy - visualisering av komplekse feilsituasjoner - Rune Sørensen Statens pensjonskasse mai 2011
Agenda System: Pensjonsberegning Black-box testing, Regresjonstesting PERFORM 2010: Kontekst pensjonsberegning Visualisering og analyse av feilsituasjon Visualisering og analyse av testdekning
System: Pensjonsberegning
Lynkurs i pensjonsberegning Alderspensjon (regelverk per 2009) Brutto tjenestepensjon 364 405 x 66 % 240 507 - Samordningsfradrag 177 100 = Netto tjenestepensjon 63 406 + Folketrygd 195 321 = Samlet pensjon 258 728 (71%) 66% Lønn BP Arbeidsgiver SPK Folketrygd Samlet pensjon
System: Pensjonsberegning Kritisk for SPKs forretning Grunnlag for nesten alle utbetalinger til medlemmer og fakturering av kunder Benyttes i SPKs saksbehandlingsverktøy (PUMA) Benyttes i SPKs interaktive løsninger
System: Pensjonsberegning Komplekst system Regelbasert plattform ILOG Jrules, 1400 regler Avhengigheter fra mange systemer/ applikasjoner Beregner en stor mengde ulike kombinasjoner av inputdata Små endringer kan potensielt påvirke mange beregninger
System: Pensjonsberegning Testing Lite testing av mindre komponenter/ regler i regelmotoren Stor regresjonstest er tradisjonelt kjørt i testfasen
System: Pensjonsberegning PERFORM Erstatte C basert regresjontest rammeverk Pensjonsreformen tvinger frem store endringer i systemet
Regresjonstest
Blackbox test, Regresjonstest INN System UT System v1.0 UT INN System v1.1 UT Sammenligner to (eller flere) beregninger. Før og etter en endring.
Regresjonstest av pensjonsberegningen Gammel regresjonstest C basert Testet hele tjenestestabelen Utdaterte testdata Tok mange dager å gjennomføre en test Ny regresjonstest Ferske data Genererer beregningsforespørsel via tjenestekall Tester kun systemet for beregning av pensjon Rask kjøretid. Ny regresjonstest klar hver morgen.
PERFORM: oktober 2010
PERFORM 2010: Oktober leveransen Konstruksjon Godkjenningsprøve Akseptansetest Produksjonssetting 08.03 02.08 13.09 30.09 Konstruksjon: 18.08: Avvik på 9968 av 33857 beregninger... I-1 I-2 I-6 Nytt regelverk implementeres og akseptansetestes (Fitnesse) Ny regresjonstest Gammelt regelverk verifiseres primært med regresjonstest
Forutsigbarhet
Leveranse
Gjennomføringsevne
Noen av utfordringene 30 % av beregningene gir avvik Kort tid til leveranse 30.000 og 60.000 beregninger i en regresjonstest (volum) Hvor skal man begynne å rette feil? Hvordan synligjøre arbeid/fremgang? Prioritere
Visualisering og analyse - feilsituasjon -
Prinsipper og mål Forretningsnær Analysere etter begreper forretningen forholder seg til Verdi for utvikler/forretning/prosjektet Prioritere feil Gi raskt overblikk over situasjonen fra dag til dag Bidra til raskere feilretting Synligjøre /rapportere fremgang
Hvordan systematisere/analysere? Tid Beregning Alder Inntekt 1:n1 Opptjening Person 1:n2 1:n3 Grad Folketrygdytelse SPK-Ytelse Art Produkt Grunnlag Grad
Hvordan systematisere/analysere? Variable ID Familie Produkt Alder Produkt Uføre... 1 Ja 0 1 Observasjoner 2 Nei 1 1 3 Nei 2 0
Avledede variable Avledet variabel Mulige utfall 1 Er dette en familieberegning? JA / NEI 2 Type beregning PEN, SKF, ETO 3 Pensjonsprodukt ALD, UFO, ETT,... 4 Folketrygdytelse AP, EP, KS,... 5 Finnes gradert pensjon? JA / NEI 6 Finnes gradert ftr ytelse? JA / NEI 7 Har personen inntekt? JA / NEI
Kategoriske variable Lag kategoriske/ binære variable innenfor hver dimensjon / avledet variabel Avledet variabel Mulige utfall 3 Pensjonsprodukt ALD, UFO, ETT,... Produkt ID ALD UFO 1 0 1 Alder 2 1 1 3 2 0 4 0 1 Produkt ID ALD_2 UFO_1 ALD_1_UFO_1 1 0 1 0 2 0 0 1 3 1 0 0 4 0 1 0
Analyse: Konsept START INN Pensjonsberegning L34 Pensjonsberegning L35 UT UT
Analyse: Konsept Familieberegning? START Ja Nei
Analyse: Konsept Familieberegning? START Ja Nei
Analyse: Konsept Beregningstype? START Ja Nei
Analyse: Konsept Beregningstype? START PEN Ja SKF Nei PEN SKF
Analyse: Konsept Beregningstype? START PEN Ja SKF Nei PEN SKF
Analyse: Konsept Produkt? Ja PEN Nei Alder PEN SKF Uføre Alder + Uføre
Analyse: Konsept Produkt? Ja PEN Nei Alder PEN SKF Uføre Alder + Uføre
Analyse: Konsept Pensjonsberegning L34 UT INN Pensjonsberegning L35 UT
Analyse: Konsept Ja PEN Nei Alder PEN SKF Uføre Alder + Uføre
Analyse: Konsept - Kollaps grønne subtrær PEN Ja Nei Alder PEN SKF Uføre Alder + Uføre
Analyse: Konsept - Kollaps grønne subtrær PEN Ja Nei Alder PEN SKF Uføre Alder + Uføre
Analyse: Eksempler Feilsituasjonen 21.09.2010 Feilsituasjonen 29.09.2010
Feilsituasjonen 21.09.2010
Feilsituasjonen 29.09.2010
Analyse: Konsept En grønn node -> regresjonstest uten avvik Kompleksitet i grafen og antallet noder Kompleksitet i feilsituasjon Analysen sier noe om hva som har avvik av det som faktisk er testet i regresjonstesten Analysen sier i seg selv ikke noe om testutvalget og variasjonen i dette
Analyse: Noen forbedringer Rekkefølge Ikke alltid hensiktsmessig å splitte etter en prioritert liste Size matters La viktigere noder få en større visuell vekt
Size matters...
Rekkefølge (Inntekt sist)
Rekkefølge (Inntekt først)
Visualisering og analyse - testdekning -
Testdekningsanalyse Overvåker hvilke regler som er aktive ved en beregning og gjennom et sett beregninger Visualiserer kodetreet i en graf Fargekoder etter hvor godt regelen er testet Bruksområder: Tette hull i regtest Økt kunnskap om systemet Identifisere død kode
Testdekningsanalyse
Testdekningsanalyse
Testdekningsanalyse
Testdekningsanalyse Eksempel
Spørsmål? Rune Sørensen Seniorrådgiver, Statens pensjonskasse Twitter: rugsor, Linkedin: http://no.linkedin.com/in/rugsor, Blog: http://blog.runesorensen.com, Epost: rune.sorensen@spk.no