QA - Bloggen

Continuous test i produktion

Skriven av QESTIT Team | 2024-06-04 11:43

Den huvudsakliga anledningen till att kontinuerliga metoder inom utveckling av IT-system har slagit igenom stort är förmågan att kombinera snabbare leveranser, minskade kostnader och minskad risk. Idag finns det modernare varianter av Continuous Delivery (CD) som ytterligare maximerar leveranshastigheten och samtidigt minskar risken. I det här blogginlägget beskriver jag progressive delivery och hur det fungerar som kontinuerlig test i produktion. 

 

Progressive Delivery

 

Progressiv leverans är en process för att kontinuerligt leverera förändringar till ett IT-system i produktion. Först till en väldigt begränsad användargrupp och sedan till allt större målgrupper. Målet med progressiv leverans är att maximera leveranshastigheten och samtidigt minska risken genom att initialt begränsa vilka som kommer åt den nya funktionaliteten, för att därefter kontrollerat dirigera över fler och fler användare.

 

En progressiv leveransmetod möjliggör att ny kod och funktionalitet kommer slutanvändarna till nytta snabbare genom att korta ner tiden för utveckling och test. Denna metod passar utmärkt vid en hög grad av automatiserade tester. Efter att alla automatiserade tester gått igenom med godkänt resultat kan kodförändringen levereras automatiskt ut i produktion.

 

För att begränsa risken görs leveransen först till en mindre användargrupp med låg risk och utvärderas, innan den blir tillgänglig för större och mer riskfyllda målgrupper. Först kan exempelvis endast organisationens egna mjukvarutestare få tillgång till förändringen, sedan alla internt i hela organisationen. Därefter får publika betatestare tillgång och slutligen, ifall inga defekter eller andra oönskade egenskaper upptäcks, får alla användare den.

 

Den första användargruppen som får tillgång till nya funktioner och kodändringar kan bestå av grupper av människor som har anmält sig som betatestare, eller av expertanvändare eller av människor som använder produkten för små projekt som inte är tidskänsliga. Det finns många olika varianter med olika namn när det gäller inkrementell utrullning.

 

Det finns flera svenska företag, framför allt inom spelbranschen, som använder en progressiv leveransmetod för att rulla ut ny kod.

 

 

Canarying

 

Progressiv leverans används också vid canarying (kanarieleverans). En kanarieleverans är ett test som används för att analysera hur en programuppdatering kan påverka användarnas beteende. Detta görs genom att skapa en kanariegrupp, eller en liten delmängd av användarbasen. Kanariegruppen kommer från ett slumpmässigt urval av 1% av alla användare. Denna grupp kommer att ha den nya funktionen aktiverad medan de andra 99% kommer att fortsätta använda den gamla funktionen.

Den här metoden kallas för canarying för att på samma sätt som kanariefågeln i en kolgruva är slutanvändaren som väljs för att ta emot ny kod i en kanarieleverans omedveten om att den används för att ge en tidig varning om att något är fel. Eftersom kanarien bara distribueras till ett litet antal användare är dess inverkan relativt liten och förändringar kan snabbt backas ut om den nya koden skulle visa sig ha defekter eller andra oönskade egenskaper.

 

Efter kanarieleverans ökas användargruppens storlek successivt allt eftersom förtroende för systemets kvalitet, stabilitet och funktionalitet ökar.

 

 

Progressive Delivery v.s. Continuous Delivery

 

Progressiv leverans liknar kontinuerlig leverans (CD). Båda metoderna innebär att få ut ändringar och uppdateringar omedelbart och kontinuerligt istället för att samla dem och vänta på nästa produktrelease.

 

Skillnaden är dock att progressiv leverans erbjuder ytterligare kontroll genom att använda funktionsflaggor (feature flags). Mer om funktionsflaggning i nästa artikel.

 

För närvarande kan vi nöja oss med att funktionsflaggning innebär att omsluta kodförändringar med en flagga som anger vilka attribut som behöver vara uppfyllda för att koden ska köras.

 

Det är den här flaggningen som möjliggör att slå på eller stänga av ny kod och funktionalitet för olika användargrupper och att förändringar snabbt kan backas ut på applikationsnivå. Dessa två är viktiga för alla organisationer som vill rulla ut kod genom en progressiv leveransmodell, och möjliggöra kontinuerlig testning av frekventa leveranser i produktion på ett kontrollerat sätt.

 

 

 

Fördelar med progressiv leverans

 

Organisationer som använder progressiv leverans får följande fördelar:

 

  • Korta ner tiden för utveckling och test utan ökad risk.
  • Möjligheten att testa nya funktioner i en produktionsmiljö.
  • Möjligheten att samla in användarfeedback tidigt och göra förbättringar innan det har rullats ut till alla användare.
  • Möjlighet för icke-ingenjörsteam, som marknadsföring eller affärsutveckling, att släppa funktioner för användare på just-in-time-basis.

 

Att ha en mer holistisk syn och att optimera mer än bara ett steg i utvecklingscykeln är nödvändig för att skapa effektivitet och för att hjälpa oss gå från idé till kundanvändning på några dagar, eller till och med timmar, utan att bygga kvalitetsskuld. Continuous är ett bra arbetsätt för det genom att tillåta moderna metoder och tekniker från flera discipliner, vara skalbar, anpassa sig till miljön och fokusera på affärsvärde.