Validering af software i produktionen kan være en både kompleks og kontroversiel praksis, der er blevet udbredt i mange teknologiske organisationer. Det handler ikke kun om at teste funktionaliteter i et laboratorium, men også om at se, hvordan et system fungerer under reelle forhold, mens det bruges af tusindvis af mennesker. Dette sker gennem to hovedstrategier: passiv og aktiv validering. Begge metoder er komplementære og tilbyder indsigt i softwarekvalitet på forskellige måder.
Passiv validering involverer at observere brugerinteraktioner i produktionen, ofte ved at indsamle data fra brugernes faktiske adfærd. Et klassisk eksempel på passiv validering er analyse af sociale medier, som Seth Eliot beskriver i relation til Xbox Kinect. Ved at overvåge tweets og sentimentanalyser kunne de få indblik i, hvordan produktet blev modtaget i markedet. Hvis sentimentet vendte negativt, eller brugere begyndte at nævne ord som "fejl" eller "skrammel", kunne de straks identificere problemer og tage handling.
På den anden side genererer aktiv validering data ved at køre forudbestemte scenarier i produktionen. Et velkendt eksempel på aktiv validering ses i Microsoft Exchange, hvor testcases, der tidligere blev kørt i laboratoriet, nu blev kørt kontinuerligt i produktionen. Her blev succes eller fiasko ikke blot defineret af et bestået eller fejlet testscenarie, men af systemets samlede performance og tilgængelighed, som blev målt ud fra KPI’er som tilgængelighed og responstid. Aktiv validering i produktion giver ikke kun information om, hvorvidt systemet fungerer som forventet, men måler også, hvordan systemet lever op til brugerens forventninger i den virkelige verden.
Selvom validering i produktion kan give stor værdi, er der også risici og begrænsninger, der skal overvejes. En af de mest åbenlyse faldgruber er håndtering af følsomme brugerdata, som kan kræve ekstra opmærksomhed, især ved passiv validering. Der er også risici forbundet med aktiv validering, som kan ændre data i produktionen og påvirke brugernes oplevelse negativt. Et berømt eksempel på en fejlslagen aktiv validering stammer fra Amazon, som oprettede testprodukter til salg i deres systemer. Søger man på "test ASIN", kunne kunder finde produkter, der ikke eksisterede, hvilket kunne skade brugeroplevelsen og føre til potentielt farlige situationer, som fx urimelige prissætninger for falske varer.
Et andet eksempel på aktiv validering, der gik galt, stammer fra Harvard Business School Publishing (HBSP). Deres "Single Result Search"-test på hjemmesiden, der blev kørt i produktionen, endte med at forvrænge salgsdata, da systemet returnerede en uventet opdatering af en populær bog. Dette medførte forstyrrelser i markedsføringsafdelingen, da de fejlagtigt baserede deres strategier på testresultater, der ikke afspejlede virkeligheden. Denne form for aktiv validering, hvor testdata kan påvirke vigtige forretningsmålinger, understreger vigtigheden af at vælge de rette testscenarier og anvende dem omhyggeligt.
Der er også udfordringer ved at anvende overvågning som erstatning for traditionelle testmetoder. Jim Bird kritiserer ideen om at lade overvågning tage over for testning, da dette kan medføre manglende fokus på kvalitet og effektiv fejlfindingspraksis. Overvågning i produktionen kan dog stadig være nyttig i visse miljøer, som for eksempel Facebook, der prioriterer produktionstest over pre-release test. Hos Facebook accepteres det, at softwarekvaliteten ikke nødvendigvis altid er høj, og brugerne er ofte villige til at tilgive mindre problemer, især i de tidlige stadier af en opdatering.
Når man arbejder med validering i produktionen, er det også vigtigt at kontrollere eksponeringen af nye funktioner til brugerne. Dette er et koncept kendt som "exposure control". Ved at bruge teknikker som canary releases, staged rollouts, dogfooding og dark launching kan organisationer gradvist rulle nye funktioner ud, hvilket reducerer risikoen for at introducere fejl til hele brugerbasen på én gang. Canary release, der stammer fra minedrift, refererer til at indføre en ny version af softwaren til en lille del af brugergruppen først, som en advarsel mod eventuelle problemer, der ellers kunne gå ubemærket hen.
Der er dog også et behov for at forstå, at validering i produktionen kun er en del af teststrategien. Denne metode kan være særdeles effektiv, når den bruges sammen med andre teststrategier som automatiserede tests og manual validation i udviklingsmiljøer. Det er en praksis, der især er relevant for de organisationer, der arbejder med store, komplekse systemer og hurtig iteration, hvor det er nødvendigt at få feedback hurtigt og kontinuerligt.
Hvordan virksomheder anvender produktionstestning som en del af deres deploymentsystem
Moderne softwareudvikling har i stigende grad fokuseret på at ændre måden, vi ser på test og deployment af software. Traditionelt set er test blevet udført i adskilte miljøer før en applikation bliver sendt til produktion. Dette skaber et vakuum, hvor udviklere stoler mere på at opnå "grønne testresultater" i en kontrolleret og ofte ikke-repræsentativ testmiljø, end de stoler på systemet i sin egentlige produktionskontekst. Denne metode har dog sine begrænsninger og har ført til et opgør med den traditionelle testproces.
En moderne tilgang er at minimere antallet af test, der udføres før deployment, og i stedet udvide deploymentsystemet til at inkludere feedback fra produktionen selv. Denne tilgang betyder, at udviklere i højere grad kan stole på, at deres kode fungerer i den virkelige verden, frem for kun at være afhængige af testmiljøer, der måske ikke helt afspejler produktionsforholdene.
Et eksempel på denne tilgang kommer fra The Guardian, der implementerede produktionstest via et internt værktøj kaldet "prout". Dette værktøj sikrer, at udviklere får feedback om, hvorvidt deres ændringer virker i produktionen minutter efter de er blevet integreret i master-grenen. Dette sker gennem en tæt integration med kildekoden, hvilket betyder, at feedbacken er næsten øjeblikkelig og meget konkret. I stedet for at vente på testresultater fra et lukket, testet miljø, får udviklerne den nødvendige information, mens systemet faktisk er i drift.
Den fundamentale idé bag denne tilgang er at kombinere testning med overvågning. Ved at bruge en produktionstest, der ikke blot afspejler de oprindelige tests, men også kører kontinuerligt under produktionens forhold, kan problemer opdages hurtigt, selv dem, der først viser sig efter længere tids drift. Prodmon, et andet internt værktøj fra The Guardian, er et eksempel på, hvordan test og overvågning kan kombineres. Prodmon tester kontinuerligt to systemlag – API og brugergrænsefladen – og reagerer på problemer ved at udløse alarmer, der advarer udviklingsteamet. Dette betyder, at systemet konstant er under overvågning, og fejl kan opfanges, selv når de er langsomme eller intermitterende.
Denne tilgang bliver mere og mere populær i organisationer, der ønsker at reducere risiciene forbundet med deployment og opretholde et kontinuerligt flow af softwareopdateringer. Et andet eksempel kommer fra Bank of New Zealand (BNZ), der bruger A/B testning direkte på deres produktionssystem. I et tilfælde eksperimenterede de med forskellige varianter af en besked, der opfordrede kunder til at arrangere et tilbagekald af deres boliglån. Resultaterne var interessante – de indså, at en simpel og klar besked, uden forsøg på "clickbait" eller markedsføring, resulterede i de bedste resultater. Dette understreger vigtigheden af ægtheden i den kommunikation, der findes i produktionssystemet, og hvordan reelle testresultater kan udfordre tidligere antagelser om, hvad der fungerer bedst.
En anden interessant case er Etsy, der har valgt at implementere overvågning som en form for testning. Etsy har multiple daglige opdateringer og bruger et automatiseret release system, der gør deployment-processen næsten øjeblikkelig. I et miljø, hvor nye funktioner implementeres hurtigt, bliver overvågning en essentiel del af teststrategien. Ved konstant at observere systemet i drift kan Etsy hurtigt opfange og reagere på eventuelle problemer, før de påvirker brugeroplevelsen.
En af de vigtige indsigter fra disse eksempler er, at produktionstestning ikke kun handler om at fange fejl i software. Det handler også om at optimere systemet baseret på de data, der indsamles fra virkelige brugeres adfærd og systemets præstation under faktiske driftsforhold. Test i produktionen kræver en fundamental ændring i måden, vi tænker på softwareudvikling og kvalitetssikring. Det handler om at omfavne fejl som en naturlig del af systemets livscyklus og reagere hurtigt og effektivt for at sikre, at software ikke kun er teknisk korrekt, men også relevant og funktionel i den virkelige verden.
Det er vigtigt at forstå, at implementering af test i produktion ikke betyder at droppe alle andre testmetoder. Tværtimod, det handler om at kombinere det bedste fra begge verdener: pre-deployment-test for at sikre stabiliteten og pålideligheden af systemet og post-deployment-test for at reagere hurtigt på de problemer, der måtte opstå under reel brug. Desuden er det nødvendigt at have en god balance mellem automatisering og manuel overvågning. Der er stadig behov for at forstå konteksten, især når det gælder kritiske systemer, hvor fejl kan have alvorlige konsekvenser.
Testning i produktion kræver også en ændring i teamets mindset. Udviklere skal være komfortable med at arbejde i et miljø, hvor de ikke nødvendigvis ved, hvordan en funktion vil performe under alle betingelser, før den er ude i produktion. Det kræver også, at virksomheden er villig til at håndtere de potentielle risici, der følger med denne tilgang – nemlig, at produktionen kan blive påvirket, hvis noget går galt. Men med den rette overvågning og hurtige fejlfinding kan fordelene langt opveje risikoen.
Hvordan Balancere Testdybde i DevOps: Forståelse af Testens Rolle og Testerskyldigt Ansvar
I en DevOps-kontekst er det afgørende at finde den rette balance mellem for meget og for lidt testning. En effektiv teststrategi afhænger ikke kun af, hvordan testene udføres, men også af hvordan alle teammedlemmer, inklusive udviklere og forretningsfolk, engagerer sig i testprocessen. Et af de mest anvendelige indikatorer på, om din testning er for dyb eller for overfladisk, er, hvordan ikke-testere vælger at involvere sig i testarbejdet. Ofte vil du opdage, at udviklere undlader at skrive enhedstests, eller at forretningsfolk delegerer accepteringstests til de dedikerede testere. Dette kan føre til et problem med delt ansvar for produktkvalitet, hvilket er vigtigt at være opmærksom på som tester.
Ledelsens feedback kan også afsløre, om du tester for meget eller for lidt. Hvis din teststrategi er for dyb, vil ledelsen sandsynligvis give dig direkte feedback og bede dig om at reducere testdybden. Omvendt, hvis testene er for overfladiske, vil du måske blive bedt om at uddybe detaljerne om, hvad du tester, eller du vil blive konfronteret med spørgsmål om fejl rapporteret af brugerne. Derfor skal testerens beslutning altid være præget af konteksten i organisationen, og indikatorer som "mange", "få", "ofte" eller "meget" bør fortolkes med forsigtighed, da de kan have forskellige betydninger afhængig af situationen.
En nyttig måde at visualisere testens dybde er ved hjælp af pendulummet. Testpendulummet svinger mellem to yderpunkter: "for dybt" og "for overfladisk". Hvis du tester for dybt, vil du sandsynligvis finde mange fejl, men få af dem vil blive løst, og der kan endda være nul fejl i produktion. På den anden side, hvis du tester for overfladisk, vil du ikke finde mange fejl, men du vil ende med flere fejl i produktionen. Ofte vil teamet eller dine kollegaer stille spørgsmål ved, om du har brugt tilstrækkelig tid på at teste. Hvis du tester for meget, kan de også fjerne dele af dit testomfang, mens de, der tester mindre, måske tilføjer scope til deres arbejde.
Langt de fleste testere vil ende med at finde en form for ligevægt, hvor pendulet hænger stille i midten. Denne komfort kan dog være problematisk, da man hurtigt kan blive blind for nødvendigheden af at justere sin tilgang, hvis man har fået tillid til den. En måde at undgå stagnation på er at give sin testtilgang et "bump" mod større dybde. Ved at eksperimentere med nye testheuristikker, anvende forskellige kundepersonaer eller ændre på testdata, kan du opdage nye problemer at udforske sammen med dit team. Små eksperimenter som disse hjælper med at kalibrere din tilgang og finder ud af, hvilke ændringer der skal permanent integreres i din teststrategi.
Testpendulummet er ikke kun et nyttigt værktøj til dem, der er nye i et team eller projekt, men også for de erfarne testere, der har arbejdet med det samme produkt i lang tid. Det minder os om konstant at verificere vores tilgang gennem regelmæssige justeringer, for at sikre at vi forbliver i den rette balance og fortsætter med at levere værdi.
I 2011 blev "Test er død"-diskursen introduceret af Alberto Savoia, da han optrådte som en Grim Reaper under Google Test Automation Conference. Denne opfattelse har fået særlig opmærksomhed i DevOps-samfundet, hvor nogle hævder, at en effektiv DevOps-arbejdsgang ikke kan eksistere med testere. Ofte bliver det ikke selve testaktiviteten, men rollen som tester, der kritiseres. Det betyder dog ikke, at kvalitet bør ignoreres i softwareudvikling. I DevOps er kvalitetsvurderingen ikke kun forbeholdt testeren men bliver også udført gennem brugerinteraktioner med produktionssystemet.
I et TestOps-miljø, som Seth Eliot beskrev i 2011, ændrer testens rolle sig markant. Hvor testning tidligere blev udført under udviklingsprocessen, vurderes kvaliteten nu i den produktionsmiljø, hvor brugerne interagerer med systemet. Denne transformation skaber nye roller for testere. Testeren udfører ikke længere omfattende funktionelle tests, som førhen var ansvar for af udviklerne, men udvikler i stedet værktøjer, der kan køre tests i produktionsmiljøet. Disse værktøjer minder om overvågningssystemer, men med et fokus på at teste højkontekst-scenarier, der påvirker slutbrugeren direkte.
Et andet aspekt ved den ændrede rolle er, at testeren ikke længere nødvendigvis skal udføre de faktiske tests, men derimod udvikle værktøjer og metoder til at analysere systemets kvalitet i produktionen. Dette kan involvere et tæt samarbejde med udviklere og driftsteamet, hvor testeren fungerer mere som en coach og kvalitetsadvokat. Et centralt aspekt i denne ændrede rolle er at forstå produktionsdataene godt, da meget af testarbejdet nu foregår i live-miljøet. Dette kræver tæt kommunikation med relevante afdelinger for at undgå forvirring, især da den test, der udføres, kan påvirke live-rapportering.
I nogle organisationer, hvor denne rolleændring ikke sker, opstår der i stedet en tendens til at fjerne testeren helt. Hvis en organisation mener, at testaktiviteter kan udføres af andre roller i udviklingsteamet eller endda af brugerne selv i produktionsmiljøet, kan det føre til, at testeren helt elimineres. Der er dog ingen faste regler for, hvornår en tester kan fjernes, og beslutningen afhænger af flere faktorer, herunder teamets struktur og det produkt, der udvikles.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский