Zpětná vazba z testování je klíčovým prvkem, který ovlivňuje rozhodování v průběhu vývoje softwaru. Lidé, kteří poskytují tuto zpětnou vazbu, mohou přinést různé druhy informací. Jaké informace lze od těchto lidí získat a jak je správně sbírat? Testování, které probíhá během vývoje, je nejúčinnější, pokud se zaměřuje na objevování neznámého: zkoumání systémových nejasností, přijetí různých rolí a poskytování různých subjektivních zpětných vazeb, pokusy o obcházení bezpečnostních opatření pomocí škodlivé činnosti, nebo zkoumání výkonnostních limitů aplikace. Důraz by měl být kladen na oblasti, kde je zapojeno lidské myšlení: generování nápadů, zpracování výsledků a vytváření názorů. Výsledky testování během vývoje jsou obvykle zaznamenány prostřednictvím konverzace. V prostředí, kde vývojový tým úzce spolupracuje, mohou být problémy a otázky přímo diskutovány. Zajímavý objev může vést k zajímavé diskuzi.
Přechod na přístup DevOps neznamená změnu metod sbírání zpětné vazby. I nadále se používá automatizace i explorace. Avšak DevOps rozšiřuje rámec obou těchto metod tím, že testování tlačí do nových oblastí a zrychluje cykly zpětné vazby. Těsnější vztah s operačním týmem vybuduje jejich dovednosti a obavy, které budou součástí nasazovacího procesu. Konečná fáze tohoto procesu se může přesunout blíže k nasazení nebo "posunout vpravo", což zahrnuje spuštění automatizovaných testů v produkčním prostředí. Místo nasazení kódu na dedikované testovací prostředí může pipeline změnit způsob, jakým se na požádání vytvářejí nová prostředí. Aby vývojový tým podpořil praktiky testování v produkci - například A/B testování, beta testování nebo monitorování jako testování - změní svůj přístup. Mohou začít používat funkční přepínače, což znamená, že některé části aplikace mohou být v produkci aktivovány nebo deaktivovány podle potřeby.
Tato změna přístupu ovlivní úsilí při testování, jak ve vývoji, tak v operacích. Počet lidí, kteří provádějí testování, může vzrůst. Testování se může rozšířit na širší publikum, například prostřednictvím bug bash nebo interní beta verze. Zpětná vazba může být také získána od lidí mimo organizaci, kteří jsou potenciálními nebo stávajícími uživateli produktu. Crowdsourcingová testování mohou oslovit široké publikum a získat obecnou zpětnou vazbu. Soubory pro uživatelské zkušenosti mohou shromáždit hlubší zpětnou vazbu od jednotlivce, který reprezentuje konkrétní uživatelskou skupinu.
Automatizovaná zpětná vazba může být začleněna do nasazovacího pipeline, který vede kódy od jejich zavedení až po nasazení do produkce. Pipeline bude obsahovat veškerou automatizovanou kontrolu, stejně jako skripty pro sestavení a nasazení, které pohybují kód mezi různými prostředími. Na abstraktní úrovni je nasazovací pipeline automatizovanou manifestací procesu, jak dostat software od verze až po uživatele. Testovací praktiky jsou součástí agilního přístupu a pipeline je nástrojem, který pomáhá týmu vizualizovat jejich práci a identifikovat oblasti, kde by mohlo být dosaženo zlepšení. V organizaci orientované na DevOps může pipeline zahrnovat dvě klíčové oblasti: infrastrukturu jako kód a automatizované testování v produkci.
Místo použití skriptů pro nasazení kódu na dedikované testovací prostředí může pipeline obsahovat dynamické vytváření infrastruktury. Jak se operační tým stává více zkušeným v vývojových praktikách, jako je programování a správa verzí, mohou začít psát infrastrukturu jako kód. Odstranění závislosti na konkrétních prostředích pomáhá vývojovému týmu urychlit pipeline a spustit ji paralelně. Na konci pipeline může být přechod na testování automatických testů v produkčním prostředí. Tento krok umožňuje týmu po každé změně aplikace provádět testy chování a výkonu aplikace.
Testování pipeline je stejně důležité jako testování samotného softwaru. I když pipeline vykonává automatizované testy, i ona musí být testována. Vytváření pipeline je úkolem pro vývojáře, kteří se zaměřují na to, aby vše fungovalo. Následně je nutné přemýšlet, jak pipeline může selhat, a zjistit, co se stane, pokud dojde k jejímu přerušení. Pokud dojde k poruše mezi kroky, je třeba zjistit, v jakém stavu bude produkt a platforma. Je důležité ověřit, zda se selhání pipeline promítne do lidí mimo vývojový tým, a jakým způsobem lze tento problém vyřešit.
Je zásadní mít na paměti, že bezpečnost a stabilita pipeline jsou klíčové, zejména pokud zahrnuje kroky, které směřují k produkčnímu prostředí. Často je třeba otestovat návratové skripty a ověřit, že správně fungují, než budou potřeba. Bezpečné a efektivní testování pipeline nejenže zvyšuje efektivitu testování, ale také snižuje riziko chyb v produkčním prostředí.
Jaký je význam Canary Release v softwarovém vývoji a jak minimalizovat rizika při nasazování nových verzí?
V minulosti, při práci v dolech, byli kanárci používáni jako varovný signál pro horníky, kteří čelili riziku otravy toxickými plyny. Tito ptáci, vzhledem ke své menší velikosti a citlivosti, byli schopni zaznamenat změny v kvalitě vzduchu dříve než lidé. Pokud kanárek uhynul, byla to jasná indikace, že je nutné okamžitě opustit nebezpečnou oblast. Tento princip se přenesl i do oblasti softwarového vývoje, kde termín "canary release" označuje malou, kontrolovanou distribuci nové verze softwaru. Smyslem je zjistit potenciální problémy v reálném prostředí ještě před tím, než software dostane širší nasazení.
Canary release je technika, která pomáhá minimalizovat rizika při nasazování nových verzí softwaru. Spočívá v postupném uvedení změn do produkce, kdy je nová verze zpřístupněna pouze malé skupině uživatelů. Tento přístup umožňuje vývojářům monitorovat výkon nové verze v reálném čase a odhalit případné problémy ještě před tím, než dojde k jejímu celkovému nasazení. Tento přístup je známý zejména u velkých technologických firem, jako je Facebook, který používá canary release k testování nových verzí kódu na omezeném počtu serverů. Pokud se nové změny ukážou jako problematické, mohou být okamžitě staženy a nasazeny opravy, než dojde k širší distribuci.
Příkladem tohoto procesu je používání nástroje BOSH, který se využívá například v platformách jako Cloud Foundry. Tento nástroj provádí aktualizace na jednom serveru, ověří výsledek změny a teprve poté pokračuje v implementaci na dalších serverech. Tento způsob poskytuje kontrolu nad změnami a umožňuje včas detekovat případné chyby, což minimalizuje dopad na uživatele.
Výhodou canary release je, že minimalizuje dopad případných chyb na širší uživatelskou základnu. Pokud "kanárek" neuspěje a nová verze se ukáže jako problémová, dopadá to pouze na malou skupinu uživatelů, což umožňuje rychlou nápravu. Tento přístup může mít různé varianty. Například ve společnosti Facebook je proces aktualizace prováděn ve fázích, kde nová verze je nejprve nasazena na několik veřejných serverů, které slouží náhodným uživatelům. Tento způsob poskytuje cenné informace o tom, jak bude nová verze reagovat v reálném prostředí, bez rizika, že dojde k problémům pro celou základnu uživatelů.
Důležitým aspektem tohoto přístupu je, že vývojáři a operační týmy musí mít připravené nástroje pro sledování a správu více verzí softwaru současně. Tato situace může způsobit problémy při správě dat a monitorování systému, protože uživatelé mohou být vystaveni různým verzím aplikace, což znamená, že musí být pečlivě zajištěno, že každá verze funguje správně. V případě Facebooku je tento problém ještě složitější, protože kód musí být navržen tak, aby fungoval nejen s novými, ale i s předchozími verzemi systému.
Přestože canary release pomáhá minimalizovat rizika, přináší také výzvy. Jednou z hlavních nevýhod je, že vzniká potřeba spravovat dvě rozdílné prostředí, což zvyšuje nároky na monitoring systému a zátěž pro vývojový tým. Pro operátory to znamená potřebu neustále sledovat výkon a fungování obou verzí softwaru, což může být časově náročné a vyžaduje pečlivé plánování. Dalším problémem je složitost správy dat, kdy například u velkých systémů, jako je Facebook, je nutné provádět migrace dat mezi různými verzemi a zajistit, že všechna data jsou správně synchronizována.
V souvislosti s canary release se také často používá pojem "staged rollout", což je podobná technika, která se zaměřuje na postupné nasazování nové verze uživatelům. Tento proces se liší od canary release tím, že se soustředí na distribuci nové verze mezi konkrétní skupiny uživatelů, místo aby omezil nasazení na vybrané servery. Google například používá staged rollout pro aplikace na platformě Android, kde je nová verze aplikace postupně uvolňována k určitému procentu uživatelů. Tento způsob také umožňuje detekci problémů v rané fázi, ale přináší určité výzvy, jako je závislost na tom, kdy uživatelé aktualizují své aplikace.
Další metodou, která je v některých případech použitá, je takzvané "dogfooding". Tento termín označuje situaci, kdy zaměstnanci společnosti používají svůj vlastní software, aby odhalili chyby ještě před tím, než bude software zpřístupněn široké veřejnosti. Tento přístup má své výhody, protože umožňuje detekovat problémy v rané fázi, ale zároveň není vždy reprezentativní pro širokou uživatelskou základnu. Zaměstnanci, kteří software vyvíjejí, mohou mít jiný pohled na aplikaci než běžní uživatelé, což může ovlivnit kvalitu testování.
Všechny tyto metody jsou navrženy tak, aby minimalizovaly riziko a zajistily hladké nasazení nových verzí softwaru. Nicméně každý přístup má své výzvy a je důležité mít na paměti, že efektivní řízení verzí a monitorování softwaru jsou klíčové pro úspěšné nasazení a správu moderních aplikací.
Jak efektivně vyrábět konzistentní sérii dřevěných misek: techniky a rutiny profesionálního soustružníka
Jak správně používat integrály v inženýrství: Aplikace a příklady
Jak správně analyzovat síly a momenty v mechanismu?
Jak najít klíčové faktory pro úspěch a jak je využít k dosažení větší hodnoty?

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский