Co se naučíš: Pochopíš rozdíl mezi manuálním a automatizovaným testováním. Naučíš se psát jednoduché automatizované testy a pochopit jejich výhody.
1. Proč automatizovat testování?
Představ si, že jsi vytvořil aplikaci s 50 funkcemi. Pokaždé, když něco změníš, bys musel ručně vyzkoušet všech 50 funkcí, aby ses ujistil, že stará funkčnost stále funguje. To by ti zabralo hodiny!
Automatizované testy jsou malé programy, které testují tvůj hlavní program. Spustíš je jedním tlačítkem a za sekundy ověří, že vše funguje správně.
Příklad z praxe: Velké firmy jako Google nebo Facebook spouští miliony automatizovaných testů každý den. Kdyby testovali ručně, potřebovali by tisíce testerů a trvalo by to týdny.
Výhody automatizovaného testování
Rychlost: Tisíce testů za minutu místo hodin ruční práce.
Spolehlivost: Počítač neudělá chybu z nepozornosti nebo únavy.
Opakovatelnost: Stejný test můžeš spustit kdykoli znovu se stejným výsledkem.
Regresní testování: Automaticky ověříš, že nový kód nerozbil starý.
Dokumentace: Testy ukazují, jak má program fungovat.
Automatizované testování - pyramida testů
2. Typy automatizovaných testů
Existuje několik typů testů, které se liší v tom, co testují a jak podrobně:
Testovací pyramida
Testovací pyramida ukazuje, kolik kterých testů bychom měli mít:
Unit testy (základ pyramidy): Nejvíce testů. Testují jednotlivé funkce izolovaně. Rychlé, levné.
Integrační testy (střed): Méně testů. Testují spolupráci více komponent dohromady.
E2E testy (vrchol): Nejméně testů. Testují celou aplikaci jako by ji používal uživatel. Pomalé, drahé.
Kontinuální integrace - automatické testování při změně
3. Struktura testu
Každý test má tři části – AAA (Arrange, Act, Assert):
Arrange (Připrav): Nastav počáteční stav.
Act (Proveď): Spusť testovanou funkci.
Assert (Ověř): Zkontroluj výsledek.
4. Příklad testu v Pythonu
# Funkce k otestování
def secti(a, b):
return a + b
# Test
def test_secti():
# Arrange
cislo1 = 5
cislo2 = 3
# Act
vysledek = secti(cislo1, cislo2)
# Assert
assert vysledek == 8, f"Očekáváno 8, ale bylo {vysledek}"
# Spuštění testu
test_secti()
print("Test prošel! ✅")
5. Testovací frameworky
Python: pytest, unittest
JavaScript: Jest, Mocha
Java: JUnit
Web E2E: Selenium, Cypress, Playwright
Pokrytí kódu testy - code coverage
6. CI/CD – Continuous Integration
V moderním vývoji se testy spouštějí automaticky při každé změně kódu:
Vývojář nahraje kód (commit/push).
Server automaticky spustí všechny testy.
Pokud testy projdou → kód se nasadí.
Pokud testy selžou → vývojář dostane upozornění.
** Úkoly pro maturitní obory
Python – První test: Napiš funkci odecti(a, b) a test, který ověří, že odecti(10, 3) == 7 a odecti(5, 5) == 0.
Scratch – Automatický test: Vytvoř ve Scratchi blok "RunTests", který automaticky otestuje tvou kalkulačku: 2+2=4, 10-5=5, 3*4=12. Zobraz "Všechny testy prošly" nebo "Test selhal".
Excel – Testovací report: Vytvoř tabulku pro sledování výsledků testů: ID testu, Popis, Očekávaný výsledek, Skutečný výsledek, Status (PASS/FAIL), Datum. Přidej souhrn.
Word – Testovací strategie: Napiš dokument "Testovací strategie" pro aplikaci. Zahrň: co testovat, typy testů, nástroje, kritéria úspěchu.
PowerPoint – CI/CD: Vytvoř prezentaci "Continuous Integration a Continuous Deployment" (10-12 snímků). Vysvětli pojmy, výhody, nástroje (GitHub Actions, Jenkins).
Canva – Infografika: Vytvoř infografiku "Manuální vs Automatizované testování" s výhodami a nevýhodami obou přístupů.