Testy jsou nedílnou a velmi důležitou součástí vývoje softwaru (nebo by tomu tak alespoň být mělo). Problém je, že testy mohou být velmi obšírné a testovací fáze může zahrnovat celou řadu různých typů zkoušek. A že se někdy namísto slůvka testování používají pojmy jako verifikace či validace, jen potvrzuje, o jak širokou oblast se jedná. Abychom však lépe pochopili celou oblast testování, můžeme jí v rámci zjednodušení rozdělit do tří hlavních kategorií:
Technické testy
U testů z této kategorie je důraz kladen především na technickou stránku softwaru. Testeři se nevěnují tomu, zda je program uživatelsky přívětivý nebo jestli se na trhu uchytí. Zajímají se například o to, aby byl zdrojový kód dobře napsaný, aby program fungoval a aby byl kompatibilní s dalším softwarem. Mezi technické testy patří kupříkladu:
Regresní testy: Využívají se při opětovném testování funkcí a vlastností aplikace po zanesení určitých změn (opravené chyby, implementace nových funkcí, vydání nové verze softwaru apod.). Cílem je ověřit, že tyto změny nemají žádný vliv na stávající funkce a vlastnosti. Ověřují se tedy primárně části kódu, které zůstaly beze změn.
Testování kompatibility: Ověření toho, že například řadiče softwaru běží pod určitým operačním systémem/na určitém hardwaru nebo že je software zpětně kompatibilní se starší verzí.
Testování funkcionality (funkční testy): Zkouška toho, zda jednotlivé funkce softwaru fungují dle předpokladů a program plní to, k čemu byl určen (dle zadaných požadavků). Do této kategorie řadíme také testy, které se snaží program „shodit“, bezpečnostní testy, testy instalace atd.
Testy výkonu
Výkonnostní testy bychom sice mohli zařadit do kolonky technických testů, jsou však natolik specifické, že jim věnujeme vlastní kategorii. Fokus zde spočívá na ověření výkonu během různých situací. Mezi testy výkonu patří kupříkladu:
Zátěžové testy: Zkouška škálovatelnosti – co se stane, pokud se např. zvýší počet aktivních uživatelů softwaru? (Pozn.: podle některých metodik jsou zátěžové testy synonymem výkonnostních testů, podle jiných je pouze jedním z typů výkonnostních testů – tak je tomu i v našem rozdělení.)
Test objemu dat: Co se stane, pokud např. databáze „nabobtná“, co do objemu? To ověříte pomocí této zkoušky.
Test hraniční zátěže: Jak software zvládne extrémní zatížení, se dozvíme díky tomuto typu testu.
Testy použitelnosti a UX (user experience)
Cílem těchto testů je ověřit, jak dobře se software obsluhuje, jaká je jeho kvalita, případně jakou má šanci na dnešním trhu. U těchto testů hraje často menší či větší roli osobní vkus testerů, ve finále jde přitom především o to schválit či zavrhnout (navrhnout potřebné úpravy) software, který má být dodán zákazníkovi nebo uveden na trh. Mezi tyto typy testů patří kupříkladu:
Akceptační testy: Odpovídá software specifikacím, je dostačující? V ideálním případě je odpovědí na otázku prosté ano. V reálu však mnohdy uslyšíte něco ve stylu „Software není špatný, je však třeba opravit to či ono…“.
Test použitelnosti: Používá se program snadno? Je uživatelské rozhraní intuitivní? Na tyto a další otázky vám odpoví právě test použitelnosti.
Alfatesty a betatesty: Testování ranné provozuschopné verze softwaru, které se často provádí interně přímo u vývojáře. Podle připomínek se opraví nejzávažnější chyby a následuje betatest, jež už zahrnuje větší počet testerů (často bývá veřejný, např. u počítačových her) a nabízí v podstatě pre-final verzi programu.
Testy lokalizace: Jsou překlady do dalších jazyků v uživatelském rozhraní daného softwaru přesné? Byl program přizpůsoben také reáliím každého státu (např. správná měna)?
Další testy
Zvláštní kategorie testů se zabývá kontrolou toho, jak probíhal samotný vývoj softwaru. Ta většinou zahrnuje kontrolu rizik, potřebného času a nákladů za pomoci různých metrik. O tom však někdy příště…
Čtěte také:
→ HP Unified Functional Testing pomůže s testováním funkčnosti softwaru
→ Agilní a extrémní programování: Úvod do problematiky aneb kde se vzala formalizovaná revize kódu