Testovanie softvéru: Aké typy testov a chyby pri testovaní rozlišujeme

V rámci softvérového testovania sa môžeš stretnúť s viacerými typmi testov s rôznym využitím, funkcionalitami i špecifikáciami. V článku ti prezradíme, z ktorých fáz pozostáva testovací cyklus, podľa čoho rozdeľujeme software testy a aké druhy chýb pri testovaní poznáme.

Testovanie softvéru slúži na kontrolu kvality a funkčnosti softvérového produktu rovnako ako miery splnenia požiadaviek a potrieb zákazníka. Vykonáva ho IT tester, čo robí na projekte s cieľom nájsť potenciálne riziká a chyby, ktoré by mohli mať negatívny dopad na funkcionalitu softvéru či používateľskú skúsenosť.

Proces testovania softvéru je neoddeliteľnou súčasťou SDLC – životného cyklu vývoja softvéru. Každé testovanie má zároveň aj vlastný testovací cyklus nazývaný STLC alebo životný cyklus testovania softvéru. Software testovanie pozostáva zo štyroch fáz, teda krokov, ktoré je potrebné dodržať pri každej príprave a realizácii testu.

  • Plánovanie testu – prvá fáza zahŕňa vymedzenie testovacích požiadaviek a zdrojov pre testy, stanovenie cieľov testovania, ako aj testovacej stratégie a v neposlednom rade návrh a prípravu testovacieho plánu.
  • Analýza a príprava testov – v tomto kroku tester navrhne testy, ktoré poslúžia na kontrolu a overenie správnosti systémových požiadaviek.
  • Realizácia a vyhodnotenie testov – súčasťou tretej fázy je samotné vykonanie testu a vyhodnotenie jeho výsledkov. Pozornosť sa kladie na to, či program funguje tak, ako má a či neprišlo k žiadnej chybe alebo problému.
  • Monitoring chýb – posledný krok predstavuje riešenie závažnosti nájdených chýb a možnosti ich čo možno najjednoduchšieho (a najmenej nákladného) odstránenia.

Typy testov pri vývoji SW môžeme rozdeliť do rôznych oblasti

Okrem tradičného vymedzenia testov podľa spôsobu realizácie na manuálne testovanie a automatizované testovanie rozlišujeme niekoľko druhov softvérových testov. Nižšie si predstavíme rozdelenie podľa chronologizácie, prístupu ku kódu, chodu programu, dimenzií kvality a rozsahu.

Vedel si, že...

… okrem manuálnych a automatických testov rozlišujeme podľa spôsobu realizácie ešte aj tzv. exploratory testy. Ide o druh manuálneho testovania, no rozdiel spočíva v tom, že tieto testy nie sú vykonávané na základe vopred zadefinovaného testovacieho scenára a ich cieľom je zistiť vlastnosti a funkcie softvéru, teda ako sa bude pri testovaní správať.

Testy podľa fázy vývoja (chronologizácie)

Pri rozdelení testov z hľadiska časovej postupnosti v rámci vývojového modelu je najdôležitejším faktorom to, kedy prichádza k testovacej aktivite počas vývoja softvéru.

  • Testovanie vývojárom – prvotné testy vykonáva programátor a slúžia na kontrolu a testovanie na úrovni zdrojového kódu, aby sa predišlo chybovosti z dôvodu nepozornosti a pod. Opravy v tejto fáze sú najmenej nákladné.
  • Unit testy – po otestovaní kódu developerom nasleduje automatizované testovanie jednotiek, teda jednotlivých častí aplikačného programu, pre zaistenie funkčnosti kódu. Aj tento druh testov realizuje programátor, keďže sa zapisujú vo forme programového kódu.
  • Komponent/modul testovanie – komponent/modul testy vykonávajú predovšetkým vývojári pri veľkých IT projektoch v prípade testovania funkčnosti konkrétneho komponentu alebo modulu programu.
  • Integračné testy – testovanie má na starosti testovací tím, ktorý ich využíva na overenie vnútornej integrity softvéru. Ich úlohou je zistiť, či jednotlivé komponenty a moduly medzi sebou správne komunikujú.
  • Funkčné testovanie – testy slúžia na otestovanie funkčnosti celého programu z pohľadu koncového používateľa a splnenia akceptačných kritérií.
  • Systémové testy – v neskoršej fáze vývoja softvéru prebieha tiež systémové testovanie, ktorým tester softvérových aplikácií testuje program ako celok z pohľadu zákazníka ešte pred tým, ako mu ho odovzdá. Pomocou rôznych simulácií tak vytvára testovacie scenáre a opakovane opravuje chyby či možné riziká.
  • Akceptačné testovanie – akceptačné testy realizuje už samotný zákazník, ktorý poskytuje feedback na softvérový produkt.
mladý muž it tester s bradou a okuliarmi pracuje na počítači za stolom
Testovanie softvéru možno rozdeliť podľa spôsobu a zámeru realizácie.

Testy na základe viditeľnosti kódu zo strany testera

Podľa prístupu IT testera k zdrojovému kódu programu rozlišujeme tri typy testov, a to tzv. testovanie Black box, White box a Grey box.

  • Black box testy – v prípade tohto testovania nemá tester prístup ku kódu, takže iba pozoruje a vyhodnocuje výsledky programu na základe svojich vstupov.
  • White box testovanie – pri tomto type testov má tester prístup k vnútornej štruktúre softvéru a jeho úlohou je preveriť priechody a reakcie zdrojového kódu. Testy píše na základe znalosti aplikácie.
  • Grey box testy – ako už naznačuje ich názov, tento druh testovania predstavuje kombináciu Black box a White box testov. Využíva sa napríklad pri testovaní z hľadiska používateľského rozhrania, kedy tester overuje program zo strany koncového používateľa s čiastočnou znalosťou kódu.

Testy podľa chodu softvérového programu

Ďalšou oblasťou je rozdelenie testov na statické a dynamické. Statické testovanie nepožaduje chod aplikácie, pretože prebieha predovšetkým v prvotných fázach SDLC, teda pred uvedením programu do prevádzky. Využíva sa na analýzu zdrojového kódu, kontrolu požiadaviek a ideálne na odhalenie potenciálnych problémov a rizík aplikácie.

V prípade, že sa statické testy robia prostredníctvom analyzátora kódu, ide o statickú analýzu kódu. Ak ich realizuje samotný developer, tak ich nazývame (code) review. Na druhej strane, dynamické testovanie sa už nezaobíde bez chodu programu a slúži na zabezpečenie bezproblémovej prevádzky v neskorších fázach vývoja.

Testy z pohľadu dimenzií kvality softvéru

Pri softvérovom testovaní je nevyhnutné nehľadieť iba na funkčnosť programu, ale zamerať sa aj na dimenzie kvality, ktoré vymedzuje norma ISO/IEC 25010:2011.

  • Funkčnosť – pri testovaní funkčnosti zisťujeme, či sa jednotlivé funkcie aplikácie správajú podľa zadefinovaných funkčných špecifikácií a požiadaviek.
  • Spoľahlivosť – testy slúžia na overenie nemenného správania programu hlavne po chybe, výpadku alebo preťažení a zabezpečenie toho, že tieto problémy systém deteguje a ohlási.
  • Bezpečnosť – zaistenie bezpečnosti systému a odlíšenia prístupových rol.
  • Použiteľnosť – testovanie systému z hľadiska používateľskej skúsenosti. Jeho cieľom je zaistiť, aby bola aplikácia user-friendly.
  • Udržateľnosť – testy skúmajú, či je aplikáciu možné v budúcnosti aktualizovať, meniť, testovať atď.
  • Výkon – testy zamerané na zabezpečenie plynulého, rýchleho a bezproblémového chodu programu.
  • Kompatibilita – testuje sa schopnosť a možnosť zlúčenia aplikácie s iným systémom.
  • Prenositeľnosť – schopnosť programu bežať aj na inom hardvéri alebo operačnom systéme.

Testy na základe rozsahu

Softvérové testy možno v neposlednom rade vymedziť tiež podľa rozsahu na smoke a regresné testovanie. Smoke (dymové) testy slúžia na rýchle a základné overenie funkčnosti celého programu, napríklad po aktualizácii softvéru. Vykonávajú sa teda v malom počte na rozdiel od regresných testov. Tie sa využívajú na zistenie toho, či aplikácia po aktualizácii softvéru funguje rovnako ako predtým, a to pomocou pôvodných testovacích scenárov.

Detekcia chýb pri testovaní softvéru

Súčasťou software testovania je taktiež detekcia chýb, ktorá môže byť označená ako správna alebo nesprávna. V prípade, že program neobsahuje žiadnu relatívnu chybu, tak je označená ako správne, prípadne chybne vyhodnotená.

Na základe množstva správnych a nesprávnych/chybných detekcií, ako aj celkovej veľkosti vzorky možno následne vyhodnotiť, koľko metrík charakterizuje úspešnosť použitého nástroja.

  • Senzitivita – predstavuje časť chýb nájdenú medzi konštrukciami s chybou.
  • Špecificita – zosobňuje časť konštrukcií, v ktorých nebola hlásená ani objavená chyba.
  • Precíznosť – je časť správnych detekcií chýb.
  • Presnosť – ide o relatívny počet správnych rozhodnutí ohľadom označenia ne/správnosti detekcií.

Ako môžeš vidieť, existuje skutočne veľké množstvo testov, ktoré možno využiť pri testovaní softvéru. Odlišovať sa môžu podľa toho, v akej fáze vývoja sa realizujú, akým spôsobom sú vykonávané, v akom rozsahu či na ktorú dimenziu kvality sa zameriavajú. Najdôležitejšie je teda vedieť, čo, ako a s akým cieľom plánuješ testovať.

Si IT tester bez praxe a chceš sa dozvedieť o testovaní ešte viac? Poď svoje skills rozvíjať práve k nám do msg life Slovakia, kde ťa čakajú nadpriemerný plat IT testera, príjemný kolektív kolegov a atraktívne firemné benefity. Dvere u nás má otvorené aj ostrieľaný špecialista IT tester či IT tester konzultant. Prezri si voľné pracovné miesta a nakopni svoju kariéru v IT v medzinárodnej spoločnosti.

Daj nám o sebe vedieť