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ářů.