Business & Integration IT konzultant
Úloha a vplyv DevOps na testovanie
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.
Čo je DevOps?
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.
DevOps – prečo, čo, ako a kto?
- Prečo: Zvýšenie obchodných prínosov znížením transakčných nákladov spojených s realizáciou postupných zmien.
- Čo (cieľ): Jasnosť, konzistentnosť a spolupráca s cieľom pochopiť zmeny, ktoré každá verzia prináša do prostredia IT a zákazníkov.
- Ako: Metodika a nástroje, ktoré sa naďalej vyvíjajú.
- Kto: Programátori, QA a prevádzkový tím, DevOps inžinieri.
Kľúčové princípy DevOps a vplyv na testovanie
1. Spolupráca
Podpora spolupráce medzi vývojom, prevádzkou a ostatnými zainteresovanými stranami.
2. Priebežné testovanie (Continuous Testing – CT)
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:
- Maj dostatok zdrojov
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.
- Zosúladenie s Shift-Left
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.
- Identifikuj medzery v existujúcom testovacom procese
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.
- Múdro používaj automatizáciu
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.
- Maj k dispozícii správne nástroje na automatizáciu
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.
3. Kontinuálna integrácia (Continuous Integration – CI)
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:
- Odstránenie závislosti od kontrolných vstupov kódu
Ľ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.
- Rýchlejšia spätná väzba
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.
- Zvýšená spolupráca
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.
- Automatizované regresné testovanie
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í.
- Rozsiahla dokumentácia
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.
4. Kontinuálne dodávanie (Continuous Delivery – CD)
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í.
Úloha QA v DevOps
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í.
Integrácia QA do DevOps
Tu je niekoľko spôsobov integrácie QA – zabezpečenia kvality do prostredia DevOps:
- Zmena štruktúry tímu
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.
- Čo najviac automatizuj
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.
- Používaj metriky na sledovanie pokroku
Ď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.
- Paralelné vykonávanie testov
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.
- Priebežné monitorovanie
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.
- Mať spoločný súbor procesov a nástrojov
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ť.
- Priebežná spätná väzba
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.
- Zvýšenie prehľadu o úlohách a procesoch
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.
- Dostatočné školenia
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.
Výhody DevOps na testovanie QA
- Vývojový tím a tím QA môžu efektívnejšie spolupracovať. Pomôže to vytvoriť podpornú atmosféru v rámci organizácie.
- Konečný produkt môžete uviesť na trh rýchlejšie.
- Je možné releasovať pravidelné verzie a priebežne zavádzať časté aktualizácie.
- Konečné produkty budú stabilnejšie vďaka lepším štandardom kontroly kvality.
- Z automatizácie môžeš mať niekoľko výhod. Napríklad dosiahneš dlhodobé zníženie nákladov a rýchlejšie odhalenie chýb.
Ako DevOps mení úlohu tradičných testerov softvéru?
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.
Záver
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.