
V dnešním rychle se vyvíjejícím IT světe se Test Automatizace stala běžnou součástí testování. Aplikace jsou stále komplexnější a s tím je potřeba také vytvářet účinou strategii jak je testovat. Co to vlastně Test Automatizace je a stačí nám pouze testování frontendu? Na to se podíváme v dnešním článku.
Co je to Test Automatizace?
Test Automatizace je v jednoduchosti exekuce testů prováděná počítačem namísto člověkem prováděná software nástroje. Porovnává aktuální a očekávané výstupy, nastavuje test preconditions a jiné funkce kontroly a reportování testů. Testovat můžeme jak frontend aplikace, tak API a DB.
Poznámka: Automatizace testování může znamenat i například performance, security, unit testování. My se dnes zaměříme zejména na funkční automatizované testování frontend a backend aplikací.
Jako nástroje můžeme zmínit například:
- Selenium,
- Cypress,
- Playwright,
- SOAP UI,
- Robot framework,
- Katalon,
- Postman,
- a další.
Jak můžete testy psát?
Skriptování: Testy programujete přímo ve frameworku určeném k automatizaci testů.
Record and playback: Testy nahrajete pomocí nástroje a ten následně vygeneruje testy. Tento způsob ovšem není příliš stabilní.
Výhody Test Automatizace
Rychlost a efektivita: automatizace může exekuovat testy rychleji, než lidé. Umožňuje rychlejší zpětnou vazby
Konzistance a opakovatelnost: Automatizované testy zabezpečují, že testovací scénáře jsou testovány vždy stejně.
Zvýšené pokrytí testy: Test Automatizace umožňuje používat širší kombinace testů. To umožňuje detailnější kontroly v aplikacích.
Škálovatelnost: Automatizace se jednodušeji škáluje (rozšiřuje), nežli manuální testování. Dnes ve většině případů škálování probíhá automaticky přímo v cloud prostředí.
Možná rizika a problémy
Automatizace Testování má tak jako každý jiný přístup k vývoji/testování aplikace své rizika a možné problémy s nimi související. S čím se můžete setkat?
Automatizovatelnost aplikace: Není zdaleka pravidlem, že každá aplikace je automatizovatelná. Pro to, abychom mohli pohodlně automatizovat, potřebujeme několik oblastí, například:
- Stabilita prostředí
- Identifikátory elementů (frontend testování)
- Definované procesy
- Dokumentace (zejména API, DB)
Čistota kódu: pokud jsou testy psané takzvaným spaghetti kódem, nečitelné, nepřepoužitelné či duplicitní, pak může nastat selhání celé automatizace způsobené nutností přílišné údržby. Setkal jsem se na projektu i s tím, že údržba byla dominantní činnost, protože testy byly příliš nestabilní
Zastarávání testovací sady: testy zastarávají a přestávají být relevantní. Pokud se testovací sada pravidelně nereviduje, může to způsobit neefektivnost testů. Automaty například mohou „přehlédnout“ chyby.
Délka běhu testů: existují (špatné) přístupy k automatizování, které vytváří neskutečně dlouhé testy, které mohou běžet i desítky hodin. Jeden můj kolega dokonce spravoval testy, které běžely 3 dny. V tu chvíli je pak automatizace méně efektivní a nepřináší týmu benefity.
Dlouhý vývoj: Týmy často automatizují obrovské testy a staví komplexní frameworky. To ale znamená spoustu práce.
Zajímá vás, proč automatizované testování selhává? Přečtěte si náš článek 9 důvodů proč selhává automatizace testování.
Jak začít automatizovat?
Já začínal tak, že jsem si prostě přečetl jak funguje automatizace v Seleniu a pustil se bez znalostí rovnou do automatizace. Vám ovšem tento přístup příliš nedoporučuju.
Proč?

Skončilo to téměř fiaskem. Po půl roce mého amatérského testování jsme museli celý projekt pozastavit a začít vyvíjet od znovu. Díky tomu, že jsem programoval tak, jak jsem si to přečetl na internetu, vytvořil jsem obrovský spaghetti kód, který nebyl dlouhodobě udržitelný. Také jsem pracoval čistě jen se Selenium bez jakéhokoliv testovacího frameworku. Což mělo za důsledek problém s reporty a spouštěním na serveru.
Co k automatizování potřebujete?
Programování: Měli byste zvládat alespoň základy programování, nejlépe objektového či funkcionálního přístupu
Best practises: Je dobré znát doporučené a vyzkoušené přístupy k automatizaci. V tom vám mohou pomoc různé kurzy či komunitní skupiny.
Cíle a očekávání: Před začátkem testování stanovte cíle a cestu jak jich dosáhnete.
Pomoc: Je dobré mít někoho, kdo vám pomůže při vývoji nebo alespoň udělá code review.
V Tredgate jsme pro vás připravili kurzy, které mají za cíl Vám pomoci s automatizací od začátku do konce. Podívejte se na naše kurzy zde.
Různé Vrstvy Test Automatizace
Tak jako v manuálním testování, tak i v automatizacích můžeme testovat různé vrstvy aplikace jako jsou:
Unit testování: Testování zdrojového kódu.
Integrační testování: Testování komunikace mezi komponenty, systémy.
End-to-end/akceptační testování: Testování aplikací jako celku.
Je dobré i v automatizacích používat testovací pyramidu, která říká, že nejvíce úsilí bychom měli věnovat integračnímu a systémovému testování. Až poté akceptacím.

Frontend testování
Frontend testování přistupuje k aplikaci skrz její grafické rozhraní (GUI) a interaguje přímo s jejími prvky. Tento přístup je nebližší tomu, co provádí běžný uživatel aplikace.
Pokud se chcete věnovat frontend testování, je dobré začít vždy malými testy (smoke, sanity). Automatizace může fungovat jako stavebnice. Začnete se základy a následně na již vytvořených testech stavíte komplikovanější.
Tímto způsobem zajistíte pokrytí rizik a vaše automatizace bude mít větší šanci na úspěch.
API testování
Co je to API?
API je zkratka z anglického “Application Programming Interface”, lze doslovně přeložit jako aplikační programové rozhraní. Jde o soubor definovaných pravidel a metod, pomocí kterých mohou aplikace komunikovat mezi sebou. API umožňuje, aby se softwarové aplikace „dohodly“ na tom, jak mezi sebou budou předávat data a jakým způsobem mohou využívat funkcí a procedur ostatních aplikací.
API testování probíhá tak, že testuje požadavky (request) a odpovědi (response) serveru. Můžeme tak testovat například:
- Strukturu požadavků,
- Data,
- Logiku aplikace.
Dnešní moderní automatizační frameworky (například Cypress nebo Playwright). Umožňují testovat API spolu s Frontend testy.
DB testování
Co je to Databáze?
Databáze je strukturovaná sbírka dat. Tato data jsou obvykle organizována tak, aby bylo možné k nim snadno přistupovat, spravovat a aktualizovat je. Databáze mohou být jednoduché, jako například seznam telefonních čísel, mohou být ovšem mnohem složitější a obsahovat miliony záznamů rozdělených do tabulek, které mohou být navzájem propojeny pomocí relací.
Databázové testování se soustřeďuje na testování tabulek, vztahů a skriptů. Tento typ testování není až tolik znám jako automatizace. Pokud píšeš například jen SQL dotazy, vytváříš takovou malou automatizaci.
Unit testování
Testování, provádí vývojáři přímo v kódu. Unit testy jsou většinou vytvářeny programátory a testeři do nich nezasahují.
Měli bychom testovat pouze Frontend?
Testování pouze frontendu může být přitažlivé, zejména pokud je aplikace primárně orientována na uživatele. To, že otestujete frontend a testy jsou v pořádku ale neznamená, že v aplikaci již nejsou chyby na úrovni API nebo databáze. Tyto chyby pak mohou v budoucnu napáchat značné škody.
Přehlédnutí testování backendu může vést k vážným problémům s výkonností, bezpečností a integritou dat. Proto je důležité provádět komplexní testování celé aplikace, včetně frontendu i backendu.

Frontend testování je také nejnáročnější na vytváření automatických skriptů. Je časově vyčerpávající pokrývat veškeré funkcionality aplikace jen UI testy. Proto je lepší zvolit kombinovaný způsob, kde se část aplikace testuje pomocí API a DB testů.
Jakou strategii zvolit?
Při výběru strategie pro testování zvaž potřeba následující faktory:
Opakování: Automatické testy jsou obecně náročnější na přípravu, než manuální exekuce. Proto je dobré vybírat takové testy, které se často opakují. Například: regresní nebo smoke testy.
Jednoznačnost: Testy neumí myslet tak jako člověk. Proto je důležité mít testy nadefinované jednoznačně. Test Engineer by měl rozhodnout co se v testu bude dít, ne skript sám.
Přepoužitelnost: Jak už jsem zmiňoval výše, testy jsou jako stavebnice. Programujte testy tak, aby se daly přepoužít v budoucnu.
Udržitelnost: Myslete při programování testů na to, aby se daly jednoduše udržovat. K tomu vám pomůže například objektový nebo funkcionální přístup.
Profesionalita: Automatizace testování je role jako každá jiná. Dbejte na to, abyste byli kompetentní a věděli co děláte.
Testovací pyramida: Dodržujte principy testovací pyramidy. Nesnažte se mít všechny testy na frontendu.
Jednoduché testy, Quick Wins: Začínejte jednoduchými, malými testy. Pomůže vám to rozběhnout automaty a přinést benefit týmu rychleji.
Závěr
Automatizace testování přináší mnoho výhod, jako je rychlá zpětná vazba, konzistence a škálovatelnost. Avšak jako každý nástroj nebo metoda má svá rizika a omezení. Důležité je vybrat správnou strategii, nástroje a metody, které nejlépe vyhovují vašim potřebám a schopnostem týmu. Se správným přístupem může testování automatizace značně zvýšit kvalitu vyvíjené aplikace a efektivitu vývojového cyklu.
Chcete se dozvědět více? Seznamte se s automatizací testování a staňte se experty! Zjistěte více a přihlaste se nyní!