Co je Integrační Testování a proč je důležité?
Integrační testování je fáze testování softwaru, kdy jsou jednotlivé moduly kombinovány a testovány jako celek. Díky integračnímu testování můžeme ověřit, zda tyto komponenty správně spolupracují, když jsou integrovány do jednoho celku, a provádí se za účelem vyhodnocení shody systému nebo jeho součásti s funkčními požadavky. Integrační testy obvykle probíhají po dokončení unit testování a před systémovými testy. Rozlišujeme také systémové integrační testy (SIT).
Rozdíl mezi SIT a integračním testování je v tom, že integračním testováním testujeme vzájemné komunikace mezi moduly. Zajímá nás, zda data a informace mezi nimi jsou správně přenášeny a zpracovány. Jako příklad zde můžeme uvést komunikaci mezi databází a zobrazovanými údaji v systému pro správu uživatelů. Naproti tomu při SIT testujeme integrace celého systému v rámci většího celku, jehož cílem je ověřit, že všechny části tohoto komplexního celku, včetně databází, softwaru a hardwaru, správně spolupracují, když jsou integrovány do jednoho funkčního celku. Příkladem může být testování, že bankovní systém správně komunikuje s externími platebními branami a interními účetními systémy. V tomto případě testujeme více jednotlivých komponentů naráz.
Obě fáze mají své místo ve vývojovém cyklu. Zatímco integrační testování probíhá dříve, bývá menšího rozsahu a zaměřuje se na testování interakcí mezi moduly v rámci jednoho softwarového modulu, SIT se provádí blíže ke konci projektu, kdy jsou všechny subsystémy již integrovány, rozsah bývá zpravidla širší a zahrnuje testování celého systému včetně jeho interakce s externími systémy a prostředím.
Integrační testování je velmi důležité z mnoha aspektů. I když během unit testů mohly být všechny moduly řádně otestovány samostatně, stále se mohou objevit bugy nové, jakmile tyto moduly propojíme. Integrační testování nejen zaručí, že tyto chyby nalezneme, ale také to, že jednotlivé komponenty pracují podle funkční specifikace. Hlavními důvody pro integrační testování jsou:
spolehlivost systému – pomocí testování zaručíme, že propojení mezi moduly nevede k neočekávaným chybám nebo dokonce kritické situaci, což zvyšuje celkovou spolehlivost systému,
bezproblémová komunikace – ta zajišťuje, že data a příkazy jsou správně přenášeny mezi různými komponentami, což je klíčové pro správnou funkčnost celého systému,
omezení rizik – čím dříve nalezneme chyby, tím snazší a levnější je jejich oprava (viz pravidlo č. 3 v ISTQB Foundation Level). Integrační testování odhaluje chyby, které by mohly mít vážné důsledky, pokud by v systému zůstaly,
podpora agilního vývoje – integrační testování se dobře doplňuje s agilním vývojem díky častému testování kódu, posilování týmové spolupráce, vylepšováním komunikace a zajištěním funkčností kódu dle designové specifikace,
udržitelnost a škálovatelnost – integrační testování též pomáhá zajistit, že náš systém je připraven na možné budoucí rozšíření nebo aktualizace, aniž by došlo k narušení jeho současné funkčnosti,
zlepšení uživatelské zkušenosti – když náš systém funguje spolehlivě a bez chyb, naši uživatelé mají lepší zkušenost, což následně zvyšuje důvěru v produkt a jeho dlouhodobou úspěšnost.
Když jsme zmínili důvody, proč testovat integračně, neměli bychom zapomenout ani na jisté nevýhody, nebo spíše “výzvy”, tohoto typu testování. Mezi ně se řadí zejména vysoká časová náročnost, kdy toto testování zpravidla zabírá více času než unit testování, jelikož zahrnuje testování interakcí mezi více a někdy i mnoha moduly naráz - čím více takových modulů je integrováno, tím více času testování vyžaduje. Mezi další mohou patřit složitost lokalizace chyb, závislost na vývoji všech modulů, náročnost na vytváření testovacích scénářů a nepokrytí všech aspektů systému.
V další kapitole se podíváme na to, jak integrační testování funguje a jaké typy testování můžeme použít.