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.“