Business & Integration IT konzultant
Continuous Integration, continuous delivery a CI CD pipeline v testingu
V tomto článku sa venujeme continuous integration a continuous delivery z hľadiska testovania. Povieme si, čo je CI CD pipeline, CI CD testing, ako ho automatizovať a aké nástroje sú na to najlepšie.
Continuous Integration, continuous delivery – CICD definícia (CICD definition)
Termín CICD je skratkou pre Continuous Integration a Continuous Delivery (kontinuálna integrácia a kontinuálne dodávanie), čo predstavuje široko používaný koncept v prípade dodávania softvéru v prostredí, ktoré sa vyznačuje neustálym vývojom.
Aby si tomu lepšie porozumel, kontinuálna integrácia je metóda, pri ktorej musia vývojári push-ovať zmeny v kóde do master branche priebežne namiesto push-ovania mnohých zmien naraz, ako to bolo zvykom pri vodopádovom modeli (waterfall model). V agilnom prostredí, kde sa požiadavky a časové harmonogramy môžu rýchlo meniť v závislosti od potrieb klienta a meniacich sa trhových noriem, sa kontinuálna integrácia ukazuje ako veľmi užitočná. Prečítaj si viac v našom článku o Agilných metódach.
Pri kontinuálnej integrácii (CI) sa po každej integrácii spúšťajú automatizované testy, a tak je možné získať spätnú väzbu o kvalite aplikácie v krátkom čase. Čím rýchlejšia je spätná väzba, tým rýchlejšie je dodanie a umožňuje nám to viac času na prispôsobenie sa zmenám.
Kontinuálne dodávanie (CD) umožňuje tímom vyvíjajúcim softvér efektívne plánovať a organizovať svoje cykly releasov. Prijatím postupov CD môžu tímy zefektívniť proces automatizácie infraštruktúry a následného nasadenia softvéru do produkčného prostredia.
Čo je CI CD testing?
Continuous Integration a Continuous Delivery (CI CD) zahŕňajú princípy, techniky, postupy a technológie, ktoré umožňujú DevOps tímu vyvíjať a testovať softvér automatizovaným spôsobom.
CI CD testing je jednou z fáz tohto procesu, ktorá sa stará o zabezpečenie kvality a rýchle dodanie softvéru s nulovou chybovosťou. Cieľom CI CD testovania je podporiť aktualizáciu alebo release verzie len vtedy, keď prejde testovaním funkčných požiadaviek, zostane stabilná a bez chýb. Zvyčajne ide o automatizovaný proces, ktorý je plne integrovaný s CICD pipeline.
Čo je CI CD pipeline?
CI/CD pipeline je automatizovaný proces, ktorý používajú tímy vyvíjajúce softvér na zefektívnenie vytvárania, testovania a nasadzovania aplikácií. „CI“ predstavuje kontinuálnu integráciu, pri ktorej vývojári často zlučujú zmeny kódu do centrálneho úložiska kódu, čo umožňuje včasné odhalenie problémov s integráciou. „CD“ označuje kontinuálne nasadenie alebo kontinuálne doručovanie, ktoré automatizuje release aplikácie do určeného prostredia, čím sa zabezpečí, aby bola ľahko dostupná používateľom. Tento postup je nevyhnutný pre tímy, ktorých cieľom je zlepšiť kvalitu softvéru a urýchliť jeho dodanie prostredníctvom pravidelných a spoľahlivých aktualizácií.
Čo je kontinuálne testovanie (continuous testing)?
Pri kontinuálnej integrácii prechádza každé prevystavenie verzie aplikácie automatizovanými testami, aby sa zistila stabilita systému. Tento proces sa nazýva kontinuálne testovanie.
Preto kontinuálne testovanie (continuous testing) pomáha nielen pri vytváraní lepšieho produktu a získavaní spätnej väzby od zákazníkov.
Automatizované testovanie môže zohrávať dôležitú úlohu, pokiaľ ide o kontinuálne testovanie. Použitie nástroja na tento proces a spustenie automatizačného kódu nám môže pomôcť identifikovať zlyhania a blokovania, ktoré sa objavia okamžite po nasadení aktualizovanej zmeny kódu.
Čo by si mal mať na pamäti, aby si mohol vykonávať kontinuálne testovanie?
- Používanie nástroja na generovanie a vykonávanie automatizačných testov.
- Vytvorenie a udržiavanie efektívneho frameworku pre automatizované testy.
- Oddelenie vývojového a testovacieho prostredia.
- Používanie reálnych údajov/produkčných údajov, ak je to možné.
- Integrácia automatizačného nástroja do CICD pre rýchlejšiu spätnú väzbu.
- Paralelné testovanie pomáha identifikovať chyby výkonu.
Kam patrí CI CD testing v procese CICD?
Je oveľa jednoduchšie riešiť a odstrániť problém krátko po jeho zavedení do kódu. Včasné odhalenie zabráni tomu, aby sa na neistých základoch budoval ďalší kód, čo v konečnom dôsledku šetrí čas a úsilie.
Nástroje na automatizované testovanie releasu sa bezproblémovo integrujú s nástrojmi CI/CD, čo ti umožňuje vkladať testovacie údaje do pipeline a vykonávať testovanie v postupných fázach. V každom kroku získaš výsledky, ktoré ťa informujú o ďalšom postupe. V závislosti od zvoleného nástroja CI môžeš na základe výsledkov predchádzajúcich testov rozhodnúť, či release posunieš do ďalšej fázy.
Atypický priebeh – CI CD process:
- Vývoj požadovanej funkcie v rámci šprintu alebo v termíne, ktorý bol zákazníkovi stanovený.
- Presunutie a zlúčenie kódu do existujúcej kódovej základne.
- Počiatočná analýza kvality zdrojového kódu podľa unit testu.
- Budovanie a vykonávanie integrovaného kódu prostredníctvom automatizovaných testovacích prípadov.
- Generovanie nasaditeľnej verzie kódu v nižších prostrediach.
- Hlásenie stavu v nižších prostrediach a oprava chýb.
- Presun kódu do vyšších prostredí a získanie spätnej väzby od zákazníka.
- Produkčné vydanie softvéru.
CI CD automatizované testovanie (CI CD automation testing)
Existuje mnoho dôvodov, prečo by sa malo testovanie CI CD automatizovať. Najzákladnejšími sú:
1. Prispôsobovanie sa častým zmenám
Proces CICD nám umožňuje vykonávať priebežné zmeny v systéme. Automatizácia testovania nám umožňuje overiť stabilitu systému po každej zmene a umožňuje kontinuálne dodávanie.
2. Rýchlejšie vykonávanie a spätná väzba
Pokiaľ ide o automatizované testy, niet pochýb o tom, že sa vykonávajú rýchlejšie ako manuálne testy a teda aj spätná väzba o stabilite nasadeného kódu po každej kontrole je rýchlejšia.
3. Zníženie času a úsilia
Automatizácia zdĺhavých úloh umožňuje testerom venovať viac času zložitým funkcionalitám. To umožňuje testerom vykonávať dôkladné prieskumné testovanie, hlbšie sa zaoberať aspektmi výkonu, prístupnosti a lokalizácie.
4. Väčšia konzistentnosť
Automatizácia výrazne znižuje pravdepodobnosť ľudských chýb a vzbudzuje dôveru v stabilitu systému. Automatizované vykonávanie zabezpečuje konzistentnosť a presnosť, čím sa eliminuje manuálna variabilita.
5. Väčšia flexibilita pri vylepšeniach
CICD pipeline umožňuje rýchle vylepšovanie systému, pričom sa uprednostňuje používateľská skúsenosť (user experience – UX testing). Developeri môžu vykonávať vylepšenia systému bez námahy a s minimálnymi obavami z možných dopadov pre daný systém.
6. Podporuje rýchlejšie dodanie
Zavedenie procesu CICD uľahčuje rýchle dodanie produktu, čím sa zvyšuje významná obchodná hodnota a spokojnosť zákazníkov.
CI CD prístup k testovaniu (CI CD approach to testing)
Testovanie CI/CD sa vykonáva prostredníctvom dobre definovanej a automatizovanej pipeline, ktorá integruje rôzne fázy testovania do procesu vývoja a nasadenia softvéru. Môže to vyzerať takto:
- Commitnutie kódu (CI): Vývojári commitnú zmeny kódu do systému na správu verzií (napr. Git). To spustí spustenie CI pipeline.
- Automatizované buildy: Server CI/CD automaticky stiahne najnovšie zmeny kódu a prevystaví aplikáciu s najnovšími zmenami. Tým si overíme, že kód je prevystaviteľný a pripravený na ďalšie testovanie.
- Unit testovanie (CI): Vykonávajú sa automatizované unit testy na overenie funkčnosti jednotlivých malých častí kódu. Akékoľvek zlyhania v tejto fáze sú rýchlo oznámené developerom.
- Integračné testovanie (CI): Po úspešných unit testoch sa vykonávajú integračné testy, ktoré overujú, ako jednotlivé časti aplikácie fungujú spoločne. Tým sa overuje, či zmeny kódu nepriniesli do kódu problémy s integráciou.
- Automatizované nasadenie – deployment (CD): Pri kontinuálnom dodávaní (CD) sa testovaný kód nasadzuje do prostredia staging, ktoré sa veľmi podobá produkčnému prostrediu.
- Monitorovanie a reportovanie: Počas celého procesu CI/CD sa pomocou monitorovacích nástrojov zhromažďujú údaje o výkone aplikácie a výsledkoch testovania. Generujú sa správy a upozornenia, ktoré upozorňujú tímy na prípadné problémy.
- Nasadenie do výroby (CD): Ak všetky testy prebehnú úspešne a zainteresované strany ich schvália, zmeny kódu sa nasadia do produkčného prostredia.
- Monitorovanie po nasadení (CD): Po nasadení sa priebežným monitorovaním zabezpečuje, aby aplikácia v produkčnom prostredí fungovala podľa očakávaní.
Tipy pre lepšie testovanie CI/CD pipeline
- Klasifikuj testy podľa náročnosti. Je užitočné klasifikovať automatizované testy podľa náročnosti a dôležitosti (napríklad, či je test kritický pre funkčnosť používateľa), aby sa mohli určiť priority.
- Nastav vykonávanie viacerých paralelných testov. Paralelné spúšťanie viacerých testov skracuje čas vykonávania sady testov. To je veľmi dôležité v CI/CD pipeline, pretože developeri potrebujú rýchlu spätnú väzbu.
- Optimalizuj testy na rýchle vykonávanie. Testovacie zostavy sa musia vykonávať rýchlo, aby bolo možné ich integrovať do CICD pipeline. Testy by nemali trvať dlhšie ako proces kompilácie – od päť do pätnásť minút.
- Používaj prostredie podobné produkčnému. Časté vydávanie verzií je možné vďaka správnemu testovaniu na správnom prostredí so správnymi dátami.
Nástroje na testovanie CICD (CI CD testing tools)
Na testovanie CI/CD je k dispozícii niekoľko nástrojov:
- TestSigma: TestSigma je cloudový nástroj na automatizáciu testovania, ktorý umožňuje end-to-end testovanie webových a mobilných aplikácií. Využíva bezskriptový prístup, pri ktorom možno testy vytvárať pomocou jednoduchého a intuitívneho rozhrania. TestSigma poskytuje vstavané integrácie CI/CD, ktoré umožňujú bezproblémové vykonávanie testov ako súčasť CI/CD pipeline.
- Selenium: Selenium je populárny open-source automatizačný framework pre webové aplikácie. Podporuje viacero programovacích jazykov (napríklad Java, C#, Python) a ponúka širokú škálu funkcií na testovanie webových stránok. Selenium sa dobre integruje s CI/CD pipeline a možno ho kombinovať s ďalšími nástrojmi, ako je Selenium Grid, na paralelné vykonávanie testov.
- Jenkins: Jenkins je síce primárne známy ako nástroj CI/CD, ale podporuje aj automatizáciu testovania. Poskytuje pluginy na integráciu s rôznymi testovacími frameworkami vrátane Selenium, JUnit a TestNG. Jenkins dokáže vykonávať automatizované testy ako súčasť CI/CD pipeline a generovať správy o výsledkoch testov.
- Cucumber: Cucumber je široko používaný nástroj na vývoj riadený správaním (BDD – behaviour driven development) a automatizáciu testov. Umožňuje spoluprácu medzi developermi, testermi a zainteresovanými stranami prostredníctvom kódu písaného v jednoduchom texte nazývaný Gherkin. Cucumber podporuje integráciu s nástrojmi CI/CD, ako je Jenkins, čo umožňuje vykonávať automatizované testy ako súčasť pipeline.
- Appium: Appium je open-source automatizačný framework špeciálne navrhnutý na automatizáciu testov pre mobilné aplikácie. Podporuje platformy Android aj iOS a umožňuje písať testy pomocou populárnych programovacích jazykov, ako sú Java, Python a Ruby. Appium je možné integrovať do CI/CD pipeline na automatizáciu testovania mobilných aplikácií na viacerých zariadeniach a platformách.
Záver
Testovanie v rámci procesu CI/CD sa stalo neoddeliteľnou súčasťou efektívneho doručovania softvéru, pričom zohľadňuje jeho neustálu evolúciu. Tento prístup umožňuje neustálu kontrolu kvality a bezpečnosti softvéru počas každého kroku vývojového cyklu. Implementácia Continuous Integration a Continuous Delivery testovania umožňuje rýchlejšie zistenie a riešenie chýb a zabezpečuje, že dodaný softvér spĺňa požiadavky zákazníka a je pripravený na nasadenie do produkčného prostredia.
Ak vieš po nemecky a si IT tester alebo automatizovaný tester, pozri si naše firemné benefity a reaguj na voľné pracovné miesta.