Canary testing

Canary testing är ett sätt att minska risker och validera ny programvara genom att släppa den till en liten andel användare.

Vad är canary testing?

Canary testing är ett sätt att minska risker och validera ny programvara genom att släppa den till en liten andel användare. Med canary testing kan du leverera till specifika grupper av användare åt gången. Även kallat canary deployments, inkrementella, stegvisa eller fasade utrullningar, är canary-releaser en bästa praxis inom devops och mjukvaruutveckling.

Uttrycket har sitt ursprung i frasen "Canary in the coal mine" (kanariefågel i kolgruvan), där gruvarbetare tog med sig en kanariefågel i bur ner i kolgruvan för att upptäcka om nivån av giftiga gaser var för hög. Eftersom fåglar har lägre tolerans mot giftiga gaser än människor fungerade fågelns död som en tidig varning för gruvarbetarna att evakuera. I mjukvaruutvecklingssammanhang är resultatet inte lika dramatiskt – som mjukvaruutvecklare är målet istället att snabbt upptäcka och lösa problem med ny programvara innan det försämrar alla användares upplevelse.

Så genomför du canary testing

Canary-tester kan genomföras med hjälp av blågrön driftsättning för att dela upp trafik på servernivå och gradvis flytta trafik från en version av en applikation till en nyare version med hjälp av en trafikrouter på servernivå.

canary testing blågrön driftsättningUppdelning av trafik per applikationsversion.

Uppdelning av trafik per applikationsversion. Bild: Optimizely 

Eller så kan det göras mer detaljerat på funktionsnivå med hjälp av feature flags för att skicka en andel slutanvändare till den nya versionen av upplevelsen.

canary testing feature flagsSkicka 1 % av användarna till en ny upplevelse med Feature Flag. Bild: Optimizely

Skicka 1 % av användarna till en ny upplevelse med Feature Flag.  Bild: Optimizely 

Så genomför du canary testing

Canary testing gör det möjligt att släppa ny kod eller nya funktioner till en liten delmängd av användare för att verifiera om det finns problem med koden innan den släpps till en större publik. Genom att begränsa lanseringen till en utvald målgrupp och minimera påverkansradien vid nya releaser kan team validera funktionalitet och prestanda innan utrullning till samtliga användare.

Ytterligare en anledning att genomföra canary-tester och produktexperimentering är att utvecklings- och stagingmiljöer ofta inte helt motsvarar produktionsmiljöer. Genom att testa med en liten andel produktionsanvändare (ofta kallat testning i produktion) kan du upptäcka problem som kanske inte hade hittats i staging- eller utvecklingsmiljöer.

Canary testing och feature flags

Canary testing kan genomföras med hjälp av feature flags som gör det möjligt för team att separera kodsläpp från funktionsaktivering och slå på eller av funktioner på distans för specifika grupper, andelar av användare eller alla användare. Med feature flags kan team begränsa lanseringen till bara 1 % av användarna, övervaka nyckeltal som felfrekvens, latens och affärsmått för att säkerställa att den nya funktionen inte har någon negativ effekt.

Om canary-testet upptäcker ett problem under driftsättningsprocessen är det enkelt att inaktivera den nya funktionen eller koden genom att stänga av den aktuella feature flag:en. Canary-releaser kan bidra till att förhindra större driftstopp, förlorade intäkter eller negativ kunduppfattning genom att snabbt ge insikter om en ny funktions prestanda samtidigt som antalet påverkade användare begränsas.

Canary testing och kontinuerlig leverans

Kontinuerlig leverans, som förespråkats av den inflytelserike mjukvaruutvecklaren Martin Fowler, är en mjukvaruutvecklingsdisciplin där programvara kan släppas till produktion när som helst. Den har anammats av ledande mjukvaruföretag världen över vars team nu förväntas snabbt leverera stabil och buggfri programvara till sin användarbas.

Canary testing passar in i metodikerna för kontinuerlig leverans och kontinuerlig integration. Ledande system för kontinuerlig leverans, som hos företag som Facebook, integrerar djupgående övervakning och automatiserad testning i sin canary testing. Om en funktion inte klarar en övervakningskontroll efter att den har driftsatts som en canary till en andel användare, rullas den automatiskt tillbaka. Med kontinuerlig driftsättning och canary-tester kan ett team säkrare lansera ny funktionalitet och kodändringar i stor skala.

Canary testing i Intelligence Cloud

Mjukvaruutvecklingsteam kan nu använda Optimizelys kostnadsfria feature flags för att implementera feature flags för canary testing.

Team kan tillämpa metoderna för kontinuerlig integration och kontinuerlig leverans som används av dagens avancerade utvecklingsteam. Både team – och hela företag – kan dra nytta av snabbare utvecklingscykler och funktionshantering som canary testing för att minska risker.

Optimizely server-side experimentation -kunder kan följa i fotspåren hos världens ledande mjukvaruföretag (som Amazon, Google och Facebook) som validerar sina funktioner hos bara en liten andel användare innan de rullar ut dem bredare.

Optimizely erbjuder även funktionshantering i enterpriseklass genom Optimizely server-side experimentation, en kraftfull lösning för canary testing, kontrollerade funktionssläpp och funktionstester i din produkt eller app.