Test Automation
1. Co je test automation?
Test automation je automatické spouštění testů pomocí nástrojů, frameworků a skriptů bez nutnosti manuálního zásahu.
Cílem automatizace není nahradit manuální testování, ale:
- Zrychlit regresní testování
- Zvýšit stabilitu release procesů
- Odhalit chyby dříve
- Snížit množství repetitivní práce
- Podpořit Continuous Integration a Continuous Delivery
- Uvolnit QA prostor pro exploratory testing a rizikové scénáře
Automatizace je dnes běžnou součástí moderního vývoje software, zejména v Agile a DevOps prostředí.
2. Typy automatizovaných testů
Unit testy
Testují malé části aplikace izolovaně, typicky jednotlivé funkce nebo metody.
- Nejrychlejší testy
- Spouští se při každém buildu
- Píší je hlavně vývojáři
calculateTotalPrice()
validateUser()
Integration testy
Ověřují komunikaci mezi komponentami, databází, API nebo externími službami.
- Kontrolují integraci systému
- Odhalují problémy mezi službami
- Často používají testovací databázi
API testy
Testují backend API bez UI vrstvy.
- Rychlé a stabilní
- Vhodné pro business logiku
- Levnější na maintenance než UI testy
POST /payments
GET /transactions
PUT /user/profile
UI / End-to-End testy
Simulují reálné chování uživatele v aplikaci.
- Testují celý flow
- Kontrolují frontend + backend
- Jsou nejpomalejší a nejkřehčí
Příklad:
User login
Wallet payment
Transaction confirmation
Logout
Smoke testy
Rychlá sada kritických testů, která ověřuje, že build není zásadně rozbitý.
- Login funguje
- Aplikace se spustí
- Kritické API odpovídá
Regression testy
Ověřují, že nové změny nerozbily existující funkcionalitu.
- Nejdůležitější kandidát pro automatizaci
- Spouští se pravidelně
- Často běží přes noc nebo v CI pipeline
3. Test Pyramid
Test pyramid doporučuje mít:
- Hodně unit testů
- Méně integration testů
- Malé množství UI testů
UI TESTS
----------------
Integration Tests
-----------------------
Unit Tests
Důvod:
- Unit testy jsou rychlé a levné
- UI testy jsou pomalé a křehké
- Příliš mnoho E2E testů zpomaluje CI
4. Co se hodí automatizovat
- Stabilní regresní scénáře: login, account overview, payment flow, transaction history.
- Smoke testy: základní kontrola funkčnosti buildu.
- Cross-browser testy: Chrome, Firefox, Edge, WebKit.
- Mobilní flow: onboarding, registrace, login, potvrzení platby.
- API validace: response codes, schema validation, business rules.
- Datové scénáře: import/export, reporty, validace dat.
5. Co automatizovat opatrně
Některé oblasti jsou pro automatizaci rizikové nebo drahé na maintenance.
- Často měnící se UI
- Nestabilní test data
- Závislosti na třetích stranách
- Captcha nebo MFA
- Vizualně křehké části aplikace
- Scénáře vyžadující lidský úsudek
- Dočasné nebo experimentální feature
Automatizace má přinášet důvěru, ne falešně červené výsledky.
6. Princip dobrého automatizovaného testu
- Má jasný účel
- Testuje konkrétní behavior
- Je stabilní a opakovatelný
- Používá stabilní selektory
- Nezávisí na pořadí testů
- Uklízí po sobě
- Je spustitelný lokálně i v CI
- Při chybě poskytne debug informace
7. Stabilní selektory
UI testy by měly používat stabilní identifikátory.
Špatně:
.btn-blue-right
Lépe:
[data-testid="submit-payment"]
Accessibility přístup:
getByRole("button", { name: "Submit payment" })
Accessibility-based selektory bývají stabilnější a podporují přístupnost aplikace.
8. Test data management
Stabilní test data jsou kritická pro spolehlivou automatizaci.
Doporučení:
- Každý test by měl mít vlastní data
- Testy mají být izolované
- Test data mají být předvídatelná
- Po testu má proběhnout cleanup
Časté problémy:
- Sdílené účty mezi testy
- Závislost na produkčních datech
- Nečisté prostředí
- Nedeterministické výsledky
9. Flaky testy
Flaky test je test, který někdy projde a někdy selže bez změny aplikace.
Nejčastější příčiny:
- Špatné waity
- Race conditions
- Nestabilní prostředí
- Timeouty
- Závislost na síti
- Špatná synchronizace UI
Důsledky:
- Ztráta důvěry v automatizaci
- Ignorování červených buildů
- Zpomalení release procesu
10. Wait strategie
Špatně:
sleep(5000)
Lépe:
waitForElementVisible()
waitForResponse()
waitForLoadState()
Test by měl čekat na konkrétní stav systému, ne na pevný čas.
11. Debugging a reporting
Když test selže, musí být jednoduché zjistit proč.
Doporučené artefakty:
- Screenshot
- Video z testu
- Trace
- Console log
- Network log
- Stack trace
12. CI/CD integrace
Automatizované testy bývají součástí CI pipeline.
Typický flow:
Commit
↓
Build
↓
Unit tests
↓
Integration tests
↓
UI tests
↓
Deploy
Výhody:
- Rychlý feedback
- Automatická validace
- Menší riziko release
- Detekce problémů dříve
13. Paralelní spouštění testů
Moderní frameworky podporují paralelní běh testů.
Výhody:
- Výrazně rychlejší execution
- Kratší CI pipeline
- Lepší škálovatelnost
Rizika:
- Sdílená data
- Race conditions
- Závislosti mezi testy
14. Nejčastější automation frameworky
| Framework | Typ |
|---|---|
| Selenium | Web UI automation |
| Playwright | Modern web automation |
| Cypress | Frontend testing |
| Appium | Mobile automation |
| RestAssured | API testing |
| Postman/Newman | API automation |
| JUnit / NUnit | Test execution frameworks |
15. Best practices
- Automatizuj stabilní scénáře
- Minimalizuj flaky testy
- Udržuj testy krátké a čitelné
- Používej Page Object nebo podobný pattern
- Odděluj test data od logiky
- Pravidelně refaktoruj automation code
- Monitoruj execution time
- Neautomatizuj všechno
16. Nejčastější chyby
- Příliš mnoho UI testů
- Sleep místo inteligentních waitů
- Nestabilní selektory
- Sdílená test data
- Závislosti mezi testy
- Ignorování flaky testů
- Chybějící cleanup
- Příliš komplexní scénáře
17. Shrnutí
Test automation pomáhá zvyšovat kvalitu software, zrychlovat release procesy a poskytovat rychlý feedback.
Úspěšná automatizace není o počtu testů, ale o:
- Stabilitě
- Důvěryhodnosti
- Rychlosti feedbacku
- Maintainability
- Business hodnotě
„Automatizuj to, co je stabilní, opakovatelné a přináší dlouhodobou hodnotu.“