Junior
Pověz mi o testování klientské části aplikací.
sobes.tech AI
Odpověď od AI
Když začneme tím, že testování klientské části (front-endu) se zaměřuje na kontrolu uživatelského rozhraní (UI) a jeho interakce s ním. To zahrnuje funkčnost, výkon, uživatelskou přívětivost (UX), bezpečnost a kompatibilitu napříč prohlížeči.
Typy testování klientské části:
- Funkční testování: Kontrola souladu rozhraní s požadavky specifikace.
- Kontrola správného fungování tlačítek, formulářů, odkazů.
- Validace zadávaných dat.
- Kontrola správnosti zobrazení dat.
- UI testování: Vizuální kontrola rozhraní.
- Kontrola rozvržení, písem, barev, velikosti prvků.
- Kontrola zobrazení na různých rozlišeních obrazovky (responzivní design).
- UX testování: Hodnocení uživatelské přívětivosti aplikace.
- Kontrola intuitivnosti navigace.
- Kontrola snadnosti plnění úkolů uživatelem.
- Sbírání zpětné vazby od uživatelů (někdy).
- Výkonové testování: Hodnocení rychlosti načítání stránek a odezvy rozhraní.
- Použití nástrojů pro analýzu rychlosti načítání (například Lighthouse).
- Testování při zátěži (ačkoliv to je spíše pro backend, může to ovlivnit i front-end).
- Bezpečnostní testování: Kontrola zranitelností na straně klienta.
- Kontrola na XSS (Cross-Site Scripting).
- Kontrola na CSRF (Cross-Site Request Forgery).
- Kontrola na injekce kódu.
- Testování napříč prohlížeči: Kontrola správného zobrazení a funkčnosti v různých prohlížečích a jejich verzích.
- Testování napříč platformami: Kontrola funkčnosti UI na různých operačních systémech a zařízeních (počítače, tablety, smartphony).
Přístupy k testování:
- Ruční testování: Provádí jej člověk, který napodobuje akce uživatele. Efektivní pro UI a UX testování.
- Automatizované testování: Použití nástrojů a rámců pro automatické provádění testovacích scénářů. Efektivní pro regresní a funkční testování.
Nástroje pro automatizované testování klientské části:
- Selenium: Široce používaný rámec pro automatizaci prohlížečů. Podporuje různé programovací jazyky.
- Cypress: Rámec pro front-end testování, speciálně navržený pro web. Rychlý a snadno použitelný.
- Playwright: Rámec od Microsoftu pro spolehlivé end-to-end testování. Podporuje různé prohlížeče a jazyky.
- Jest, Mocha: Rámce pro modulové testování JavaScriptového kódu.
Příklad jednoduchého testu Selenium (Python):
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
import time
# Instalace ovladače Chrome
service = ChromeService(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
try:
# Otevření stránky
driver.get("https://www.example.com")
# Kontrola titulku stránky
assert "Example Domain" in driver.title
# Nalezení prvku podle textu odkazu
link_element = driver.find_element(By.LINK_TEXT, "More information...")
assert link_element.is_displayed() # Kontrola viditelnosti prvku
# Kliknutí na odkaz (příklad)
# link_element.click()
# time.sleep(2) # Čekání na načtení nové stránky
finally:
# Zavření prohlížeče
driver.quit()
Příklad testu Cypress:
// cypress/integration/example_spec.js
describe('Můj první test', () => {
it('Navštíví webovou stránku s příkladem', () => {
// Otevření stránky
cy.visit('https://www.example.com')
// Kontrola titulku stránky
cy.title().should('include', 'Example Domain')
// Kontrola přítomnosti prvku s textem
cy.contains('More information...').should('be.visible')
// Kliknutí na odkaz (příklad)
// cy.contains('More information...').click()
// cy.url().should('include', '/moreinfo') // Kontrola URL po kliknutí
})
})
Vlastnosti testování klientské části:
- Dynamická: UI se může měnit v závislosti na akcích uživatele nebo datech.
- Asynchronní operace: Požadavky na server a jejich odpovědi mohou probíhat asynchronně.
- Různá prostředí: Nutnost testování na různých zařízeních, prohlížečích a rozlišeních.
- Závislost na backendu: Správná funkčnost frontendu často závisí na dostupnosti a správnosti odpovědí backendu.
- Časté změny: Frontend se často mění během vývoje.
Celkově je testování klientské části klíčovým krokem k zajištění kvality a použitelnosti webových aplikací. Vyžaduje jak ruční, tak automatizovaný přístup pro úplné pokrytí.