NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Základy testování

V dnešní lekci základů testování softwaru se dozvíme, co testování je a proč je nezbytné. Projdeme si základní principy testování, testovací činnosti a role a nakonec si shrneme osvědčené postupy při testování.

Minimální požadavky

Kurz předpokládá znalost základních konstrukcí libovolného programovacího jazyka a objektově orientovaného programování.

Proč testovat

Nejprve se pojďme podívat na to, proč je testování nezbytnou součástí vývojového procesu. Hlavním cílem je odhalit chyby a nedostatky co nejdříve, aby se zabránilo jejich šíření do produkční verze, kde by mohly způsobit závažné problémy. Nedostatečné testování vystavuje firmu nejen riziku finančních ztrát a poškození reputace, ale i právním důsledkům. Co je však ještě důležitější, špatně otestovaný software může dokonce ohrozit lidské životy, zejména v oblastech, jako je zdravotnictví, doprava nebo bezpečnostní systémy.

Testování tedy není jen technickou formalitou, ale především klíčovým krokem k ochraně uživatelů a jejich bezpečí.

Příklad – Softwarová chyba

V letech 2009–2011 čelila Toyota obrovskému problému, kdy některé modely automobilů zaznamenaly nechtěné zrychlení, což vedlo ke stovkám nehod a údajně k úmrtí až 89 lidí. Zpočátku byla za příčinu považována mechanická závada, zejména špatně umístěné podlahové koberečky, které mohly zaseknout plynový pedál. Později se však ukázalo, že hlavní problém spočívá v softwaru elektronického systému řízení škrticí klapky (ETCS). Tento software obsahoval chyby, které vedly k tomu, že vozidlo mohlo zrychlit bez zásahu řidiče. Toyota byla nucena svolat více než 10 milionů vozidel po celém světě, což vedlo k nákladným opravám a finančním ztrátám. Toyota se také potýkala s mnoha soudními spory, kdy musela čelit obviněním ze zanedbání bezpečnosti.

Toyota - Testování softwaru dle ISTQB

Příklad – Chybná aktualizace

V červenci 2024 došlo k rozsáhlému globálnímu IT výpadku, který zasáhl různé sektory po celém světě. Tento incident byl způsoben chybnou aktualizací bezpečnostního softwaru Falcon od společnosti CrowdStrike. Aktualizace, která byla nasazena na systémy využívající Microsoft Windows, vedla k masivnímu selhání tisíců zařízení. Incident způsobil tzv. modrou obrazovku smrti, čímž byly zasaženy klíčové infrastruktury, jako jsou letiště, nemocnice či tísňové služby. To vedlo k tisícům zrušených letů, banky a platební terminály byly také dočasně mimo provoz. Nefungovaly nemocniční systémy, což vedlo ke zpoždění či zrušení klíčových lékařských zákroků. V některých regionech USA došlo k selhání tísňových volání, což ohrozilo bezpečnost a zdraví lidí, protože se k nim pomoc nedostala včas.

Modrá obrazovka smrti - Testování softwaru dle ISTQB

Co je to testování?

Testování softwaru je proces hodnocení kvality softwaru s cílem minimalizovat riziko selhání. Jde o sadu činností zaměřených na odhalování chyb a vyhodnocování kvality. Testování zahrnuje nejen verifikaci, tedy kontrolu, že vývojový tým implementoval funkci, která odpovídá technickým specifikacím, například že tlačítko "Odeslat" správně reaguje na stisknutí, ale také validaci, tedy kontrolu, zda tato funkce splňuje skutečné potřeby uživatele, tedy zda tlačítko "Odeslat" skutečně odesílá data tak, jak uživatel očekává.

Testování může být dynamické nebo statické.

Static Testing (Statické testování)

  • nevyžaduje spuštění testovaného softwaru
  • zahrnuje revize a statickou analýzu

Dynamic Testing (Dynamické testování)

  • vyžaduje spuštění testovaného softwaru
  • používá různé techniky testování a přístupy k testování s cílem definovat testovací případy

Testování není jen technická činnost, ale vyžaduje plánování, řízení, odhadování, monitorování a kontrolu. Tato činnost zahrnuje analytické dovednosti, kritické myšlení a specializované znalosti testerů.

Další informace o konceptech testování softwaru lze nalézt v normě ISO/IEC/IEEE 29119-1.

Cíle testování

Typickými cíli testování jsou:

  • ohodnocení pracovních produktů,
  • vyvolání selhání a nalezení chyb,
  • zajištění požadovaného pokrytí testovaného objektu,
  • snížení úrovně rizika,
  • ověření, zda byly splněny požadavky,
  • ověření, že testovaný objekt vyhovuje smluvním, právním a regulatorním požadavkům,
  • poskytnutí informací všem stranám tak, aby mohly přijmout rozhodnutí,
  • vytvoření důvěry v danou úroveň kvality,
  • kontrola, zda je testovaný objekt kompletní a funguje dle očekávání.

Tyto cíle se mohou lišit v závislosti na kontextu testování, jako je povaha testovaného produktu, úroveň testování, rizika a obchodní potřeby.

Testování a ladění

Testování může vyvolat selhání, která jsou způsobena chybami v softwaru (dynamic testing), nebo může přímo odhalit defekty v testovaném objektu (static testing).

Dynamic testing se snaží vyvolat selhání a ladění se zabývá hledáním příčin takových selhání, jejich analýzou a odstraněním. Proces ladění v tomto případě zahrnuje reprodukování selhání, diagnostiku a opravu příčiny.

Praktický příklad

Představme si, že vyvíjíme aplikaci pro e-shop a provádíme testování jejího funkčního košíku, který umožňuje zákazníkům přidávat položky, odebírat je a dokončit objednávku:

Diagram dynamic testing - Testování softwaru dle ISTQB
Dynamic testing

Tester provádí dynamic testing, tedy simuluje chování uživatele tím, že přidává položky do košíku a pokouší se odeslat objednávku. Při testování zjistí, že po přidání položky do košíku aplikace neočekávaně spadne (selhání). Vývojář pak začne ladit problém, snaží se reprodukovat selhání – přidá do košíku stejné tři položky a znovu sleduje pád aplikace. Poté zkoumá příčinu selhání. Následně tuto chybu opraví a otestuje, zda aplikace nadále funguje správně.

Confirmation a regression testing

Následuje tzv. confirmation testing (konfirmační testování), které ověřuje, zda došlo v důsledku těchto oprav k vyřešení problému. Provádí jej ideálně stejná osoba, která provedla prvotní test. Kromě toho lze také provést tzv. regression testing (regresní testování), které se zaměřuje na ověření, že změny v kódu (např. opravy chyb, nové funkce nebo úpravy stávajících funkcí) neovlivnily negativně již fungující části aplikace. Cílem je zajistit, že nové změny nevyvolaly chyby nebo neočekávané chování v oblastech, které byly dříve správně otestovány a fungovaly bez problémů. V našem příkladu tedy tester poté provede confirmation testing, kdy zopakuje stejný test, aby se ujistil, že pád aplikace byl opraven. Pokud košík funguje správně, je problém vyřešen. Kromě toho tester provede i regression testing a zkontroluje, zda oprava chyby ve správě košíku neovlivnila další části aplikace.

Static testing

Static testing přímo identifikuje defekt, ladění se pak zabývá jeho odstraněním. Při static testing obvykle není nutno provádět reprodukování a diagnostiku, protože nachází přímo defekty a nemůže způsobit selhání. Tester například může provést kontrolu zdrojového kódu. Zjistí, že v kódu je špatně ošetřena manipulace s prázdným košíkem, kde chybí kontrola, zda košík obsahuje nějaké položky, před pokusem o dokončení objednávky. Na základě této analýzy tester odhalí defekt bez nutnosti spuštění aplikace a informuje vývojáře, který tento problém následně opraví.

Zdrojem této lekce jsou Učební osnovy – Certifikovaný tester základní úrovně ver. 4.0. Copyright © 2023 autoři verze 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 (předseda), Adam Roman, Lucjan Stapp, Stephanie Ulrich (místopředseda), Eshraka Zakaria

V příští lekci, Testovací proces, si vysvětlíme, proč je testování nezbytné. Podíváme se na základní principy testování. A nevynecháme ani základní principy, testovací činnosti, testware a role v testování.


 

Všechny články v sekci
Testování softwaru dle ISTQB
Přeskočit článek
(nedoporučujeme)
Testovací proces
Článek pro vás napsala Jana Zimčíková
Avatar
Uživatelské hodnocení:
47 hlasů
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