Det er ikke alltid jeg mocker, men når jeg gjør det bruker jeg Troxy!

Robert Hammarström
May 26 · 3 min read
Image for post
Image for post

I SpareBank 1 Utvikling har vi lang erfaring med å teste hvordan våre applikasjoner oppfører seg under last, altså når mange samtidige brukere benytter en applikasjon. Dette skjer som oftest under en test som kalles ytelsestest, loadtest, performancetest, lasttest, ja dere skjønner greia. Når man kjører en av disse testene, så er det ikke alltid greit å også belaste alle bakomliggende systemer. Dette gjelder spesielt når man integrerer mot underleverandører.

Så hva gjør man da? Jo da får man simulere kallene mot de eksterne systemene med hjelp av et simulerings- eller mockverktøy.

Om vi går tilbake 15 år i tid var det ikke mange verktøy å velge mellom. Valget ble da å utvikle et eget verktøy som fikk navnet Troxy. Troxy ble spesialdesignet for å brukes som en simulator av eksterne systemer og måtte ha høy kapasitet for å kunne svare på forespørsler fra flere applikasjoner samtidig under lasttest.

Troxy kan konfigureres for å settes opp mellom en klient og en webservice. Der fungerer Troxy som en proxy og kan lytte på trafikken og ta opp HTTP-request og HTTP-response. Disse opptakene kan deretter brukes til å svare istedenfor den faktiske tjenesten når applikasjonen sender forespørsler til andre systemer.

En av hovedstyrkene til Troxy er at man i tillegg kan trekke ut verdier fra en request og deretter bruke de i responsen som sendes tilbake. Dette er spesielt nyttig om man vil bruke den samme mocken for flere forskjellige testbrukere og der, som et eksempel, fødselsnummer er en verdi som sendes med i request og som i tillegg er med i response. Dette gir noe dynamikk i en ellers statisk oppførsel.

Troxy kan i tillegg enkelt utvides med små java-klasser der man har full kontroll over request og response, både under opptak og avspilling. Dette gjør at man f.eks. automatisk kan formatere opptak til å tilpasses sine formål, uten manuell redigering i etterkant.

All funksjonalitet kan skriptes via et API mot Troxy, men trenger man manuelt å endre ting kan dette gjøres via et fullverdig UI. Her finner vi blant annet funksjonalitet for å endre modus på Troxy (Avspilling, Opptak osv), håndtere og redigere mocker, samt sjekke loggstatistikk for antall kall mot forskjellige endepunkter.

Troxy har med årene blitt et fullverdig mockverktøy og SpareBank 1 Utvikling bruker det nå, i tillegg som simulator ved lasttester, innen både funksjonell test, automatisert regresjons- og integrasjonstest og som simulering av backend-systemer i vår Utviklerportal for åpne APIer.

Som et konkret eksempel kan nevnes et testoppsett der det er mulig å konvertere automatiserte ende-til-ende tester til å kjøre mocket, helt uten manuell jobb involvert. Oppsettet tar i utgangspunkt i tester som kjører mot et dockerisert testmiljø inneholdende applikasjon under test sammen med Troxy. Testen kjøres først ende-til-ende med Troxy i opptaksmodus. Deretter kan den samme testen kjøres med Troxy i avspillingsmodus, fullstendig mocket, uten at applikasjonen sender kall bakover mot andre tjenester. Mockene blir lagret sammen med testen og øvrig kildekode.


Da Troxy er et testverktøy som kan brukes av andre enn bare SpareBank 1 Utvikling, hvorfor ikke dele det som åpen kildekode? Som sagt så gjort, i 2019 ble det tatt en beslutning om å legge ut det kjære mockverktøyet vårt som open source. For å få det til måtte vi rydde litt i kildekoden, og dette ble gjort gjennom et godt samarbeid med våre utviklere på deres fagdag.

Så trenger du et fleksibelt og utvidbart mockverktøy som i tillegg tåler høy last og kan brukes i mange ulike type testscenarier? Kanskje trenger du et godt alternativ til mer etablerte mockverktøy som f.eks Wiremock? Eller kanskje trenger du inspirasjon for å lage noe eget? Test ut Troxy da vel!

SpareBank 1 Utvikling

Vi jobber med digitale løsninger hos SpareBank 1.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store