1. diel - Základy testovania Nové

V dnešnej lekcii základov testovania softvéru sa dozvieme, čo testovanie je a prečo je nevyhnutné. Prejdeme si základné princípy testovania, testovacej činnosti a role a nakoniec si zhrnieme osvedčené postupy pri testovaní.

Minimálne požiadavky

Kurz predpokladá znalosť základných konštrukcií ľubovoľného programovacieho jazyka a objektovo orientovaného programovania.

Prečo testovať

Najprv sa poďme pozrieť na to, prečo je testovanie nevyhnutnou súčasťou vývojového procesu. Hlavným cieľom je odhaliť chyby a nedostatky čo najskôr, aby sa zabránilo ich šíreniu do produkčnej verzie, kde by mohli spôsobiť závažné problémy. Nedostatočné testovanie vystavuje firmu nielen riziku finančných strát a poškodeniu reputácie, ale aj právnym dôsledkom. Čo je však ešte dôležitejšie, zle otestovaný softvér môže dokonca ohroziť ľudské životy, najmä v oblastiach, ako je zdravotníctvo, doprava alebo bezpečnostné systémy.

Testovanie teda nie je len technickou formalitou, ale predovšetkým kľúčovým krokom k ochrane používateľov a ich bezpečia.

Príklad – Softvérová chyba

V rokoch 2009-2011 čelila Toyota obrovskému problému, kedy niektoré modely automobilov zaznamenali nechcené zrýchlenie, čo viedlo k stovkám nehôd a údajne k úmrtiu až 89 ľudí. Spočiatku bola za príčinu považovaná mechanická závada, najmä zle umiestnené podlahové koberčeky, ktoré mohli zaseknúť plynový pedál. Neskôr sa však ukázalo, že hlavný problém spočíva v softvéri elektronického systému riadenia škrtiacej klapky (ETCS). Tento softvér obsahoval chyby, ktoré viedli k tomu, že vozidlo mohlo zrýchliť bez zásahu vodiča. Toyota bola nútená zvolať viac ako 10 miliónov vozidiel po celom svete, čo viedlo k nákladným opravám a finančným stratám. Toyota sa tiež stretávala s mnohými súdnymi spormi, kedy musela čeliť obvineniam zo zanedbania bezpečnosti.

Toyota - Testovanie softvéru podľa ISTQB

Príklad – Chybná aktualizácia

V júli 2024 došlo k rozsiahlemu globálnemu IT výpadku, ktorý zasiahol rôzne sektory po celom svete. Tento incident bol spôsobený chybnou aktualizáciou bezpečnostného softvéru Falcon od spoločnosti CrowdStrike. Aktualizácia, ktorá bola nasadená na systémy využívajúce Microsoft Windows, viedla k masívnemu zlyhaniu tisícov zariadení. Incident spôsobil tzv. modrú obrazovku smrti, čím boli zasiahnuté kľúčové infraštruktúry, ako sú letisko, nemocnice či tiesňové služby. To viedlo k tisícom zrušených letov, banky a platobné terminály boli tiež dočasne mimo prevádzky. Nefungovali nemocničné systémy, čo viedlo k oneskoreniu či zrušeniu kľúčových lekárskych zákrokov. V niektorých regiónoch USA došlo k zlyhaniu tiesňových volaní, čo ohrozilo bezpečnosť a zdravie ľudí, pretože sa k nim pomoc nedostala včas.

Modrá obrazovka smrti - Testovanie softvéru podľa ISTQB

Čo je to testovanie?

Testovanie softvéru je proces hodnotenia kvality softvéru s cieľom minimalizovať riziko zlyhania. Ide o sadu činností zameraných na odhaľovanie chýb a vyhodnocovanie kvality. Testovanie zahŕňa nielen verifikáciu, teda kontrolu, že vývojový tím implementoval funkciu, ktorá zodpovedá technickým špecifikáciám, napríklad že tlačidlo "Odoslať" správne reaguje na stlačenie, ale aj validáciu, teda kontrolu, či táto funkcia spĺňa skutočné potreby užívateľa, teda či tlačidlo "Odoslať" skutočne odosiela dáta tak, ako používateľ očakáva.

Testovanie môže byť dynamické alebo statické.

Static Testing (Statické testovanie)

  • nevyžaduje spustenie testovaného softvéru
  • zahŕňa revízie a statickú analýzu

Dynamic Testing (Dynamické testovanie)

  • vyžaduje spustenie testovaného softvéru
  • používa rôzne techniky testovania a prístupy k testovaniu s cieľom definovať testovacie prípady

Testovanie nie je len technická činnosť, ale vyžaduje plánovanie, riadenie, odhadovanie, monitorovanie a kontrolu. Táto činnosť zahŕňa analytické zručnosti, kritické myslenie a špecializované znalosti testerov.

Ďalšie informácie o konceptoch testovania softvéru možno nájsť v norme ISO/IEC/IEEE 29119-1.

Ciele testovania

Typickými cieľmi testovania sú:

  • ohodnotenie pracovných produktov,
  • vyvolanie zlyhania a nájdenie chýb,
  • zabezpečenie požadovaného pokrytia testovaného objektu,
  • zníženie úrovne rizika,
  • overenie, či boli splnené požiadavky,
  • overenie, že testovaný objekt vyhovuje zmluvným, právnym a regulačným požiadavkám,
  • poskytnutie informácií všetkým stranám tak, aby mohli prijať rozhodnutie,
  • vytvorenie dôvery v danú úroveň kvality,
  • kontrola, či je testovaný objekt kompletný a funguje podľa očakávania.

Tieto ciele sa môžu líšiť v závislosti od kontextu testovania, ako je povaha testovaného produktu, úroveň testovania, rizika a obchodné potreby.

Testovanie a ladenie

Testovanie môže vyvolať zlyhania, ktoré sú spôsobené chybami v softvéri (dynamic testing), alebo môže priamo odhaliť defekty v testovanom objekte (static testing).

Dynamic testing sa snaží vyvolať zlyhanie a ladenie sa zaoberá hľadaním príčin takýchto zlyhaní, ich analýzou a odstránením. Proces ladenia v tomto prípade zahŕňa reprodukovanie zlyhania, diagnostiku a opravu príčiny.

Praktický príklad

Predstavme si, že vyvíjame aplikáciu pre e-shop a vykonávame testovanie jej funkčného košíka, ktorý umožňuje zákazníkom pridávať položky, odoberať ich a dokončiť objednávku:

Diagram dynamic testing - Testovanie softvéru podľa ISTQB
Dynamic testing

Tester vykonáva dynamic testing, teda simuluje chovanie užívateľa tým, že pridáva položky do košíka a pokúša sa odoslať objednávku. Pri testovaní zistí, že po pridaní položky do košíka aplikácia neočakávane spadne (zlyhanie). Vývojár potom začne ladiť problém, snaží sa reprodukovať zlyhanie – pridá do košíka rovnaké tri položky a znovu sleduje pád aplikácie. Potom skúma príčinu zlyhania. Následne túto chybu opraví a otestuje, či aplikácia naďalej funguje správne.

Confirmation a regression testing

Nasleduje tzv. confirmation testing (konfirmačné testovanie), ktoré overuje, či došlo v dôsledku týchto opráv k vyriešeniu problému. Vykonáva ho ideálne rovnaká osoba, ktorá vykonala prvotný test. Okrem toho je možné tiež vykonať tzv. regression testing (regresné testovanie), ktoré sa zameriava na overenie, že zmeny v kóde (napr. opravy chýb, nové funkcie alebo úpravy existujúcich funkcií) neovplyvnili negatívne už fungujúce časti aplikácie. Cieľom je zaistiť, že nové zmeny nevyvolali chyby alebo neočakávané správanie v oblastiach, ktoré boli predtým správne otestované a fungovali bez problémov. V našom príklade teda tester potom vykoná confirmation testing, kedy zopakuje rovnaký test, aby sa ubezpečil, že pád aplikácie bol opravený. Pokiaľ košík funguje správne, je problém vyriešený. Okrem toho tester vykoná aj regression testing a skontroluje, či oprava chyby v správe košíka neovplyvnila ďalšie časti aplikácie.

Static testing

Static testing priamo identifikuje defekt, ladenie sa potom zaoberá jeho odstránením. Pri static testing obvykle nie je nutné vykonávať reprodukovanie a diagnostiku, pretože nachádza priamo defekty a nemôže spôsobiť zlyhanie. Tester napríklad môže vykonať kontrolu zdrojového kódu. Zistí, že v kóde je zle ošetrená manipulácia s prázdnym košíkom, kde chýba kontrola, či košík obsahuje nejaké položky, pred pokusom o dokončenie objednávky. Na základe tejto analýzy tester odhalí defekt bez nutnosti spustenia aplikácie a informuje vývojárov, ktorý tento problém následne opraví.

Zdrojom tejto lekcie sú Učebné osnovy – Certifikovaný tester základnej úrovne ver. 4.0. Copyright © 2023 autori verzie 4.0: Renzo Cerquozzi, Wim Decoutere, Klaudia Dussa-Zieger, Jean-François Riverin, Arnika Hryszko, Martin Klonk, Michaël Pilaeten, Meile Posthuma, Stuart Reid, Eric Riou du Cosquer (predseda), Adam Roman, Lucjan Stapp, Stephanie Ulrich (podpredseda), Eshraka Zakaria

V nasledujúcej lekcii, Testovací proces, si vysvetlíme, prečo je testovanie nevyhnutné. Pozrieme sa na základné princípy testovania. A nevynecháme ani základné princípy, testovacie činnosti, testware a role v testovaní.


 

Ako sa ti páči článok?
Pred uložením hodnotenia, popíš prosím autorovi, čo je zleZnakov 0 z 50-500
Všetky články v sekcii
Testovanie softvéru podľa ISTQB
Preskočiť článok
(neodporúčame)
Testovací proces
Článok pre vás napísala Jana Zimčíková
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autorka se věnuje IT a technologiím. Ovládá Javu, Spring Boot, SQL i frontend a chce pomáhat lidem objevit svůj potenciál v IT světě.
Aktivity