logo

Netmaking

22 71 95 97

Yngve Høiseth

Spar tid og penger med automatisk kvalitetskontroll

Manuell kvalitetskontroll av programvare er tidkrevende og gir stor risiko for feil. Heldigvis kan store deler av prosessen automatiseres.

Moderne webutvikling kjennetegnes ved mange små endringer som kontinuerlig lanseres i produksjonmiljøet. Det kan være en ny bakgrunnsfarge, retting av en feil ved dataoverføring eller oppdatering av en priskalkyle.

For å redusere antallet feil og sikre at koden opprettholder høy nok kvalitet bør enhver endring kontrolleres grundig før den gjennomføres.

Verdien av automatisering

Den enkleste måten å komme i gang med kvalitetskontroll på er å gjøre det manuelt. Men det er tidkrevende og repetitivt (og fryktelig kjedelig).

Se for eksempel for deg at du manuelt skal sjekke om den nye priskalkylen regner ut riktig pris for flere tusen produkter i nettbutikken. En helt uoverkommelig oppgave, ikke sant? Med automatisering kan vi bruke tiden vår mer fornuftig, samtidig som vi får en mer pålitelig kvalitetskontroll. Men hvordan gjør vi dette i praksis? 

I Netmaking benytter vi to metoder for automatisk kvalitetskontroll, nemlig automatiske tester og kontroll av kodekvalitet. De to metodene supplerer hverandre. La meg forklare:

Automatiske tester

En automatisk test lages av den enkelte utvikler. For å illustrere kan vi benytte eksempelet med endring av priskalkylen. Se for deg at kalkylen endres fra

utsalgspris = innkjøpspris x 2

til

utsalgspris = innkjøpspris x 2,1

For å teste denne endringen kan vi se på noen produkter i nettbutikken, slå opp innkjøpsprisen og sjekke at utregningen stemmer. Det er tidkrevende, særlig hvis vi gjør endringer ofte og priskalkylen er mer avansert enn dette enkle eksemplet.

Da er det bedre å sette opp en automatisk test som sjekker alle produktene hver gang noen endrer koden.

Også grafiske brukergrensesnitt kan testes automatisk ved å simulere en nettleserbruker. Det lar oss teste større deler av applikasjonen på én gang, for eksempel slik:

1. Legg produktene A, B og C i handlekurven
2. Gå til kassen
3. Logg inn
4. Gjennomfør betaling
5. Sjekk at ordrebekreftelsen stemmer

Alt dette kan altså gjøres helt automatisk. Slik får vi en garanti for at systemet fungerer uten å teste det manuelt.

Kontroll av kodekvalitet

Mye kan sies om kodekvalitet. I dette innlegget vil jeg ta for meg ett aspekt: Modulært design. Deretter forklarer jeg metaforen teknisk gjeld, som hjelper oss med å forstå avveiningen mellom hastighet og kvalitet.

Modulært design

Modulært design er et viktig prinsipp ved utvikling av programvare. Et modulært system består av flere mindre deler (moduler) som lett kan byttes ut. Jo mer standardiserte modulene er, desto bedre.

Støp en bygning i ett stykke, og den blir svært vanskelig å endre eller reparere. Det samme gjelder for programvare. Ved å dele den opp i mindre deler kan vi gjøre videreutviklingen enklere, smidigere og billigere.

Teknisk gjeld

Ved utvikling av programvare må vi veie hensynet til å fullføre arbeidet raskt mot hensynet til å produsere høy kvalitet. Det finnes ikke noe fasitsvar på hvilken balanse man skal velge, men generelt går raskt arbeid på bekostning av produktivitet på lang sikt og omvendt.

Når man skriver kode som ikke er perfekt (ingen skriver perfekt kode), så bygger man opp teknisk gjeld. Dette er ikke i seg selv nødvendigvis et problem så lenge man er den bevisst og håndterer den underveis.

Kontinuerlig kontroll

En av de virkelig store fordelene med automatisering er at kontrollene kan kjøres så ofte vi bare vil.

I tillegg til å kjøre tester lokalt, bruker vi i Netmaking Scrutinizer, som også gir en oversikt over kodekvaliteten. For ett av våre prosjekter ser det slik ut:

Scrutinizer screenshot

Illustrasjon: Scrutinizer rangerer kodekvaliteten fra A til F og gir en samlet score fra 0 til 10. For dette prosjektet kan vi se at cirka ¾ av kodebasen har fått karakter A (mørkegrønn), cirka ⅛ har fått karakter B (lysegrønn) og resterende åttendedel har fått karakter C (gul).

Konklusjon

Automatisk kvalitetskontroll kan virke overflødig. Automatiske tester kjøres jo ikke i produksjon, og dårlig kode kan fungere (se for eksempel denne artikkelen om WordPress).

Men over tid gjør automatisk kvalitetskontroll oss mer produktive. Antall feil reduseres, det blir mindre behov for manuelt rutinearbeid og det blir enklere å beslutte og gjennomføre endringer i systemet. 

Yngve Høiseth

Yngve Høiseth

Yngve har vært innom både befalsskole og bank før han landet hos oss. I tillegg til webutvikling er Yngve opptatt av hvordan ting kan gjøres bedre, på alle mulige måter, noe som er bra for både oss og våre kunder. Yngve har også en ullgenser.