Sobes.tech
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í.