Rubriky
QA&T – Our Approach Your Edge Blog

Automatizace testování

Automatizované testování zefektivňuje procesy spuštěním testů bez lidského zásahu, čímž šetří čas a snižuje opakující se úkoly pomocí naprogramované automatizace.

Automatizované testování je přístup, při kterém se testy provádějí bez zásahu člověka. Automatizované testy jsou vytvářeny pomocí různých programovacích technik a poté jsou spuštěny automaticky, když je to požadováno. Tímto způsobem automatizované testování snižuje úsilí a čas potřebný pro opakované úkoly.

Benefity

Pokud je automatizace testů nasazena efektivně, umožňuje provádět více testů (pokrýt širší rozsah funkcionalit nebo je otestovat do větší hloubky), dělat to rychleji a efektivněji.

  • Rychlejší provedení ve srovnání s ručním prováděním testů
  • Vyšší spolehlivost díky konzistenci automatizace ve srovnání s manuálním úsilím
  • Lepší znovupoužitelnost automatizovaných testů, protože testovací skripty a jejich části mohou být použity opakovaně
  • Širší rozsah testování v daném čase než při manuální exekuci
  • Lepší integrace s vývojem softwaru (např. spuštění testů při aktualizaci repozitáře)
Výzvy
  • Náročnější zavedení automatizovaného testování ve srovnání s manuálním testováním
  • Vyšší požadavky na Test Engineery – de facto specializovanými softwarovými vývojáři
Automatizované úrovně testů
  • Unit Tests: Dnes již rozšířená dobrá softwarová praxe, kdy se při aktualizaci softwarového repozitáře vývojářem automaticky spouštějí testy jednotlivých funkcí
  • Integration Tests: Automatické testování kombinace jednotlivých částí systému k ověření, že jejich interakce fungují správně
  • System Tests: Automatické testování kompletního systému je hlavním zaměřením naší platformy pro automatizované testování (Automated Testing Platform):
    • Smoke Tests: Testování základních funkcionalit systému po změnách v kódu nebo prostředí, aby se ověřilo, že hlavní funkce systému fungují správně a že systém je dostatečně stabilní pro další podrobné testování
    • Functional Tests: Testování funkcionalit systému pomocí vhodných vstupů a zkoumání výstupů pro zajištění toho, že každá funkce softwaru funguje podle očekávání
    • Regression Tests: Regresní testy, často prováděné před nasazením nové verze do produkčního prostředí, se provádějí po změnách v kódu, aby se zajistilo, že tyto změny negativně neovlivnily stávající funkčnost systému.
  • User Acceptance Tests: Automatizace může podpořit tyto testy, je však zásadní zajistit, aby testy uživatelského přijetí přesně odrážely perspektivu koncového uživatele a pokrývaly všechny relevantní případy použití.
  • End-to-end Testing: Testování celého pracovního postupu z pohledu uživatele je náročné kvůli složitosti – procesy často zahrnují mnoho systémů. Může být schůdné začít automatizací menších částí a postupně přecházet k automatizaci větších sekcí.
Kdy zůstat u manuálního testování

Je důležité zmínit, že nasazení Automated Testing není vhodné vždy. Zejména následující situace mohou vést k upřednostnění manuálního testování:

  • Zřídka prováděné testování: Pokud se testování provádí příliš zřídka, může být lepší zůstat u občasného manuálního testování.
  • Nestabilní funkcionalita: Pokud se funkcionalita, která má být testována, vyvíjí relativně rychlým tempem, je lepší nezkoušet s tímto vývojem držet krok a zvážit automatizaci později.
  • Příliš složité integrace: Pokud implementace Automated Testing vyžaduje příliš složité integrace s testovaným systémem pro jeho ovládání, nemusí být implementace Automated Testing hodná vynaloženého úsilí.

Platforma pro automatizaci testování

Platforma pro automatizaci testování se vyvíjela během našich úspěšných zapojení v komplexních projektech. Tato platforma není sama o sobě jediným kompaktním produktem, ale spíše souborem nástrojů, které jsme úspěšně implementovali a využili a které budeme aplikovat v našich budoucích projektech.

Klíčové benefity

Kromě obecných výhod Testing Automation poskytuje Automated Testing Platform specificky následující výhody:

  • Snadná a rychlá údržba testů při změně aplikace prostřednictvím zásahů v modelu aplikace
  • Odstínění autora testů od technických detailů a částí flow, které netestuje
  • Vyšší efektivita a konzistence díky možnosti sdílení testovacích dat
  • Přehlednost a kontrola s reporty a logy s různými formáty a úrovněmi výstupů
  • Podpora paralelní exekuce testů
Klíčové koncepty
  • UI Testing and API Testing: Automated Testing Platform sestává ze svou částí – Front-end pro testování prostřednictvím UI a Back-end pro testování prostřednictvím API – které sdílejí společnou koncepci a lze je použít jak samostatně, tak v kombinaci.
  • Model-driven: Obě části platformy využívají modelovou reprezentaci testované aplikace; testovací scénáře jsou následně implementovány s využitím sdílených modelů, bez nutnosti v návrhu scénáře řešit technické detailní interakce s aplikací.
  • Black Box Testing: Obě části platformy nepředpokládají na straně Test Engineera znalost toho, jak je testovaná aplikace vnitřně implementována.
  • Data-driven Testing: Obě části platformy implementují konfigurační mechanismy pro práci s testovacími daty – modelování business reality jako entitního datového modelu, konfiguraci využití testovacích dat v testech, včetně podpory pro opakované používání bez duplikace dat.
  • Nasazení pro novou aplikaci: Automated Testing Platform sestává z obecných částí a specifických částí, navržených pro testování konkrétní aplikace. Nasazení platformy pro novou aplikaci předpokládá implementaci specifických objektových modelů pro reprezentaci aplikace, přípravu modelu testovacích dat, a přípravu testovacích scénářů.