Ola Kleiven er SOCO’er som de siste årene har jobbet med ytelsestest i NRK TV. Vi tok en prat med ham for å høre mer om hans erfaringer med innføring av et nytt verktøy, K6.
Større tilgjengelighet
Ola, fortell litt om hva du tester.
Jeg er i et team som blant annet tester ytelse på tv.nrk.no, altså appene til NRK TV. Vi tester avspilling av programmer og direktesendinger på nett, mobil og SmartTV’er, i tillegg til klipp som publiseres på nrk.no. Rent teknisk tester vi APIer som er bygd på diverse tjenester i skyplattformen Azure.
Dere har nylig vært gjennom en overgang fra å bruke JMeter som verktøy for ytelsestest til å benytte K6. Hva var grunnen til at det ble aktuelt med et nytt verktøy?
Det opprinnelige rammeverket for ytelsestest var laget rundt JMeter, og det fungerte greit nok. Noe av det som gjorde at vi begynte å se oss om etter et annet verktøy var at vi innså vi var avhengige av et fåtall nøkkelpersoner som kunne programmeringsspråket Ruby og som hadde ekspertkunnskaper i JMeter. Testresultatene var dessuten “gjemt bort” på virtuelle maskiner. Så ambisjonen vår da vi startet med å implementere K6, var å gjøre gjøre rammeverket mer tilgjengelig slik at alle kan bidra med nye tester og vedlikehold. Det at rammeverket blir mer tilgjengelig gjør også at flere føler eierskap til det. Det var også viktig at testresultatene ble synlige for alle teamene som utvikler tv.nrk.no.
Delingskultur og vilje til forbedring
Det er til tider høyt trykk under enkelte høyprofilerte NRK-sendinger. Hvordan opplever du dette «på innsiden»?
NRK ønsker å ivareta et godt omdømme og levere på samfunnsoppdraget. En del av omdømmet er alltid å være tilgjengelig og til å stole på, selv det innholdet som “bare er underholdning”. NRK TV har i mange år satset tungt på teknisk test, og de fleste testerne programmerer til daglig. Det som gjorde overgangen til K6 så relativt enkel å gjennomføre skyldes flere trekk ved NRK TV. Vi har en gjennomtenkt arkitektur med klare ansvarsområder, og det er vilje til å bruke tid og ressurser på å forbedre ting. Testmiljøene er gode og produksjonslike, og her er en god delingskultur som ønsker å inkludere flere i læringen. NRK TV har også hatt god erfaring med såkalt mobb-programmering.
Mobb-programmering? Det høres interessant ut. Hva gikk det ut på?
Det er på en måte en utvidelse av par-programmering, men med flere deltakere og med påkrevd rotasjon. Alle sitter like lenge ved tastaturet. Vi brukte mobb-programmeringssesjoner til å jobbe sammen med team som er ansvarlige for ytelsen til de ulike APIene. Vi skrev en ny test, deployet den og fulgte resultatene på et dashboard. Snart kunne teamene selv raskt utvide og vedlikeholde sine egne tester som kjører 24/7.
Tilpasninger over tid
For de av leserne som vurderer å bytte verktøy for ytelsestest kan det være interessant å vite litt om overgangen. Det er vel ikke bare bare å bytte til et nytt verktøy for ytelsestest?
Nei, vi gjorde dette stegvis. Som nevnt tok vi utgangspunkt i skyplattformen Azure. Vi startet i det små med å sende loggene fra JMeter til Application Insights. Fordelen var at vi fikk en visualisering av ytelsesdata tidlig i løpet, og at alt var samlet på ett sted. Senere kunne vi da enkelt bytte ut koden i bakkant, uten at de som brukte resultatene merket det. NRK hadde tidligere brukt K6 med hell, og for oss var det også en fordel at K6 har integrasjon med Node.js. Omskrivingen av tester gikk fint siden de ikke var komplekse, men vi brukte noe tid på å standardisere testoppsettet. Vi kom frem til oppskrifter på hvordan vi ønsket at nye tester skulle lages i mobb-programmeringssesjonene.
Takk for praten, Ola. Det er ingen tvil om at ytelsestesting er en viktig brikke bak mye tv-titting fra mobiler, nettbrett og smartTV’er!
K6 er et lasttestverktøy som er utviklervennlig og lett å komme i gang med. Testene skrives i JavaScript.JMeter er et utbredt verktøy for ytelsestesting for alle typer nettløsninger, og har bred støtte for utvidelser.Ønsker du en hands-in introduksjon til K6, les mer om kurset i K6 på SOCO Academy.Mer informasjon om mobb-programmering og verktøy. |