V dnešní IT éře je testování softwaru lukrativní práce, povinnost ale i zábava. Víte ale, o co doopravdy jde?

Co to tedy to testování softwaru je?

Zjednodušeně řečeno, testování softwaru je odhalování chyb v programech. Představte si firmu, co staví dům. Taková firma potřebuje architekta, zedníky (vývojáře), stavební dozor (testery). Architekt navrhne, jak bude dům vypadat, z jakých částí se bude skládat. Zedníci jej podle toho začnou stavět a stavební dozor kontroluje, zda stavba odpovídá zadání jak podle architekta, tak aby výsledný dům vyhovoval rodině, která si jej objednala. Ve vývoji softwaru je to dost podobné. Softwarový architekt navrhne celý softwarový produkt podle potřeb zákazníka. Vývojáři jej nakódují a testeři – stejně jako stavební dozor u domu – kontrolují, jestli softwarový produkt odpovídá zadání, zda má funkce, které zákazník potřebuje, a zda se bude zákazníkům dobře používat. Ideální tester prověřuje chyby ve všech fázích. Co tím myslím? Pojďme se podívat na příklad.

Příklad: Stavební dozor přijde do práce a zjistí, že zedníci včera postavili příčky v koupelně. Zkontroluje tedy koupelnu a zjistí, že umyvadlo přesahuje nad vanu a tedy pokaždé, když někdo bude vylézat z vany, hrozí nebezpečí, že se bouchne o umyvadlo. Vše začne řešit se zedníky a ti mu oznámí, že vše postavili dle zadání. Stavební dozor tedy musí zkontrolovat, jestli je opravdu chyba v zadání, nebo zedníci špatně pochopili výkresy v zadání. Při testování softwaru jsou situace naprosto totožné. Je třeba pravidelně kontrolovat, že to, co bylo naprogramováno, neobsahuje chyby. A pokud ano, podílet se na analýze, zda je chyba u vývojáře (došlo k ní během realizace), nebo již ve dřívějších fázích, jako třeba chyby vzniklé již ve fázi návrhu (chyba architektury).
Co je testování softwaru odborně:
Pokud máte rádi exaktní vyjádření, pojďme se podívat, co říká o testování softwaru Wikipedie. Podle Wikipedie se jedná o empirický technický výzkum kvality testovaného produktu nebo služby prováděný za účelem poskytnutí těchto informací všem zainteresovaným (=stakeholderům). Testování je tedy zejména o hledání určitých informací o produktu jeho zkoumáním.

Kdo jej využívá?

Běžně se používá jako součást vývoje softwaru a nebo při jeho předávání zákazníkovi, který si vývoj objednal (tzv. akceptační testy). Slouží tedy jak vývojovým týmům, tak zákazníkům.

Jak se provádí?

Základní podstata testování je v hledání úspěchu (pozitivní test) či hledání neúspěchu (negativní test). Co to znamená? Tester musí ověřit, že požadované funkce nastanou a nechtěné funkce nenastanou. Podrobně o tom pojednává článek Jak testovat software.

Příklad: Představte si běžný e-shop, kde je sekce pro vložení do košíku. V této sekci může uživatel měnit počet kusů zboží a vaším úkolem je právě tuto funkci otestovat. Pokud máte otestovat, zda funkce zadání počtu kusů funguje správně, můžete provést následující pozitivní test. Změníte počet kusů z 1 na 5. A ověříte, zda se vložilo do košíku 5 kusů. Negativní test může vypadat, tak, že objednáte například -1 kus zboží nebo více zboží, než je skladem. V tomto případě ověříte, že došlo k zahlášení, že takový počet není možné vložit do košíku. Snadné, že? 🙂

Vlastní realizace samotného testování může být ruční, kdy tester musí software sám vyzkoušet a vše „proklikat“ – tomu se pak říká manuální testování – nebo test provádí speciální program (skript), tomu se říká automatizované testování.

K testování se využívají Testovací Techniky, které usnadňují a zrychlují celé testování. Testování je možné také dělit podle různých kritérii – více v článku Typy testování.

Dobré je ještě zmínit, že vyčerpávající testování není možné, a tedy softwarovým testováním není možno zajistit naprostou bezchybnost systému. Zkrátka není možné nasimulovat všechny situace a vstupní hodnoty.

Rozdíl v „testování softwaru“ a „zajištění kvality“ (Quality Assurance)?

Možná jste již někdy narazili na pojem Quality Assurance (česky zajištění kvality, tento výraz se ale moc nepoužívá). Zvláště při hledání práce firmy používají oba výrazy – testování softwaru i quality assurance (dále jen QA). Je mezi nimi rozdíl? Ano, je: testování softwaru je součástí (podmnožinou) QA. Obě dvě oblasti usilují o zlepšení softwaru, ale QA zvyšuje kvalitu díky zlepšení procesu a testování díky hledání chyb. V praxi se ale tyto pojmy moc nerozlišují a většina firem pod nimi vidí jedno a to stejné.

Proč je testování důležité aneb kam vede netestování SW?

Podcenění testování vede k zvýšení nákladů na vývoj. Proč? Pokud chyby nenajdete včas a objeví je až zákazníci nebo uživatelé, je třeba je opravit. A asi si každý dokáže představit, že náklady na opravu chyby, která se najde ještě ve fázi návrhu nebo čerstvě po nakódování, jsou výrazně nižší než náklady na opravu chyby u zákazníka. Tam potřebujeme navíc identifikovat, kde chyba u zákazníka je, kdy k ní dochází, co ji způsobuje, jak ji opravit… a poté realizovat opravu + znovu prověřit, že při opravě jsme nezavedli chyby nové. A to už je práce, co zabaví celý tým. Pokud někdo pochybuje, představme si opět náš příklad s domem z úvodu – a chybu s umyvadlem, které je na nesprávném místě. Pokud chybu najdete hned a umyvadlo umístíte na správné místo, je to brnkačka. Pokud ale pokračujete a vše předáte klientovi, ten se právem zhrozí nad realizací koupelny. Musí se vyjednat, kdo bude platit opravu, pozvat znovu dělníky, vymlátit obkladačky, přesunout umyvadlo atd. Tedy čím dříve chybu najdete, tím levnější je oprava.

Obecně se dá říci, že špatné testování vede k finančním ztrátám, ztrátám reputace a dokonce i ke ztrátám lidských životů.

Příklady takových softwarových chyb v historii:

  • Arian 5, video ze startu. Příčina? Zápis 64bitového čísla do 16bitové. Více informací zde.
  • Microsoft prezentace Windows 98 – video
  • Therac-25 – incident

V dnešní době ale může být testování díky skvělým nástrojům a taky díky agilnímu vývoji neskutečná zábava. Testujte chytře, se zápalem a užijte si to! 🙂

Jestli vám článek pomohl budu rád pokud do komentáře napíšete v čem a nebo pokud na něj dáte lajk či nasdílíte ostatním.