
Business & Integration IT konzultant
V rýchlo sa rozvíjajúcom prostredí vývoja softvéru prešla spolupráca medzi vývojovými a prevádzkovými tímami s príchodom DevOps revolučnou transformáciou. Táto zmena nielenže zefektívnila proces dodávania softvéru, ale výrazne ovplyvnila aj stratégie testovania zabezpečenia kvality (QA).
V tomto článku sa budeme venovať hlbokému vplyvu DevOps na testovanie QA a preskúmame kľúčové stratégie, ktoré organizácie prijímajú na zabezpečenie rýchlosti aj kvality vydávania softvéru.
DevOps, čo je skratka pre Development and Operations (vývoj a prevádzka), je prístup založený na spolupráci, ktorý spája vývoj softvéru (Dev) a prevádzku IT (Ops) s cieľom zefektívniť životný cyklus vývoja softvéru (SDLC). Hoci sa DevOps zameriava predovšetkým na zrýchlenie procesu dodávania softvéru a zlepšenie spolupráce medzi vývojovými a prevádzkovými tímami, má významný vplyv aj na testovanie softvéru.
DevOps kombinuje princípy agilného vývoja, kontinuálnej integrácie a kontinuálneho dodávania s cieľom zefektívniť proces vývoja softvéru od programovania až po nasadenie. Zahŕňa používanie nástrojov a technológií na automatizáciu testovania, nasadzovania a monitorovania softvérových aplikácií, čo pomáha znižovať počet chýb, zvyšovať efektívnosť a urýchľovať čas uvedenia na trh.
Stratégia DevOps podporuje kooperatívnu a iteratívnu spoluprácu medzi vývojovými a prevádzkovými tímami počas celého životného cyklu vývoja softvéru, od plánovania cez testovanie až po nasadenie. Vďaka tomu je zaručené, že hotový produkt bude mať vynikajúcu kvalitu a uspokojí potreby používateľov.
Podpora spolupráce medzi vývojom, prevádzkou a ostatnými zainteresovanými stranami.
Continuous Testing je o testovaní aplikácie od jej počiatočnej fázy a automatizácii testov počas celého životného cyklu vývojového procesu. To pomáha tímu analyzovať kvalitu produktu v každej fáze procesu a umožňuje zainteresovaným stranám prijímať informované rozhodnutia.
CT tiež znižuje riziko dodania funkcií, ktoré sa pokazia v produkcii, čím sa spoločnosti ušetrí značné množstvo času, nákladov a úsilia. Kľúčom k úspechu je testovať čo najskôr a nájsť chyby čo najskôr.
Tu je niekoľko vecí, ktoré treba zvážiť pri integrácii CT do súčasného procesu testovania:
Ak sa má testovanie vykonávať v každej fáze vývojového procesu, tímy musia mať dostatočné zdroje: hardvér, softvér a kvalifikovaných inžinierov. Pred zavedením CT tím spoločne rozhodne o stratégii testovania a obstará potrebné zdroje.
CT sa zosúlaďuje s testovaním Shift-Left, pričom sa zameriava na včasné začatie testovania hneď od fázy požiadaviek a pokračuje počas celého procesu vývoja a vydávania. Súčasťou tohto zosúladenia je vystaviť vývojárov a testerov rôznym činnostiam, aby sa im posilnili právomoci. Napríklad vývojár by mal venovať viac pozornosti písaniu lepších unit testov a testeri sa môžu zapojiť do vývojových činností. To pomáha urýchliť vývojové cykly a buduje multifunkčné tímy, ktoré sa dokážu prispôsobiť akémukoľvek prostrediu.
Pred zavedením CT vykonaj audit svojej súčasnej stratégie testovania. Získaj prehľad o súčasnom pokrytí testov, type vykonávaného testovania – manuálne vykonávanie testov pomocou skriptov, automatizované a prieskumné testy. Identifikuj svoje súčasné slabé miesta, analyzu trendy v produkčných chybách a zisti, ako ich môžeš zmierniť pomocou CT.
Jedným z častých problémov, s ktorými sa tímy stretávajú pri implementácii CT, je snaha automatizovať všetko, aj keď to neprináša žiadnu hodnotu a z dlhodobého hľadiska by sa to mohlo ukázať ako nočná mora údržby. Napríklad automatizácia funkcií s vysokým stavom fluktuácie by mohla viesť k neefektívnemu využívaniu zdrojov, pretože môžu stráviť viac času údržbou testov ako ich vykonávaním. Automatizáciu používaj pri opakovaní všedných úloh, nasadzovaní buildov do rôznych prostredí a vykonávaní rôznych druhov testovania, ktoré by sa inak pri manuálnom vykonávaní vykonávali ťažko alebo by potrebovali veľa času.
Na efektívnu implementáciu CT musia tímy investovať do používania správnych nástrojov na rôzne činnosti. Môže ísť o nástroje na unit testovanie, testovanie používateľského rozhrania, testovanie API, testovanie výkonu, testovanie bezpečnosti a testovanie prístupnosti.
Continuous Integration je základný osvedčený postup DevOps spočívajúci v automatizácii integrácie zmien kódu do centrálneho úložiska, kde sa builduje a spúšťa niekoľkokrát denne. Jednou z kľúčových výhod implementácie CI je rýchle odhalenie chýb a ich jednoduchšie lokalizovanie.
Implementácia CI pipeline prináša pre QA rôzne výhody:
Ľubovoľný počet ľudí môže viackrát denne kontrolovať kód do systému na správu verzií. Neexistuje žiadna závislosť a každý check-in má časové značky, aby sa vedelo, kto presne napísal kód a posunul ho do konkrétnej vetvy (branche). To znamená, že testeri aj vývojári môžu písať aplikačný aj automatizačný kód a kontrolovať ho do rôznych vetiev bez akéhokoľvek rušenia.
Po skontrolovaní kódu sa automaticky spustia testy na získanie rýchlej spätnej väzby o builde, takže chyby sa dajú rýchlo nájsť a čo najskôr opraviť. To umožňuje testerom rýchlo zistiť, v čom je problém, nahlásiť ho a prijať potrebné opatrenia na riešenie a opravu chyby.
CI zlepšuje celkovú inžiniersku komunikáciu a zodpovednosť, čo umožňuje lepšiu spoluprácu medzi vývojom, testovaním a prevádzkou v tíme DevOps. Pull requesty sú prepojené s procesom CI, čo pomáha získať prehľad o kóde od ostatných členov tímu. To umožňuje vývojárom a testerom spolupracovať na vetvách funkcie, ako funkcia postupuje potrubím CI. Automatizované testy sa musia riadiť rovnakým procesom pull request.
V rámci procesu CI testeri konfigurujú regresné testy, ktoré sa majú automaticky spustiť pri nasadení buildu do rôznych prostredí. Tým sa zabezpečí, že nové zmeny nerozbijú existujúce funkcie. Tieto testy sú nastavené tak, aby sa spustili čo najrýchlejšie, aby sa získala rýchlejšia spätná väzba o nasadení.
Keď sa automatizované testy spúšťajú v každej fáze CI pipeline, generujú sa rozsiahle protokoly s časovými markermi pre budúce použitie. To je užitočné najmä pre organizácie, ktoré musia dodržiavať súlad s predpismi. Protokoly slúžia ako bohatý zdroj informácií počas bežných auditov, aby sa zabezpečilo, že nedochádza k porušovaniu zásad a postupov.
Jednou z neoddeliteľných súčastí DevOps je rýchle dodávanie funkcií. Continuous Delivery to umožňuje tým, že tímom poskytuje možnosť uvoľniť aplikáciu v ľubovoľnom časovom okamihu. Okrem toho, že aplikácia musí prejsť automatizovanými testami, musí mať všetky konfigurácie potrebné na jej nasadenie do produkcie. CD zahŕňa všetko od nápadu cez zostavenie až po pripravenosť na dodanie do produkcie.
Úlohou QA v CD pipeline je zabezpečiť kontinuálne testovanie počas celého procesu vývoja. Testeri používajú rôzne nástroje na smoke testing, regresné testovanie, testovanie API, testovanie používateľského rozhrania, výkonnostné a bezpečnostné testovanie. Nástroje im uvoľňujú čas na prieskumné testovanie a testovanie založené na rizikách s cieľom zmierniť identifikované riziká. Prostredie CI tiež zabezpečuje automatizované kontroly v rôznych fázach procesu buildu, čo poskytuje rýchlejšiu spätnú väzbu o kvalite funkcií.
V iných agilných prístupoch má vývojár na starosti kódovanie, vytváranie funkcie, písanie a spúšťanie unit testov a testeri vykonávajú automatizované a manuálne testy tejto funkcie. DevOps zámerne stiera hranice medzi týmito rozdelenými úlohami a núti k spolupráci. Vývojári si začnú budovať mentalitu neustálej kontroly chýb vo svojom kóde. Testeri zvyšujú svoju zodpovednosť od overovania aplikácie až po zabezpečenie jej nasaditeľnosti za každých okolností. Môžu dokonca podľa potreby opravovať kód. Všetky tieto časti spolupracujú na zabezpečení rýchleho dodania funkcií. Zameranie na zákazníka riadi prácu celého tímu.
Vysoká úroveň spolupráce medzi vývojármi, testermi a prevádzkovým tímom umožňuje testerom monitorovať aplikáciu v produkcii a využívať údaje na pomoc zainteresovaným stranám pri prijímaní rozhodnutí.
Tu je niekoľko spôsobov integrácie QA – zabezpečenia kvality do prostredia DevOps:
Po prvé, organizácie by mali odstrániť hranice medzi vývojármi, QA a prevádzkovými tímami. To by zahŕňalo reštrukturalizáciu existujúceho tímu QA tak, aby bol v súlade s cieľmi DevOps.
Tímy sa musia zlúčiť do jedného technického tímu, ktorý sa zameria na rôzne činnosti s cieľom dodať funkcie načas. Tieto technické tímy musia komunikovať, spolupracovať a optimalizovať svoje úsilie s cieľom rýchlo nájsť chyby a opraviť ich pred nasadením. Aj testeri by sa mali zapojiť do procesu vývoja už na začiatku, počnúc fázou požiadaviek (kde môžu spresniť všetky nejasnosti v požiadavkách) tým, že zabezpečia, aby mal celý tím jasno v tom, ako sa bude funkcia vyvíjať, testovať, nasadzovať a monitorovať po spustení. Priebežné testovanie sa stáva súčasťou zodpovednosti každého z nás.
Po druhé, DevOps a automatizácia idú ruka v ruke – bez jednej nebude fungovať druhá. Práve tu môžu ľudia a nástroje pomôcť pri prinášaní kratších a spoľahlivejších cyklov releasovania. Testeri hrajú v procese DevOps neoddeliteľnú úlohu tým, že začínajú automatizáciu na začiatku procesu, vďaka čomu sa chyby nájdu skôr ako neskôr.
Ďalším dôležitým faktorom určujúcim úspech integrácie QA do procesu DevOps je mať k dispozícii metriky, ktoré dokážu kvantifikovať hodnotu. Prečítaj si v našom minulom článku viac o QA metrikách potrebných pre dodanie kvalitného produktu.
Testeri vykonávajú testy súbežne s rôznymi činnosťami v procese DevOps. Aby bolo paralelné testovanie efektívne, musia vytvoriť štandardizované testovacie prostredia a mať dostatočné hardvérové a softvérové zdroje na čo najrýchlejšie spustenie mnohých testov.
DevOps zahŕňa viacero nástrojov, procesov, automatizovaných testov a prostredí. Údaje sa získavajú z rôznych fáz procesu vývoja a analyzujú sa, aby sa zabezpečilo, že systém bude vždy fungovať na optimálnej úrovni. Prevádzkový tím zvyčajne spolupracuje s vývojármi a testermi na zabudovaní monitorovacích a analytických funkcií priamo do vyvíjanej aplikácie. Je nevyhnutné, aby testeri vedeli používať nástroje, ako sú Splunk, Kibana, Graphite a Firebase, ktoré sa používajú na tento účel, aby podporili prevádzkový tím.
Jedným z najväčších problémov v organizáciách je, že každý tím postupuje podľa iného procesu a používa odlišnú sadu nástrojov na vykonanie rovnakej úlohy. Keď to zostane nepovšimnuté, vedie to k zbytočnému plytvaniu nákladov, času a úsilia organizácie.
Pri DevOps sa tímy musia spoločne dohodnúť na spoločnom súbore procesov a nástrojov, ktoré budú všetci dodržiavať. Po rozhodnutí bude každý člen tímu vedieť, aký proces má dodržiavať a aké nástroje má v danom okamihu vývojového procesu použiť.
Organizácie musia zdôrazňovať dôležitosť získavania priebežnej spätnej väzby od tímu počas implementácie. Denné stand up-y, tímové stretnutia, retrospektívne stretnutia a plánovacie stretnutia sú skvelými príkladmi styčných bodov na získavanie spätnej väzby. Na jej základe tímy upravia svoj prístup pre ďalšiu iteráciu. Tento nepretržitý cyklus build->measure->learn (overené učenie) pomáha zlepšovať proces DevOps.
Na úspešnú implementáciu DevOps musia tímy spolupracovať a mať prehľad o svojej práci. V každom okamihu by mali mať tímy možnosť vizuálne vidieť priebeh vývojového procesu. Organizácie môžu používať nástroje a informačné panely, ktoré zvýrazňujú dôležité metriky, ako je rýchlosť tímu, zaznamenané/odstránené chyby, počet vykonaných testov, pokrytie testov a ďalšie metriky dôležité pre tím.
Zručnosti testerov sa musia prispôsobiť procesu DevOps. Začína sa to školením všetkých na automatizáciu full-stack testov, ktorá zahŕňa písanie automatizovaných testov, ako sú unit testy, testy API, testy používateľského rozhrania a back-end testy. Manuálne testovanie bude stále relevantné, ale dôraz sa presunie od výlučne manuálneho vykonávania testovacích prípadov k vykonávaniu testovania založeného na rizikách a prieskumného testovania. To sa vykonáva súbežne s automatizovanými testami.
Napokon, na úspešný prechod na DevOps by organizácie mali zaviesť tri základné procesy, ktoré sme popísali vyššie v kľúčových princípoch DevOps. Taktiež môžeš využiť aj Azure DevOps. Azure DevOps predstavuje súbor služieb, ktoré možno použiť na implementáciu postupov DevOps. Poskytuje celý rad nástrojov na nepretržitú integráciu, nepretržité dodávanie produktu, riadenie verzií a monitorovanie stavu.
Prečítaj si náš článok o budúcnosti testovania softvéru – QAOps.
Nástup DevOps zmenil spôsob, akým sa pristupuje k vývoju a testovaniu softvéru, a v dôsledku toho ovplyvnil úlohu tradičných softvérových testerov nasledujúcimi spôsobmi:
1. Viac spolupráce a zapojenie viacerých funkcií
S DevOps sa zvýšil význam koordinácie medzi vývojovými a prevádzkovými tímami. To znamená, že softvéroví testeri už nie sú zodpovední len za testovanie, ale aj za spoluprácu s vývojármi s cieľom zabezpečiť, aby bol kód pred nasadením správne otestovaný.
2. Zvýšený dôraz na automatizáciu
Automatizácia je kľúčovou zložkou DevOps, ktorá ju využíva na zlepšenie procesu dodávania softvéru. To znamená, že softvéroví testeri budú musieť lepšie rozumieť nástrojom na automatizáciu testovania a vedieť ich efektívne implementovať.
3. Väčšie zapojenie do životného cyklu vývoja softvéru
Vďaka DevOps už testovanie softvéru nie je len samostatnou fázou, ktorá nastáva po dokončení vývoja. Namiesto toho je integrované do celého životného cyklu vývoja softvéru a softvéroví testeri budú musieť byť zapojení do fáz plánovania, návrhu, vývoja a nasadenia.
4. Väčší dôraz na priebežné testovanie
DevOps zahŕňa kontinuálnu integráciu a dodávanie, čo znamená, že softvér sa uvoľňuje v menších, častejších prírastkoch. Aby sa zabezpečilo, že nové funkcie a aktualizácie budú pred nasadením dôkladne otestované, musia softvéroví testeri vykonávať kontinuálne testovanie.
5. Väčší dôraz na soft skills
Pri DevOps sa kladie väčší dôraz na spoluprácu, komunikáciu a tímovú prácu. To znamená, že softvéroví testeri budú musieť mať silné komunikačné a interpersonálne zručnosti, aby mohli efektívne pracovať s multifunkčnými tímami.
Dúfame, že otázku „čo je DevOps“ máš už zodpovedanú. Vplyv DevOps na stratégie testovania zabezpečenia kvality je transformačný. Prijatím kultúry spolupráce, automatizácie a kontinuálneho testovania môžu organizácie dosiahnuť krehkú rov5.nováhu medzi rýchlosťou a kvalitou pri vývoji softvéru.
Tímy testerov zohrávajú v tejto zmene kľúčovú úlohu a prispievajú k vytváraniu odolného, spoľahlivého a kvalitného softvéru v dynamickom prostredí DevOps. Keďže organizácie sa naďalej vyvíjajú, integrácia princípov DevOps do stratégií testovania QA bude mať zásadný význam pre udržanie konkurencieschopnosti.
Ak vieš po nemecky a si IT tester alebo automatizovaný tester, pozri si naše firemné benefity a reaguj na voľné pracovné miesta.