Testdesign: En afgørende færdighed inden for kvalitetssikring

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Testdesign er det oversete grundlag for vellykket test i produktion. Mens virksomheder fokuserer på automatisering og processer, forsømmer de denne kritiske færdighed. Lær, hvorfor korrekt testdesign forbedrer resultaterne af test i produktion markant, og hvordan du mestrer det.

Test design standard editorial post

En af de vigtigste misforståelser i nutidens testlandskab er, at test i produktion kun kræver tre kompetencesæt: procesekspertise, viden om automatiserede testværktøjer og evner inden for hændelseshåndtering. Disse er vigtige, men noget er iøjnefaldende fraværende – ikke kun på denne liste, men også i ansættelsesledernes bevidsthed – nemlig noget, man skulle tro ville være det mest grundlæggende:

Evnen til at designe en praktisk test til produktionsmiljøer.

Det ville være komisk, hvis det ikke var så alarmerende, at næsten ingen organisation prioriterer ekspertise inden for centrale QA-kompetencer, når de implementerer strategier for test i produktion.

Uanset om en test udføres manuelt eller gennem automatisering i et levende produktionssystem, skal du først vide, hvordan man designer en, der leverer handlingsanvisende indsigt uden at forstyrre brugeroplevelsen, ikke?

Det ville være komisk, hvis det ikke var så alarmerende, at næsten ingen organisation prioriterer ekspertise inden for testdesign, når de implementerer strategier for test i produktion. Uanset om en test udføres manuelt i et kontrolleret miljø eller automatiseret i et levende produktionssystem, skal du først vide, hvordan man designer en, der leverer handlingsanvisende indsigt uden at forstyrre brugeroplevelsen, ikke?

Der er ét åbenlyst problem ved at udelukke ekspertise inden for testdesign fra din tilgang til test i produktion:

Er det ikke afgørende at vide, at den person, der implementerer tests i dit produktionsmiljø, forstår, hvad der udgør en meningsfuld test?

For hvis man automatiserer dårligt designede tests i produktion, får man hurtigere upålidelige data og skaber unødvendig risiko? Og at være "agil", mens man inkompetent tester i produktion, forekommer ikke som en reel forbedring for mig – bortset måske fra scrum masteren.

Betydningen af og disciplinen inden for testdesign, især ved test i produktionsscenarier, har længe trængt til at blive genoplivet. Betragt dette som mit bidrag til den indsats.

Hvad er afgørende for effektiv test i produktion?

Det første skridt mod at mestre test i produktion er at foretage nogle få afgørende sondringer, som uden tvivl allerede intuitivt vil være velkendte for de fleste QA-folk, men som sjældent præsenteres systematisk i forbindelse med produktionstest.

Lad os undersøge disse grundlæggende begreber, som vil forandre din tilgang til test i produktion.

Eksplicit kontra implicit funktionalitet i produktionsmiljøer

Lad os begynde med den afgørende sondring mellem eksplicit og implicit funktionalitet ved test i produktion.

Førstnævnte er det, de fleste af os tænker på som "funktionalitet". Det henviser til funktioner og egenskaber, der formelt er specificeret af Produktet, og hvis formelle specifikation styrer implementeringen i udviklingsafdelingen. Ved test i produktion er disse eksplicitte funktioner typisk fokus for værktøjer til overvågning og observerbarhed.

På grund af dette kan test af eksplicit funktionalitet i produktion virke ligetil, men selv med veldefinerede funktioner er det ikke tilfældet, som vi vil se senere. I det mindste gør den grad af specificitet, som eksplicit funktionalitet besidder, det lettere at opbygge et skelet af produktionstests omkring den (eller illusionen om et sådant skelet).

Implicit funktionalitet i et produktionsmiljø er noget helt andet.

Den består af adfærd og reaktioner på bruger- eller miljøinput, som ikke blev formelt defineret eller forudset. Manglende tilstrækkeligt design af tests for denne implicitte funktionalitet i produktion er langt den største kilde til kritiske fejl, der opdages, efter at produktet er blevet implementeret (den anden er utilstrækkelig test i perifere hardware-, software- og enhedsmiljøer).

Med andre ord:

Test af implicit funktionalitet i produktion kræver betydelig opfindsomhed og fantasi. Det er den virkelig kreative del af strategier for produktionstest.

Test af implicit funktionalitet i produktionsmiljøer kræver en vis grad af djævelsk snilde at blive god til, og desværre kan det ikke læres gennem standardiserede QA-processer.

Ingen mængde agil metode eller automatiserede testrammer vil lære dig, hvordan du effektivt tester implicit funktionalitet i produktion, men korrekt testdesign kan fremme det.

Så hvordan definerer du en testdesignstrategi for implicit funktionalitet i dit produktionsmiljø? Heldigvis kan det lade sig gøre. Men før vi går direkte ind i det spørgsmål, lad os undersøge nogle få yderligere relevante sondringer, der er afgørende for effektiv test i produktion.

Positiv kontra negativ test

Vigtig pointe: Ved test i produktion kræver både positiv og negativ test særlige overvejelser, der rækker ud over traditionelle QA-tilgange.

De fleste, der arbejder med QA, forstår den grundlæggende forskel mellem disse to testtyper:

  • Positiv test i produktion: Validering af, at funktioner fungerer som designet i live-miljøer
  • Negativ test i produktion: Strategisk test af, hvordan dit system reagerer på uventede input uden at forstyrre rigtige brugere

Hvorfor test i produktion er anderledes

Selvom disse forskelle er konceptuelt klare, medfører test i produktion unikke udfordringer:

  • Større konsekvenser: Kanttilfælde påvirker rigtige kunder og forretningsdriften
  • Kompleksitet fra den virkelige verden: Brugeradfærd følger sjældent forudsigelige mønstre
  • Forretningskontinuitet: Test må ikke forstyrre den normale drift

Ud over specifikationen

Specifikationer indeholder sjældent alt, hvad der er nødvendigt for effektiv test i produktion:

At være for afhængig af specifikationen – uanset om den kommer fra Produkt eller Udvikling – begrænser din tænkning. Dette er især problematisk ved test i produktion, hvor brugsmønstre fra den virkelige verden ofte afviger fra specifikationerne.

Dette illustrerer det, jeg kalder "den empiriske fejlslutning": at vente på, at noget udtrykkeligt fortæller dig, hvad du skal gøre, før du kan forstå det.

Succesfuldt testdesign til produktionsmiljøer kræver:

  1. Korrekt parameterisering af funktionalitet
  2. Logisk tænkning om, hvad der er muligt
  3. Overvejelse af både bruger- og miljøinteraktioner

Eksempel fra den virkelige verden: Uventet adfærd

Dengang i softwarekridttiden (dvs. i 80'erne) testede jeg software til dokumentkonvertering og opdagede overraskende funktioner:

Vis billede

Klassisk eksempel: I WordPerfect kunne du indsætte en kommando for linjeafstand midt i et afsnit, som kun påvirkede de efterfølgende linjer og dermed skabte afsnit med to forskellige værdier for linjeafstand.

Moderne ækvivalenter ved test i produktion:

  • Uventede kombinationer af brugertilladelser i cloudapplikationer
  • Uforudsete sekvenser af API-anmodninger i mikroservicearkitekturer
  • Kapløbsbetingelser i miljøer med høj samtidighed

Lad os nu undersøge de tre nøgleparametre, der vil skærpe din tilgang til test i produktion:

1. Test af funktioners anvendelsesområde

Definition: Identifikation af, hvordan brugere kan implementere funktioner i sammenhænge eller på måder, som aldrig blev forestillet under designet.

Hvorfor det er vigtigt for test

Ikke alle begrænsninger forudses under udviklingen. I produktionsmiljøer kan denne mangel have alvorlige konsekvenser.

Ud over simpel validering

Overvej disse grænser, når du tester i produktion:

Husk: Validering af en funktion i produktion handler ikke kun om at bekræfte, at den fungerer som designet, men også om at verificere, at den ikke kan bruges på utilsigtede måder, der kan påvirke systemets stabilitet eller sikkerhed.

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

2. Test af afbrydelser i arbejdsgange i live-systemer

Advarsel: Denne tilgang forudsætter, at du allerede tester definerede arbejdsgange i produktion. Hvis ikke, skal du først håndtere disse grundlæggende forhold!

Ud over den "lykkelige vej"

Undersøg disse kritiske afbrydelser af arbejdsgange, når du tester i produktion:

✅ Afbrudte arbejdsgange: Processen blev startet, men aldrig afsluttet
✅ Annullerede handlinger: Brugeren annullerer udtrykkeligt midt i processen
✅ Genstartede processer: Brugeren forsøger at udføre den samme handling flere gange
✅ Tilbagevenden: Brugeren vender tilbage til tidligere trin med andre input

Implementeringstip til test i produktion

Brug teknikker som funktionsflag til sikkert at kontrollere eksponeringen af disse test i produktionsmiljøer.

Anvendelser fra den virkelige verden

Eksperttip: Disse scenarier beskrives sjældent i specifikationer, men repræsenterer reel brugeradfærd i produktion.

3. Sekventialitet i produktionstest

Udfordringen: I produktionssystemer med flere samtidige processer kan rækkefølgen af handlinger føre til uventede fejl, som er vanskelige at reproducere i testmiljøer.

To kritiske mønstre for sekventialitet

Forudgående medvirkende forhold

Vis billede

  • Definition: Hændelser, der skal finde sted før en fejlende proces
  • Karakteristika: Opstår muligvis kun efter bestemte sekvenser, som naturligt tager dage at gennemføre
  • Eksempel fra produktionen: Brugerrettigheder ændres → cachen udløber → et bestemt API kaldes

Efterfølgende medvirkende forhold

  • Definition: Fejl, der først bliver tydelige gennem senere interaktioner
  • Manifestation: Fejlen forbliver skjult indtil en senere handling
  • Eksempel fra produktionen: Datakorruption opstår ubemærket, indtil en rapport genereres

Hvorfor er dette så udfordrende?

Fastlæggelse af omfanget af sekventialitetstest i produktionen kræver:

  1. Indgående kendskab til systeminteraktioner
  2. Modellering af tilstandsovergange for komplekse processer
  3. Forståelse af både tilsigtede og utilsigtede kombinationer af tilstande

"Ligesom de to værdier for linjeafstand i ét afsnit kan disse uventede tilstande skabe kaos i produktionsmiljøer."

Vigtige værktøjer til sekventialitetstest i produktionen

Hovedpointen: Problemer med sekventialitet udgør en af de mest omfattende kilder til alvorlige fejl i moderne produktionssystemer. Prioritér dette aspekt i din teststrategi.

Konklusionen

Funktionsflag forvandler test i produktionen fra en risikabel praksis til en kontrolleret, datadrevet proces. Ved at adskille udrulning fra frigivelse og tilbyde øjeblikkelige muligheder for tilbageførsel skaber de et sikkerhedsnet, som gør det muligt for team at validere software under virkelige forhold uden at kompromittere brugeroplevelsen eller systemets stabilitet.

Platforme til funktionsstyring i produktionstest

Platforme til funktionsstyring har forvandlet test i produktionen fra en risikabel bestræbelse til en kontrolleret, systematisk proces. Alligevel undlader mange organisationer at udnytte disse værktøjer effektivt i deres strategi for testdesign.

Udviklingen inden for risikostyring i produktionen

Traditionelle tilgange til test i produktionen indebar binære beslutninger – enten var en funktion aktiv for alle, eller også var den aktiv for ingen. Platforme til funktionsstyring ændrer grundlæggende dette paradigme:

  • Detaljeret kontrol: Test funktioner med bestemte brugersegmenter i stedet for udrulninger, der gælder alle eller ingen
  • Øjeblikkelig afhjælpning: Deaktivér problematiske funktioner uden kodeudrulninger eller tilbageførsler
  • Progressiv eksponering: Øg gradvist brugernes eksponering baseret på realtidsdata om ydeevnen

Mere end simple funktionsflag

Selvom grundlæggende brug af funktionsflag har eksisteret i årevis, tilbyder moderne platforme til funktionsstyring kritiske funktioner, der forvandler test i produktionen:

Når platforme til funktionsstyring integreres korrekt i din strategi for testdesign, muliggør de:

  1. Målrettet risikobegrænsning - Begræns eksponeringen for nye funktioner til bestemte brugersegmenter
  2. Validering med rigtige brugere - Test med faktiske brugere i stedet for syntetiske testdata
  3. Øjeblikkelig afhjælpning - Håndtér problemer uden nødudrulninger eller tilbageførsler

Integration med værktøjer til observerbarhed

Den sande styrke ved platforme til funktionsstyring viser sig, når de integreres med systemer til observerbarhed og overvågning:

Traditionel tilgang:

  • Registrering af problemer efter fuld udrulning
  • Manuel verificering af testresultater
  • Analyse efter hændelser

Integration af funktionsstyring:

  • Sammenkædning af funktionsaktivering med systemmålinger
  • Automatiseret ydeevneovervågning pr. funktionsflag
  • Indsigt i funktionernes påvirkning i realtid

Indvirkning i den virkelige verden: Forvandling af test i produktion

Organisationer, der implementerer platforme til funktionsstyring, rapporterer betydelige fordele:

  • Reduceret alvorlighed af hændelser: "Vi kan teste funktioner i produktion længe før en markedsføringslancering. Og hvis en funktion skaber problemer på lanceringsdagen, kan vi bare slå den fra med en nødafbryder – ingen tilbagerulninger." — Chris Guidry, VP of Engineering, O'Reilly Media.
  • Hurtigere udgivelsescyklusser: Teams hos IBM, TrueCar og andre førende virksomheder bruger funktionsstyring til test i produktion og får det, som de beskriver som "sikre, ukomplicerede udgivelser".
  • Udvidet testdækning: Funktionsflag afslører kanttilfælde, som er umulige at simulere i kontrollerede miljøer.

Praktisk implementering i testdesign

For effektivt at integrere platforme til funktionsstyring i din strategi for testdesign:

  1. Design verifikationspunkter, der stemmer overens med overgange mellem funktionsflag
  2. Opret reservesituationer for hver komponent med funktionsflag
  3. Fastlæg ydeevetærskler, der udløser automatisk deaktivering af funktioner
  4. Definér segmentspecifikke testcases for at validere adfærd på tværs af brugerpopulationer
  5. Dokumentér flagafhængigheder for at forhindre kaskaderende fejl

Platforme til funktionsstyring erstatter ikke gennemtænkt testdesign – de forstærker det. Kvaliteten af din test i produktion afhænger stadig grundlæggende af, hvor godt du har designet dine tests.

Almindelige faldgruber, der bør undgås

Selv med robust funktionsstyring er der flere udfordringer:

  • Flaggæld - Forladte eller glemte flag, der skaber teknisk gæld
  • Utilstrækkelig overvågning - Manglende sammenkædning af flagtilstand med systemets ydeevne
  • Overdreven tillid - For tidlig reduktion af test før produktion
  • Indbyrdes afhængigheder mellem flag - Oprettelse af komplekse relationer, der er vanskelige at fejlfinde

Konklusionen

Platforme til funktionsstyring giver stærke muligheder for test i produktion, men de skal integreres gennemtænkt i din overordnede strategi for testdesign. De organisationer, der får mest værdi, implementerer ikke bare disse værktøjer – de gentænker grundlæggende, hvordan testdesign fungerer i et miljø med funktionsflag.

Når funktionsstyring implementeres korrekt som en del af en omfattende tilgang til testdesign, forvandler den test i produktion fra et nødvendigt onde til en konkurrencefordel.

Værktøjer til test i produktion: Implementeringsudfordringer

Selvom funktionsflag og platforme til funktionsstyring udgør grundlaget for test i produktion, har det bredere værktøjsøkosystem sine egne implementeringsudfordringer. Valg og konfiguration af de rigtige værktøjer kræver nøje overvejelse af teamets kompetencer, systemarkitektur og organisatoriske behov.

Værktøjer til overvågning og observerbarhed

Effektiv test i produktion afhænger af omfattende indblik i systemets adfærd:

  • Overvågning af applikationsydeevne (APM)
    Fordele: Giver detaljeret indsigt i ydeevnen på tværs af applikationsstakken.
    Udfordringer: Kræver ofte omfattende instrumentering og kan generere så store datamængder, at mindre teams overvældes.
  • Systemer til loghåndtering
    Fordele: Er afgørende for fejlfinding og retsmedicinsk analyse under test i produktion.
    Udfordringer: Kan generere overvældende datamængder uden korrekte strategier for filtrering og indeksering.
  • Distribueret sporing
    Fordele: Giver synlighed fra ende til anden på tværs af mikrotjenestearkitekturer.
    Udfordringer: Implementeringskompleksiteten øges markant i heterogene miljøer med flere teknologistakke.

Systemer til håndtering af alarmer

Korrekt alarmering er afgørende, når nye funktioner testes i produktion:

  • Platforme til aggregering af alarmer
    Fordele: Samler meddelelser fra flere overvågningssystemer.
    Udfordringer: Fremragende til hændelseshåndtering, men kan være forstyrrende, hvis de ikke konfigureres omhyggeligt for at undgå alarmtræthed.
  • Systemer til håndtering af hændelser
    Fordele: Effektiviserer kommunikationen under hændelser i produktionen.
    Udfordringer: Kræver veldefinerede driftsvejledninger og integrationspunkter for at være effektive og kan skabe ekstraarbejde ved simple implementeringer.

More Articles

Overvejelser ved implementering

Ved implementering af værktøjer til test i produktion bør teams evaluere:

  1. Skalerbarhedskrav - Kan værktøjet håndtere jeres trafikmængder og datavækst?
  2. Integrationsmuligheder - Hvor nemt kan det forbindes med jeres eksisterende værktøjskæde?
  3. Ressourceforbrug - Hvilken ekstra belastning introducerer selve værktøjet?
  4. Teamets ekspertise - Har I de nødvendige færdigheder til at maksimere værktøjets værdi?
  5. Signal-støj-forhold - Kan I udlede meningsfuld indsigt uden at drukne i data?

Almindelige faldgruber ved implementering

  • Værktøjsspredning - Akkumulering af for mange overlappende løsninger
  • Ufuldstændig instrumentering - Manglende kritiske overvågningspunkter
  • Alarmtræthed - Generering af for mange meddelelser, som teams til sidst ignorerer
  • Utilstrækkelig kontekst - Manglende sammenkædning af målinger med brugerens påvirkning
  • Datasiloer - Oprettelse af isolerede overvågningssystemer, der ikke deler oplysninger

At finde den rette balance

De mest vellykkede implementeringer af test i produktion skaber balance mellem:

  • Omfattende overvågning kontra håndterbar kompleksitet
  • Detaljeret indsigt kontra informationsoverbelastning
  • Automatiserede svar kontra menneskelige beslutningspunkter

Ved implementering af testværktøjer i produktionsmiljøer bør I begynde i det små med fokuserede mål og derefter gradvist udvide dækningen, efterhånden som jeres team opbygger ekspertise i både værktøjerne og fortolkningen af de resulterende data.

Belastning, kompleksitet, latenstid

Overvej systemets makrofaktorer: belastning, kompleksitet og latenstid i dit testdesign. Disse kan påvirke udførelsen eller afslutningen af en anmodning, proces, eller hændelse. 

Relevansen af systembelastning burde være indlysende. Hvordan anmodninger eller transaktioner behandles i perioder med høj systemmæssig belastning kan mislykkes (på ethvert trin i transaktionsprocessen).

Dette bør være en standarddel af din testplanlægning. Som vi alle ved, kan belastning også genereres som følge af selve anmodningen—f.eks. en dataforespørgsel, der udløser behandling og transmission af enorme mængder data.

Kompleksitet henviser her primært til kompleksiteten af anmodninger, der sendes til et system. Denne kompleksitet kan bestå af antallet af angivne betingelser (og deres udelukkelser og undtagelser), antallet af databaser (virtuelle eller andre), der er involveret i anmodningerne, eller selve systemets behandlingstopologi.

I forbindelse med denne diskussion bruger jeg latenstid til at angive indførelsen af tidsintervaller i anmodningsprocessen, hvilket ikke er den sædvanlige betydning. Jeg henviser her til brugerens latenstid, ikke systemets egen svartid. 

Med andre ord: Hvordan opfører funktionen eller kapaciteten sig, hvis brugeren når til et bestemt trin i processen og derefter forbliver sat på pause uden at gøre noget? Får systemet timeout (det burde det sandsynligvis)? Skal det bede brugeren om noget? Skal det forblive i denne tilstand til tidernes ende? 

Svarene på disse spørgsmål kan være angivet i specifikationen, men produktet under test kan muligvis ikke opføre sig sådan, hvilket er grunden til, at vi overhovedet tester.

Brugerroller

Selvfølgelig kan slutbrugere interagere med softwaresystemer i forskellige roller. Den samme bruger kan interagere med systemet i forskellige roller afhængigt af sine handlinger. 

Processer og tjenester kan dog også have forskellige roller og tilknyttede privilegier. I begge tilfælde skal du sørge for, at dit testdesign og din planlægning, hvad enten det gælder funktioner eller kapaciteter, tager højde for og afprøver alle mulige rolletilstande.

Hvad er det næste?

Leder du efter flere tips til testdesign? Og vil du styrke dine færdigheder inden for SaaS-vækst og ledelse?

Tilmeld dig vores nyhedsbrev for at få de seneste indsigter fra CTO'er og håbefulde teknologiledere. 

Vi hjælper dig med at skalere mere effektivt og lede stærkere med vejledninger, ressourcer og strategier fra førende eksperter!

Niall Lynch
Niall Lynch was born in Oslo, Norway and raised in Fairbanks, Alaska, 100 miles south of the Arctic Circle. He received a BA in Religion from Reed College, and an MA in Ancient Near Eastern Literature Languages from the University of Chicago. Which of course led directly to a career in software development. Niall began working in software in 1985 in Chicago, as a QA Lead. He knew nothing about the role or the subject at the time, and no one else did either. So he is largely self-taught in the discipline. He has worked over the years in the fields of file conversion, natural language processing, statistics, cybersecurity (Symantec), fraud analysis for the mortgage industry, artificial intelligence/data science and fintech. Learning how to adapt his QA methods and philosophy to these wildly different industries and target markets has been instructive and fruitful for their development. And his. He now lives in Palm Desert, California, where he does SQA consulting and is writing a couple of novels. Send questions or jokes to NiallLynch@outlook.com

You may also like