Čo je automatizované testovanie?

Čo je automatizované testovanie?
10 MIN
20 jún 2023

Chceš sa naučiť testovať automatizovane, ale nevieš, ako začať? Nevadí. My ťa budeme sprevádzať základmi a celým procesom automatizovaného testovania.
V tomto článku sa budeme venovať tomu, čo je automatizované testovanie, ako funguje, kedy ho používať a prečo je dôležité. Okrem toho sa dozvieš o niektorých z najpopulárnejších nástrojov na automatizované testovanie. Môžeš si vybrať akýkoľvek z týchto nástrojov na učenie sa, v závislosti od svojich schopností a požiadaviek projektu.

Ak už máš základné znalosti o automatizovanom testovaní a chceš sa hneď presunúť na tutoriály o nástrojoch, klikni na nástroje automatizovaného testovania.

Obsah

Čo je automatizácia?

Predtým, než začneme s automatizovaným testovaním, vysvetlime si pojem „automatizácia“. Automatizácia je proces, prostredníctvom ktorého môžeme automatizovať manuálny proces pomocou technológie. Cieľom je eliminovať alebo zredukovať ľudskú, manuálnu prácu. Teraz sa pozrime na to, ako automatizácia pomáha pri testovaní softvéru.

Testovanie softvéru zahŕňa písanie testovacích prípadov (test cases) len jediný raz a ich opätovné spustenie, kedykoľvek je to potrebné. Manuálne testovanie je veľmi časovo náročná a vyčerpávajúca úloha. Automatizované testovanie pomáha redukovať čas potrebný na vykonávanie testov. Keďže testovacie skripty sa napíšu len raz, môžu sa automaticky spúšťať ľubovoľný počet krát bez akejkoľvek ľudskej intervencie.

Čo je automatizované testovanie?

Automatizované testovanie je druh testovania softvéru, ktorý zahŕňa automatizované vykonávanie testovacích prípadov pomocou nástrojov na automatizáciu. V podstate automatizujeme manuálny testovací proces. Tester napíše testovacie skripty a spúšťa ich v určitý čas, prípadne naplánuje, aby sa testy spúšťali periodicky. Znižuje tak celkový čas potrebný na testovanie a pomáha tým urýchliť nasadenie softvéru.

Čo automatizovať?

Teraz, keď vieme, čo je automatizované testovanie, povedzme si niečo o tom, ktoré testovacie prípady (Test cases) je vhodné automatizovať, presnejšie povedané, ktoré testovacie prípady sú ideálnymi kandidátmi na automatizáciu. Testovacie prípady (test cases), ktoré testujú vitálnu funkcionalitu aplikácie

Napríklad pre aplikáciu elektronického obchodu (e-commerce aplikácia) by sme do kľúčovej funkcionality zahrnuli prezeranie produktov pomocou funkcie vyhľadávania a kategórií, pridanie produktov do košíka a nákup. Tieto testovacie prípady by mali byť prvými adeptami pre automatizáciu. Testovacie prípady pre pridanie do zoznamu želaní a podobne by mali mať nižšiu prioritu.

Testovacie prípady (test cases), ktoré vyžadujú opakované vykonávanie s komplexnou sadou dát (dataset)

Existuje veľa testovacích prípadov, ktoré vyžadujú opakované spúšťanie. Takéto testovacie prípady sú tiež ideálnymi kandidátmi na automatizáciu, pretože automatizácia značne znižuje úsilie vynaložené na testovanie.

Vezmime si ako príklad funkciu vyhľadávania v aplikácii. Ak môžeme automatizovať postup vyhľadávania s vyhľadávaným výrazom a potom overiť výsledky vyhľadávania, môžeme spustiť rovnaký skript opakovane s rôznymi typmi výrazov, ako sú jedno slovo, viacslovný výraz, alfanumerický, so špeciálnymi znakmi, s cudzojazyčnými znakmi atď.

Testy, ktoré sú časovo náročné

Ideálnymi kandidátmi na automatizáciu sú aj testovacie postupy, ktoré vyžadujú značné množstvo času na vykonanie a nastavenie.
Pokračujme v príklade elektronického obchodu. Ak niektoré testovacie prípady vyžadujú nastavenie viacerých produktov a následné vykonanie niektorých operácií s týmito produktami, automatizácia týchto testovacích prípadov nielenže znižuje čas potrebný na vykonanie testov, ale tiež uvoľňuje manuálnych testerov od zbytočných úloh. Navyše im pomáha sústrediť sa na ďalšie aktivity exploratívneho testovania (exploratory testing).

Testovacie prípady (test cases), ktoré vyžadujú paralelné vykonávanie

Existujú scenáre, ktoré vyžadujú kontrolu súčasného prístupu k aplikácii, napríklad v prípade testovania výkonnosti s viacerými používateľmi. V týchto prípadoch nie je možné vykonávať manuálne testovanie, prípadne by vyžadovalo viac zdrojov na testovanie konkrétnych scenárov. Automatizované skripty v tomto prípade pomáhajú vytváraním súbežných požiadaviek a zhromažďovaním výsledkov na jednom mieste.

Čo neodporúčame automatizovať?

Pri automatizácii je dôležité pochopiť i to, aké druhy testovacích prípadov sa nedajú alebo by sa nemali automatizovať.

Testovacie prípady (test cases) pre používateľské rozhranie (UI)

Testovacie prípady pre grafické používateľské rozhranie (GUI) by bolo najlepšie ponechať na manuálne testovanie alebo na ľudskú validáciu. Dôvodom je, že už aj najmenšia zmena v UI by mohla spôsobiť zlyhanie automatizovaných testovacích prípadov. Okrem toho je veľmi ťažké vytvoriť spoľahlivé testovacie prípady pre UI, ktoré by fungovali na rôznych zariadeniach a pri rôznych rozlíšeniach obrazovky.

Testovacie prípady (test cases) použiteľnosti

Testovacie prípady použiteľnosti testujú jednoduchosť používania aplikácie rôznymi skupinami používateľov, čo súčasná technológia nedokáže automatizovaným testovaním zabezpečiť.

Funkcionalita, ktorá sa používa len zriedka a vyžaduje veľa času na skriptovanie

Je dobré automatizovať zložité scenáre, ale investovanie úsilia do scenárov, ktoré sa zriedka používajú, nie je príliš efektívne.

Exploratívne testovanie (exploratory testing)

Exploratívne testovanie vyžaduje rýchle získavanie poznatkov o aplikácii a súbežné testovanie. Scenáre exploratívneho testovania preto nie je možné automatizovať.

Kedy by sme mali automatizovať?

Po definovaní všetkých možností automatizácie počas plánovania testovania môžeme začať s vytváraním automatizačného frameworku paralelne s vývojovým tímom. Skriptovanie testovacích prípadov by však malo začať v správny čas. Pre lepší návrat investície z automatizácie a aby sme sa vyhli zbytočnej práci – so skriptovaním testovacích prípadov by sa malo začať, keď je aplikácia stabilná a v aplikácii sa neočakávajú časté zmeny.

Kedy neautomatizovať?

Pozrime sa na niektoré scenáre, pri ktorých nie je vhodné vykonávať automatizované testovanie alebo v týchto prípadoch prináša automatizácia skôr nevýhody.

  • Nedostatok odborných znalostí, skúseností s automatizačným nástrojom – Nedostatok odborných znalostí o automatizačnom nástroji a/alebo programovacom jazyku pre vytváranie spoľahlivých skriptov je jedným z hlavných dôvodov, prečo nie je možné plnohodnotne využiť potenciál nástroja. Takéto faktory vedú k neúspechu automatizovaného testovania.
  • Nesprávne vybrané testovacie prípady – Úspech automatizovaného testovania výrazne závisí od správne vybraných testovacích prípadov pre automatizáciu. Nesprávne vybrané testy vedú k plytvaniu zdrojmi a času investovaného do automatizácie.
  • Aplikácie s častými zmenami – Výber automatizovaného testovania pre aplikáciu s častými zmenami vyžaduje neustálu údržbu testovacích skriptov, čo niekedy nemusí priniesť žiadaný návrat z investície.
  • Nesprávne napísané testovacie skripty – Testovacie skripty s obmedzenými alebo nedostatočnými overeniami môžu viesť k falošne pozitívnym výsledkom testov. Tieto falošne pozitívne výsledky skrývajú chyby, ktoré by bolo možné ľahko odhaliť, ak by sa overovali manuálne alebo boli napísané iným spôsobom.

Proces automatizovaného testovania

Proces automatizovaného testovania zahŕňa súbor činností, ktoré sa vykonávajú pri automatizácii rôznych softvérových aplikácií. Každú fázu si prejdeme od pochopenia požiadaviek až po automatizované skriptovanie a integráciu s CI/CD.

Automatizované testovanie
Proces automatizovaného testovania

Proces automatizovaného testovania krok za krokom:

Pochopenie požiadaviek

Pred začatím automatizovaného testovania je prvou a najdôležitejšou aktivitou pochopiť požiadavky. Pochopenie požiadaviek pomôže definovať rozsah automatizácie a výber správneho nástroja.

Definovanie rozsahu automatizácie

Definovanie rozsahu automatizácie zahŕňa výber správnych testovacích prípadov pre automatizáciu. To predstavuje všetky typy testovacích prípadov, ktoré spadajú do typov testovacích prípadov definovaných v časti „Čo automatizovať?“.

Výber správneho nástroja

Výber nástroja závisí od rôznych faktorov ako je požiadavka projektu, odbornosť v programovaní, rozpočet projektu (či sa má použiť bezplatný alebo platený nástroj) atď.
Vytváranie frameworku (rámca)
Pre vytvorenie spoľahlivých automatizovaných testovacích súprav je potrebné vytvoriť automatizačný framework. Tieto frameworky pomáhajú vytvoriť znovupoužiteľné, udržateľné a spoľahlivé testovacie skripty. Na základe požiadaviek projektu môžeme vybrať jednu z rôznych automatizačných rámcov, ktoré sú opísané v časti „Frameworky pre automatizované testovanie“.

Skriptovanie testovacích prípadov

Po nastavení automatizačného rámca začneme skriptovať testovacie prípady, ktoré sme vybrali pre automatizáciu. Typický skript pre testovací prípad webovej aplikácie vyzerá takto:
Otvoriť prehliadač,
Prejsť na URL aplikácie,
Vykonávať interakciu s rôznymi webovými elementmi,
poslať dáta z externých testovacích súborov,
overenie.

Integrácia s CI/CD

Aj keď je možné spúšťať testovacie prípady podľa potreby, v súčasnosti má široké využitie CI/CD (kontinuálna integrácia a kontinuálne nasadzovanie) takmer vo všetkých produktových spoločnostiach. Z testovacieho hľadiska to zahŕňa nastavenie testovacích súprav v nástroji CI/CD ako je Jenkins.
Po ich nastavení pomocou CI/CD môžeme naplánovať spustenie testovacej sady napr. v noci alebo spúšťať testovacie prípady podľa potreby. Ďalšou výhodou integrácie automatizačnej súpravy s CI/CD je možnosť automatického spustenia testovacích prípadov po nasadení. V tomto nastavení, po jednom kliknutí, ihneď po nasadení, automatizované testovacie súpravy skontrolujú stabilitu verzie.

Frameworky pre automatizované testovanie

Pri manuálnom testovaní akéhokoľvek softvéru definujeme súbor pravidiel. Napríklad formát testovacích prípadov, prioritizáciu vykonávania testov, rôzne postupy zamerané na optimalizáciu celého procesu softvérového testovania atď. Podobne aj pri automatizovanom testovaní používame automatizačné frameworky, ktoré pomáhajú znížiť náklady na údržbu automatizovaných skriptov a zlepšiť celkový proces automatizovaného testovania.

Framework môže obsahovať pokyny a implementáciu rôznych faktorov, ktoré ovplyvňujú kvalitu testovacej sady, ako napríklad:

  • Odkiaľ budeme preberať testovacie dáta? – Napríklad ich budeme vkladať priamo do skriptu alebo ich preberať z externých súborov.
  • Ako by sme mali riešiť repozitár objektov alebo lokalizátory prvkov (lokalizátory sú identifikátory rôznych prvkov, ako napríklad textové polia, tlačidlá atď.)?
  • Kde by sme mali uchovávať spoločné funkcionality, ktoré môžu byť znovu použité? – Na zníženie nadbytočnosti a zlepšenie opätovnej použiteľnosti kódu.
  • Aký by mal byť formát správ? – HTML, PDF, XLS atď.
  • Ako by sme mali implementovať zaznamenávanie logov (logging)? – Aký nástroj/knižnica by sa mal(a) použiť?
  • Čo by sa malo urobiť v prípade zlyhania testu? – chceme snímku obrazovky alebo skúsiť znovu spustiť testovací prípad? Atď.

Na riešenie a implementáciu týchto pravidiel vyvíjame automatizačný testovací framework.

Nasledujú niektoré z najpoužívanejších automatizačných frameworkov:

Modulárny Framework

Modulárne frameworky sú základnými automatizačnými frameworkami, v ktorých sa identifikujú a vytvárajú bežne používané funkcionality, ako je pripojenie k databáze, prihlasovanie, metóda na čítanie údajov z externého súboru atď. Namiesto opakovanej tvorby kódu jednoducho voláme znovupoužiteľné metódy podľa potreby.

Framework riadený údajmi (Data-driven framework)

V prípade frameworkov riadených údajmi sa testovacie údaje nachádzajú v externých súboroch a na základe počtu riadkov v externých súboroch sa testovací prípad vykonáva viackrát s rôznymi sadami údajov v každej iterácii (načítaných zo súboru). Keďže údaje riadia automatizáciu, dostal tento rámec názov – Framework riadený údajmi.

Framework riadený kľúčovými slovami (Keyword-driven framework)

V rámci frameworku riadeného kľúčovými slovami môžeme písať testovacie prípady v bežnom texte. Napríklad môžeme testovacie prípady zapísať do excelového hárku nasledujúcim spôsobom:

Kľúčové slová
Kľúčové slová a automatizované testovanie

Framework už bude mať preddefinované metódy pre každé použité kľúčové slovo, ako napríklad automatizačný kód pre kľúčové slovo OpenBrowser, NavigateTo atď. Týmto spôsobom môže aj ne-technický používateľ vytvárať automatizované testovacie skripty v jednoduchom texte.

Mýty o automatizovanom testovaní

Poďme zboriť niektoré mýty o automatizovanom testovaní:

  • 100 % automatizácia je možná – S výnimkou niektorých veľmi špecifických aplikácií nie je 100 % automatizácia možná. Príkladom testovacích prípadov, ktoré nie je možné automatizovať, sú exploratívne testovacie prípady (exploratory test cases) alebo testovacie prípady použiteľnosti (usability test cases).
  • Automatizácia nahradí prácu manuálnych testerov – Je pravda, že s nástupom automatizovaného testovania a rôznych nástrojov sa mení požiadavka na testerov, ktorí vedia pracovať s manuálnym aj automatizovaným testovaním. Avšak automatizácia nikdy úplne nenahradí potrebu manuálneho testovania.
  • Vývojár je lepším automatizovaným testerom – Aj keď vývojár môže mať malú výhodu v oblasti programovania, tester dokáže priniesť do oblasti vývoja softvéru kritický pohľad, zmysel pre detail a pod.
  • Automatizácia je drahá – Správne vykonaná automatizácia môže znížiť celkové úsilie v testovaní a potrebné zdroje, čím sa dlhodobo šetria náklady projektu.

Populárne nástroje na automatizované testovanie

Na softvérovom trhu existuje množstvo platených aj bezplatných nástrojov na automatizované testovanie. Na základe rôznych faktorov, ako je požiadavka projektu, rozpočet, odbornosť zdrojov atď. by sme mali vybrať správny nástroj, ktorý vyhovuje našim potrebám. Predstavme si niektoré z najpopulárnejších nástrojov na automatizované testovanie na trhu:

  • Selenium – Open-source nástroj na automatizované testovanie. Má veľkú a aktívnu komunitu. Patrí k najrozšírenejším nástrojom a podporuje skriptovanie v rôznych jazykoch – Java, Python, Ruby, JavaScript, C# atď.
  • Katalon Studio – Relatívne nový nástroj, ale rýchlo získava popularitu vďaka funkcii nahrávania a prehrávania a skriptovania pre technicky zdatnejších používateľov. Je bezplatný, ale nie je open-source.
  • UFT One – Platený nástroj od spoločnosti Microfocus, ktorý sa dá použiť na automatizáciu webových aj Windows aplikácií. Podporuje skriptovanie iba v jazyku VBScript.
  • TestComplete – Platený nástroj od spoločnosti Smartbear, ktorý sa dá použiť na automatizáciu webových, mobilných aj desktopových aplikácií.
  • Tosca – Platený nástroj od spoločnosti Tricentis, ktorý poskytuje funkcie nahrávania a prehrávania na automatizáciu webových aplikácií, rozhraní API a aplikácií pre Windows. Je považovaný za jeden z najpopulárnejších nástrojov bez nutnosti programovania.
  • Watir – Open-source automatizačný nástroj založený na jazyku Ruby, ktorý umožňuje automatizáciu webových aplikácií. Obsahuje komponentu watir-webdriver, ktorá je založená na Selenium.
  • Appium – Môžeme ho považovať za Selenium pre mobilné aplikácie. Podobne ako Selenium, je to open-source nástroj s veľkou používateľskou základňou.
  • TestProject – TestProject je bezplatný nástroj na automatizované testovanie poháňaný komunitou od spoločnosti Tricentis. Dá sa použiť na automatizáciu webových aj mobilných aplikácií.
  • Ranorex – Platený nástroj s funkciami nahrávania a prehrávania. S jeho pomocou môžeme automatizovať aplikácie pre Android, iOS a Windows. Okrem nahrávania a prehrávania podporuje aj skriptovanie pomocou jazykov C# a VBScript.

Naše tutoriály o nástrojoch na automatizované testovanie

Teraz, keď máš dostatočný prehľad v procese automatizovaného testovania, môžeš si vybrať vhodný nástroj na učenie sa automatizácie testovania. Ďalej pripravujeme tutoriály o populárnych nástrojoch na automatizované testovanie: Selenium, Katalon, Cucumber, TestNG.

Veríme, že ti tento článok pomohol pochopiť základy automatizovaného testovania a uvedomiť si aktivity, ktoré sú vykonávané v procese automatizovaného testovania.