Hvorfor er kaosteknik vigtigt? Lad os se på, hvorfor kvalitetssikring (QA) overhovedet findes.
Helt enkelt findes kvalitetssikring, fordi den virkelige verden ikke synes at tillade, at vi – uanset hvor hårdt vi prøver – skaber perfekt software, der altid gør det, den er designet og beregnet til at gøre.
Fejl sniger sig ind. Maskiner fortolker vores kode anderledes, end vi havde tænkt os. Ting sker. Kvalitetsteknik findes for at forsøge at finde disse utilsigtede problemer, før vores kunder gør det.
Hvad er kaosteknik?
Kaosteknik er en disciplineret tilgang til at identificere potentielle fejl, før de bliver til driftsafbrydelser. Med kaosteknik designer du eksperimenter med fejlindsprøjtning og sammenligner det, du tror vil ske, med det, der faktisk sker i dine systemer. Du “ødelægger bogstaveligt talt ting med vilje” for at lære, hvordan man bygger mere modstandsdygtige systemer.
Have an account? Log In
Hvorfor er kaosteknik vigtigt?
Fordi systemer ændrer sig. Traditionelt kører kvalitetssikring en række forskellige test og testtyper for proaktivt at opspore disse problemer, længe før koden ender i produktion. Disse test køres i slutningen af en byggeproces og før koden gøres offentligt tilgængelig, typisk ved test i et præproduktions- eller testmiljø kontra test i produktion.
Indtil videre er alt godt, hvis vi arbejder efter en traditionel model for softwareudvikling og implementering. Monolitiske designs og implementeringer på virksomhedsejede maskiner giver en høj grad af kontrol. Denne kontrol medfører en iboende stabilitet. Det gør disse præproduktions- og testmiljøer sammenlignelige med produktionsmiljøerne og gør det muligt at teste effektivt i dem.
Distribuerede systemer er anderledes. Skyen er anderledes. Vi kontrollerer ikke infrastrukturen. Den ændrer sig konstant. Infrastrukturen ændrer sig i overensstemmelse med vores design, hvor individuelle tjenester og mikrotjenester samt belastningsfordeling starter yderligere beregningsnoder eller fjerner dem efter behov. Systemer til automatisk overtagelse ved fejl tilpasser sig for at sikre, at risici håndteres. De konstante ændringer forårsager uventet, fremvoksende adfærd. Det er adfærd, som vi ikke altid kan forudsige, men som vi kan reproducere og fremkalde ved hjælp af en testform kaldet kaosteknik.
Test skal tilpasses, efterhånden som systemer ændrer sig
Vi kan ikke effektivt teste alt det, som vores produktionskode og miljøet vil støde på, ved at teste i et hvilket som helst andet miljø. Vi kan teste mange ting, som traditionel kvalitetssikring er rigtig god til og bør fortsætte med at gøre, selvom noget af det måske nu kan udføres via automatisering i byggepipen. Men den måde, vi har udført kvalitetssikring på, kan ikke teste, hvordan vores distribuerede system vil reagere, når netværket mellem et datalager og flere beregningsnoder bliver overbelastet, og latenstiden stiger, for eksempel.
Vores automatiserede og menneskestyrede test tager ikke højde for dette hurtigt skiftende produktionsmiljø, hvor tjenester starter og lukker ned på grund af efterspørgsel. Den eneste måde at teste, om et distribueret system forbliver pålideligt, når det udsættes for fremvoksende adfærd forårsaget af ændrede produktionsforhold, er at gøre det, som alle testparadigmer gør: prøve det og finde ud af det.
Sådan fungerer kaosteknik: Test og lær gennem fejl
Vi har alle mål for oppetid. Vi ønsker alle at forbedre vores ydeevne. For at gøre det må vi bruge alle tilgængelige ressourcer til at lære så meget som muligt om, hvordan vores systemer håndterer fejl, uanset om det er en brugers manglende evne til at indtaste egnede data i et formularfelt, eller om det er en systemkomponent i skyen, der ikke fungerer som forventet.
“Hvad sker der, når?” er et spørgsmål, vi alle elsker at stille. Derefter prøver vi det og finder ud af det.
Fordi vores systemer og systemdesign er udviklet på en så hidtil uset måde, må vi også udvikle vores testmetoder for bedre at forstå, hvordan vores distribuerede systemer håndterer fejl, og hvordan fejl i komponenter og afhængigheder påvirker hele systemet. Helhedsorienteret test af denne art er det, kaosteknik er udviklet til at udføre, fordi den kan teste hele vores system, sådan som det findes i produktion.
Et kaosteknikprogram begynder i det små med at teste ting, som vi allerede ved eller mener, at vi ved:
- Vil vores overvågningssystem aktivt registrere netværkslatenstid over en bestemt tærskel?
- Vil det udløse en alarm til den vagthavende tekniker eller måske automatisk afhjælpning?
- Er vores konfiguration gradvist ændret over tid, eller starter vi stadig beregningsnoder i overensstemmelse med specifikationerne?
Hvordan klarer hver enkelt instans af tjenesten sig under let testning? Mellem? Hård? De bør alle være ens, og vores belastningsfordeling bør fordele belastningen korrekt mellem dem. Hvad sker der, hvis én instans begynder at modtage en betydeligt større belastning end de andre, fordi vores tjeneste til belastningsfordeling har problemer?
More Articles
Systematisk testning af kaotiske systemer giver afgørende fordele
Vi tester ved hjælp af den videnskabelige metode, begynder i det små og arbejder bevidst. Vi designer tidlige eksperimenter for at minimere påvirkningsområdet, altså det sæt af tjenester og komponenter, som vi mener potentielt kan blive påvirket, og for at minimere omfanget af eksperimentparametrene.
Når det lykkes for os her, kan vi beslutte at bygge videre trin for trin, så vi øger vores tillid til systemet eller udvider vores prioriterede liste over forbedringer, som vi vil gennemføre. Når vi foretager disse forbedringer og tester igen ved hjælp af det samme kaoseksperiment og de samme parametre, vil systemet bestå, og vi vil vide, at det er mere pålideligt, end det var tidligere.
Dette er den eneste måde, vi kan lære, hvordan vores systemer reelt håndterer fejl i produktionen, hvor vores kunder i sidste ende vil opleve resultaterne. Hvis vi kan finde de små problemer nu, før de får mulighed for at udvikle sig til store problemer, kan vi sikre, at der opstår færre og færre systemiske fejl.
Det gør kaosteknik til et fantastisk værktøj til pålidelighed. Det er en disciplin, der hjælper os med at gøre det i skyen og i stor skala, som vi tidligere kunne opnå i mindre, kontrollerede miljøer ved hjælp af traditionel kvalitetssikring.
Det betyder i sidste ende færre produktionsfejl og -udfald i stor skala. Når kaosteknik implementeres og anvendes konsekvent, vil fejl i tjenester og komponenter, som man må forvente kan opstå i skyens kaos, faktisk ikke have nogen indvirkning på vores kunder. De vil aldrig engang vide, at der var en fejl, og det er det egentlige mål.
Hvad sker der nu?
Jeg talte om kaosteknik mere detaljeret i et afsnit af podcasten The QA Lead sammen med Jonathon Wright.
Redaktørens note:
Du kan holde dig opdateret med andre podcasts og artikler fra The QA Lead ved at tilmelde dig nyhedsbrevet.
Du kan også blive medlem og få adgang til The QA Leads fællesskabsforum, hvor du kan dele bedste praksis med andre QA-medarbejdere og kvalitetsingeniører. Vi håber at se dig der!
Relateret læsning: DE 10 BEDSTE SOFTWAREVÆRKTØJER TIL KVALITETSENGINEERING: EN KOMPLET GUIDE




