Programovanie

Ako vylepšiť CI / CD testovaním vľavo a dole

Testovanie aplikácií bývalo technicky náročná, časovo obmedzená aktivita naplánovaná dni alebo týždne pred vydaním aplikácie. Vývojové tímy dostali priestor na kódovanie až do jedenástej hodiny a testerom, ktorí robili väčšinu svojej práce manuálne, nezostávalo nič iné, ako vystačiť si s časom, ktorý im bol daný. Výsledkom bolo, že mnoho aplikácií prešlo neštandardnými testami a technologické tímy boli nútené reagovať na výrobné problémy a defekty, ktoré sa stupňovali koncovými používateľmi a systémami monitorovania aplikácií.

Táto paradigma rozšírila postupy nepretržitej integrácie Devices, rámce testovania jednotiek a postupy automatizácie testov. Namiesto zabezpečenia kvality na konci vývojového procesu sa teraz začína a plne vykonáva mnoho testovacích postupov počas kódovania, integrácie a nasadenia. Devops a agilné tímy automatizujú testovacie skripty a kanály CI / CD požadujú spustenie testov počas fázy integrácie kódu alebo doručenia. Čistým výsledkom je, že vývojári sú upozornení, keď zmeny ich kódu narušia zostavenie, a môžu podniknúť okamžité kroky na odstránenie nahláseného problému.

Automatizácia testovania a integrácia testovacích skriptov do potrubia CI / CD sa označuje ako testovanie naľavo-dole. Znamená to, že vo vývojovej fáze je možné vykonať viac postupov zabezpečenia kvality, aby sa problémy zachytili skôr na časovej osi vydania. Automatizácia testovania je jednou z priorít pred nasadením pre agilné a vývojové tímy, ktoré chcú zvýšiť frekvenciu nasadenia.

Pri zavedení novej funkcionality zostavené testovacie skripty potvrdzujú nové schopnosti. Tieto testy je potom možné automatizovať a zahrnúť do krokov zostavenia alebo nasadenia. Namiesto toho, aby inžinieri QA spustili regresné testy na konci procesu vydania, môžete spustiť a overiť veľa z týchto testov ako súčasť vývoja. Tieto testy sa posúvajú vľavo od konca procesu vydania do skorších fáz vývoja a kódovania.

Testovanie ľavou stranou umožňuje agilným tímom oddať sa kvalite

Testovanie vľavo a dole posúva nielen efektivitu a zlepšuje kvalitu, ale tiež vytvára významnú kultúrnu zmenu v agilnom procese vývoja.

Niektoré vývojové tímy vnímajú zabezpečenie kvality a testovanie ako prekážku pri dodaní ich kódu do výroby. Po všetkej tvrdej práci pri uspokojovaní agilných vlastníkov produktov a dokončení kódu identifikovali spoluhráči QA zoznam chýb vyžadujúcich nápravu. Ak QA nájde veľa chýb, môže to mať vplyv na časovú os vydania a opraviť ich. Ešte horšie je, keď významné časti kódu potrebujú nové inžinierstvo, pretože chyby odhalia problémy s logikou, zabezpečením alebo výkonom. V tomto scenári môžu byť vývojári a inžinieri zabezpečovania kvality v rovnakom agilnom tíme, ale nekonajú ako tím.

Testovanie ľavou stranou umožňuje agilným tímom presunúť zodpovednosť za kvalitu na celý tím vývojárov a testerov. Keď testovanie prebieha ako súčasť potrubia CI / CD, poskytuje to vývojárom lepšiu príležitosť na riešenie problémov s kvalitou v čase, keď pracujú na príslušnom kóde. Potrubie CI / CD upozorňuje vývojára na zlyhané zostavenie a väčšina samoorganizujúcich sa vývojových tímov vyžaduje okamžité odstránenie týchto problémov.

Testovanie pomocou klávesu Shift left tiež poskytuje vývojárom a technikom zabezpečujúcim kvalitu príležitostí na automatizáciu väčšej časti testovania. Osvedčeným postupom je, aby sa tímy rozhodli, kto implementuje automatizáciu, v závislosti od typov testov požadovaných pre vyvinutú funkčnosť. Napríklad vývojári sú často zodpovední za automatizáciu testov jednotiek a API, ale inžinieri automatizácie QA často vyvíjajú komplexné testovanie používateľských skúseností a testy transakcií, ktoré simulujú viackrokové volania API do viacerých služieb.

Kedy sa má vykonať testovanie v smere radenia vľavo

Testovanie vľavo a vľavo funguje najlepšie pre atómové testy na úrovni jednotiek, ktoré majú krátke časy vykonania. Je nevyhnutné, aby boli testy automatizované v potrubí CI / CD a aby bežali vždy, keď vývojári spustia zostavenie, vykonajú sa rýchlo a nespomalia procesy zostavenia.

Zložitejšie a časovo náročnejšie testy, ako napríklad testy používateľských skúseností koncových používateľov, testovanie transakcií, analýza statického kódu a testovanie zabezpečenia, často prebiehajú lepšie mimo potrubí CI / CD a podľa denných alebo častejších plánov. Tieto testy stále poskytujú vývojárom včasnú spätnú väzbu o problémoch s kvalitou, sú však automatizované mimo CI / CD, aby sa zabránilo spomaleniu alebo zúženiu stavania.

Thomas J. Sweet, viceprezident pre IT služby v spoločnosti GM Financial, sa so mnou podelil o svoje osobné poznatky o limitoch stratégií testovania ľavou a ľavou stranou. Navrhuje: „Posun doľava je vždy stratégia, s výnimkou vykonávania testovania integrácie pri dodávkach tretích strán, pretože často nemáte prístup k ich zdrojovému kódu. Aj keď máte interné aplikácie so starými monolitickými architektúrami, môžete začať presadzovaním základných zásad registrácie, ktoré vyžadujú kontrolu kódu a kontrolu zabezpečenia. Ak skenovanie obsahuje základné varovania a zlyhania, registrácia by mala byť odmietnutá. “

Jedným z potenciálnych riešení následného testovania s integračnými partnermi je implementácia virtualizácie služieb. Táto technika umožňuje vývojovým tímom simulovať reakciu následného systému na rôzne vstupy. Funguje dobre, ak sú následné systémy dobre definované. Túto funkciu umožňujú nástroje od spoločnosti Micro Focus, Tricentis a ďalších.

Rob Pociluk, vysoko ostrieľaný manažér zabezpečenia kvality, je silným zástancom testovania ľavého a ľavého chodu v agilnom vývoji. „Byť pripravený a schopný testovať malé časti kódu udržuje QA flexibilnú a v cykle počas priebehu šprintu. Tímy by sa mali stále chrániť pred prílišným používaním shift-left, pretože tak môžete stratiť účel samotného kódu. “

Takže aj keď sa tímy plne venujú testovaniu vľavo a dole, existujú dobré dôvody na to, aby ste si ešte naplánovali testovacie okno na zostavenie kompletného kódu zamerané na vydanie. Zaisťuje, aby sa všetky automatizované testy vykonávali na konečnom zostavení, ale umožňuje aj plánovanie ďalších testov, ktoré si vyžadujú plne funkčný systém.

Jedným z týchto testov je UAT (používateľské akceptačné testovanie), pri ktorom vybraní koncoví používatelia a experti na príslušné oblasti overujú a poskytujú spätnú väzbu. Niektoré UAT je možné vykonať počas vývoja, ale nemusí byť ľahké presvedčiť ľudí, aby často vykonávali toto testovanie, alebo keď funkcie nie sú úplne pripravené.

Nevyhnutné predpoklady na testovanie ľavého smeru

Testovanie vľavo a vľavo predstavuje postup zvyšovania prestávky, má však svoje predpoklady a počiatočné investície. Vyžadujú sa niektoré základné schopnosti a postupy.

  • Na podporu počtu zostavení a testov, ktoré prebiehajú súčasne, je potrebná dostatočná testovacia kapacita a prostredie.
  • Agilné tímy požadujú sadu nástrojov na testovanie produktov, ktoré sa dajú ľahko integrovať do produktovodov CI / CD a nástrojov na plánovanie úloh a ktoré môžu overiť funkčnosť, kvalitu kódu, zabezpečenie a výkon.
  • Architekti, špecialisti na informačné technológie, vedúci QA a ďalší vysokí členovia organizácie by mali ustanoviť testovacie štandardy a ciele na úrovni služieb, ktoré tvoria predvolené kritériá prijatia.
  • Keď aplikácie vyžadujú vstup používateľa, testovacie tímy potrebujú dostatok testovacích údajov a vzorov na overenie dostatku osôb, prípadov použitia a vstupných vzorcov.
  • Pri nasadení sprintu alebo skôr by scrum tímy vrátane inžinierov automatizácie testovania QA mali stanoviť stratégiu testovania toho, aké schopnosti sa testujú, aké typy testovania sa implementujú, aké automatizačné procesy sa aktualizujú a kto testuje.
  • Tímy Devops by mali merať trvanie spustenia potrubia CI / CD a označiť, keď majú kroky automatizovaného testovania vplyv na produktivitu. Tímy Devops často vyžadujú dodatočné plány testovania mimo potrubí CI / CD, aby mohli vykonávať dlhodobejšie testy.
  • Tímy by mali pravidelne diskutovať o nedostatkoch vo svojich automatizovaných testoch, najmä o validáciách, ktoré si vyžadujú odborníkov na predmet, UAT alebo testovanie, s partnermi. Ak agilné tímy nedokážu tieto medzery vyriešiť pomocou automatizácie, potom by cykly vydávania mali zohľadniť réžiu, aby sa znížili riziká a dokončili tieto testy.

A nakoniec, agilné tímy a organizácie zaoberajúce sa vývojom by mali pravidelne merať a diskutovať o pokrytí svojich testov. Zamestnanie stratégie testovania ľavou a ľavou stranou nefunguje, ak vývojové tímy a inžinieri automatizácie kvality skutočne neimplementujú, automatizujú a neintegrujú dostatočné testy na zachytenie problémov a riešenie rizík.

Zrýchlenie uvoľňovacích cyklov alebo povolenie nepretržitého dodávania bez dostatočnej automatizácie testov môže viesť k významným problémom s kvalitou, ktoré degradujú skúsenosti koncových používateľov. Agilné vývojové tímy príliš často tlačia na vydania, potom namiesto investovania do lepšej automatizácie riešia problémy a chyby vo výrobe.