Skip to main content

Varför är kaosteknik viktigt? Låt oss titta på varför kvalitetssäkring (QA) över huvud taget finns. 

Helt enkelt finns QA eftersom den verkliga världen inte verkar tillåta att vi, oavsett hur hårt vi försöker skapa perfekt programvara som alltid gör det den är utformad och avsedd att göra, faktiskt lyckas. 

Misstag smyger sig in. Maskiner tolkar vår kod annorlunda än vi avsåg. Saker händer. Kvalitetsteknik finns för att försöka hitta dessa oavsiktliga problem innan våra kunder gör det. 

Continue Reading for Free

Create a free account to finish this article, plus get ongoing access to timely insights and practical resources.

Vad är kaosteknik?

Kaosteknik är ett disciplinerat tillvägagångssätt för att identifiera potentiella fel innan de blir driftstörningar. Med kaosteknik utformar du experiment där fel injiceras och jämför vad du tror kommer att hända med vad som faktiskt händer i dina system. Du ”förstör saker med avsikt” för att lära dig bygga mer motståndskraftiga system.

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

Varför är kaosteknik viktigt?

Eftersom systemen förändras. Traditionellt kör QA en mängd olika tester och testtyper för att proaktivt söka efter dessa problem, långt innan koden hamnar i produktion. Dessa tester körs i slutet av ett bygge och innan koden distribueras offentligt, vanligtvis i en scen- eller testmiljö jämfört med testning i produktion. 

Så långt är allt bra om vi arbetar enligt en traditionell modell för programvaruutveckling och distribution. Monolitiska konstruktioner och distributioner till företagsägda maskiner ger en hög grad av kontroll. Denna kontroll medför stabilitet. Det gör dessa scen- och testmiljöer lika produktionsmiljöerna och gör det möjligt att testa framgångsrikt i dem.

Distribuerade system är annorlunda. Molnet är annorlunda. Vi kontrollerar inte infrastrukturen. Den förändras hela tiden. Infrastrukturen förändras enligt vår utformning, där individuella tjänster och mikrotjänster samt lastbalansering startar ytterligare beräkningsnoder eller tar bort dem efter behov. Reservsystem justerar sig själva för att säkerställa att riskerna hanteras. De ständiga förändringarna orsakar oväntade, framväxande beteenden. Det är beteenden som vi inte alltid kan förutsäga, men som vi kan återskapa och framkalla med en form av testning som kallas kaosteknik.

Testningen måste anpassas när systemen förändras

Vi kan inte effektivt testa allt som vår produktionskod och miljön kommer att möta genom att testa i någon annan miljö. Vi kan testa många saker, sådant som traditionell QA gör mycket bra och bör fortsätta att göra, även om en del kanske nu kan göras genom automatisering i byggpipelinen. Men det sätt på vilket vi har utfört QA kan inte testa hur vårt distribuerade system reagerar när nätverket mellan ett datalager och flera beräkningsnoder överbelastas och fördröjningen ökar, till exempel.

Våra automatiserade och manuellt utförda tester tar inte hänsyn till denna snabbt föränderliga produktionsmiljö där tjänster startas och stängs av beroende på efterfrågan. Det enda sättet att testa om ett distribuerat system förblir tillförlitligt när det utsätts för framväxande beteenden som orsakas av förändrade produktionsförhållanden är att göra det som alla testmetoder gör: prova och ta reda på det.

Så fungerar kaosteknik: testa och lär genom fel

Vi har alla mål för drifttid. Vi vill alla förbättra vår prestanda. För att göra det måste vi använda alla tillgängliga resurser för att lära oss så mycket vi kan om hur våra system hanterar fel, oavsett om det handlar om att en användare inte anger lämpliga uppgifter i ett formulärfält eller om att en systemkomponent i molnet inte fungerar som förväntat.

 ”Vad händer när?” är en fråga som vi alla älskar att ställa. Sedan provar vi och tar reda på det.

Eftersom våra system och systemkonstruktioner har utvecklats på ett så enastående sätt måste vi också utveckla våra testmetoder för att bättre förstå hur våra distribuerade system hanterar fel och hur fel i komponenter och beroenden påverkar hela systemet. Holistisk testning av detta slag är vad kaosteknik finns till för, eftersom den kan testa hela vårt system så som det existerar i produktion.

Ett program för kaosteknik börjar i liten skala genom att testa sådant som vi redan vet eller tror oss veta:

  • Kommer vårt övervakningssystem aktivt att upptäcka nätverksfördröjning över ett specifikt tröskelvärde? 
  • Kommer det att initiera ett meddelande till den tjänstgörande ingenjören eller kanske automatisk åtgärd? 
  • Har vår konfiguration förändrats över tid, eller startar vi fortfarande beräkningsnoder enligt specifikationerna?

Hur klarar sig varje instans av tjänsten vid lätt belastningstestning? Medelhög? Hög? De bör alla vara likadana och vår belastningsbalansering bör fördela belastningen mellan dem på lämpligt sätt. Vad händer om en instans börjar ta emot en betydligt högre belastning än de andra på grund av att vår belastningsbalanseringstjänst har problem?

Systematisk testning av kaotiska system ger viktiga fördelar

Vi testar med hjälp av den vetenskapliga metoden, börjar i liten skala och agerar medvetet. Vi utformar tidiga experiment för att minimera spridningsradien, det vill säga mängden tjänster och komponenter som vi tror kan påverkas, samt för att minimera omfattningen av experimentets parametrar. 

När vi har lyckats här kan vi besluta oss för att bygga steg för steg, öka vår tilltro till systemet eller bygga ut vår prioriterade lista över förbättringar som vi ska genomföra. När vi har genomfört dessa förbättringar och testar på nytt med samma kaosexperiment och parametrar kommer systemet att klara testet, och vi vet att det är mer tillförlitligt än tidigare.

Detta är det enda sättet vi kan lära oss hur våra system faktiskt hanterar fel i produktion, där våra kunder i slutändan kommer att uppleva resultaten. Om vi kan hitta de små problemen nu, innan de får möjlighet att utvecklas till stora problem, kan vi se till att färre och färre systemomfattande fel inträffar.

Detta gör kaosteknik till ett fantastiskt verktyg för tillförlitlighet. Det är en disciplin som hjälper oss att göra det i molnet och i stor skala som vi tidigare kunde åstadkomma i mindre, kontrollerade miljöer med traditionell kvalitetssäkring.

Detta innebär i slutändan färre storskaliga produktionsfel och driftavbrott. När kaosteknik faktiskt implementeras och används konsekvent kommer tjänste- och komponentfel som förväntas inträffa i molnets kaos inte att påverka våra kunder. Faktum är att de aldrig ens kommer att veta att ett fel inträffade, och det är det verkliga målet.

Vad händer härnäst?

Jag pratade mer detaljerat om kaosteknik i ett avsnitt av podden The QA Lead med Jonathon Wright.

Redaktörens kommentar:

Du kan hålla dig uppdaterad med andra poddar och artiklar från The QA Lead genom att anmäla dig till nyhetsbrevet.

Du kan också bli medlem för att få tillgång till forumet för The QA Lead-communityt, där du kan dela bästa praxis med andra QA-specialister och kvalitetsingenjörer. Hoppas att vi ses där!

Relaterad läsning: DE 10 BÄSTA PROGRAMVARUVERKTYGEN FÖR KVALITETSARBETE: EN KOMPLETT GUIDE