Verden er full av programvare som fullt ut oppfyller alle sine dokumenterte krav, men som likevel ikke skaper verdi for brukerne.
Da jeg studerte programvareteknikk – for mange år siden – betydde kvalitet samsvar, det vil si overensstemmelse med kravene. Jeg lærte også at kvalitetssikring betyr alle tiltakene som iverksettes for å muliggjøre, skape og verifisere kvalitet, og at testing er en viktig metode for kvalitetssikring.
I dag definerer Wikipedia testing som handlingen med å undersøke artefaktene og oppførselen til programvaren som testes, gjennom validering og verifisering. Testing defineres som en aktivitet, mens formålet holdes åpent. Definisjonene jeg lærte på ingeniørutdanningen, er svært forenlige med Wikipedias definisjon av samsvarstesting: testing som avgjør om en prosess, et produkt eller en tjeneste samsvarer med kravene i en spesifikasjon, teknisk standard, kontrakt eller forskrift. Merkelig nok bruker ingen av disse definisjonene ordet kvalitet i det hele tatt.
Hva er kvalitet?
I dag unngår jeg fristelsen til å definere kvalitet, bortsett fra indirekte gjennom fire dimensjoner: fordeler, funksjoner, prosess og opplevelse. La oss tenke på noe alle kjenner, for eksempel PayPal. Folk bruker det til å overføre penger på nettet; dette er dets funksjon. Fordelene de søker, er enkelhet, sikkerhet og lave kostnader. Bruk av PayPal innebærer ulike brukerprosesser, og programvaren veileder brukeren gjennom dem. Følelsene, som glede, frustrasjon eller mestring, som brukeren opplever mens hun bruker PayPal, utgjør opplevelsen. Uansett hva kvalitet er, kan den vanskelig være til stede uten alle disse fire dimensjonene.
Testing fokuserer vanligvis på funksjonelt samsvar, det vil si å kontrollere at programvaren gjør det kravene sier, og ikke gjør noe annet. Det kan også finnes ikke-funksjonelle krav, for eksempel responstider, antallet parallelle transaksjoner som håndteres, og sikkerheten til brukerens data. Standarder og forskrifter, som SOC2 eller GDPR, medfører ytterligere krav, i likhet med PayPals avtaler med kredittkortselskaper. Disse kan ha lite å gjøre med programvarens faktiske funksjoner og verdi, men å overholde dem er en forutsetning for å delta i virksomheten.
Kvalitet går lenger enn bare samsvar. For å oppnå begge deler kan du se vår utvalgte liste over de beste plattformene for programvaretesting
Idealverdenen
Dyktige testere anvender både et samsvarsbasert perspektiv, som fokuserer på å oppfylle kravene, og et resultatbasert perspektiv, som fokuserer på å realisere fordelene. I en idealverden ville det å oppfylle de dokumenterte kravene innebære at brukernes fordeler ble realisert, men verden er sjelden ideell. Selv om programvaren var perfekt, er ikke brukerne det. Realiseringen av fordelene avhenger i stor grad av brukerens handlinger, og brukerens handlinger avhenger av hvordan programvaren kommuniserer med brukeren og veileder henne. Dette påvirker igjen kvaliteten på hele opplevelsen. Disse egenskapene ved programvaren kan vanskelig fanges opp i samsvarskrav eller formelle testtilfeller. Igjen: I en idealverden løses alle disse utfordringene tidlig nok gjennom brukersentrert design – men verden er langt fra ideell, og en tester må fungere som stedfortreder for den virkelige brukeren.
Samsvarstesting kontra resultatbasert testing
Samsvarstesting og resultatbasert testing krever ulike tankesett. Samsvarstesting er som å sette opp feller: lese kravene, forestille seg hva som kan gå galt, og utforme testbetingelser der programvaren sannsynligvis vil feile. Resultatbasert testing ligner mer på en nysgjerrig undersøkelse: forstå hva brukeren må oppnå, forestille seg alle tingene hun kan gjøre, finne ut hvordan programvaren bør reagere, og deretter prøve det ut.
Samsvar er en forutsetning for kvalitet. I mange bransjer er det å oppfylle formelle samsvarskrav til og med en forutsetning for å delta i virksomheten. Man kan også redusere risikoen for erstatningsansvar ved å fremlegge dokumentasjon på at samsvaret er testet på riktig måte. Jeg har en tendens til å tenke at samsvarstesting hjelper deg med å redusere risikoen for fiasko, mens resultatbasert testing hjelper deg med å øke sannsynligheten for suksess.




