Sobes.tech
Junior

Porozprávaj mi o testovaní klientskej časti aplikácií.

sobes.tech AI

Odpoveď od AI

Počnime s tým, že testovanie klientskej časti (frontendu) sa zameriava na kontrolu používateľského rozhrania (UI) a interakcie s ním. To zahŕňa funkčnosť, výkon, používateľský zážitok (UX), bezpečnosť a krížovú kompatibilitu prehliadačov.

Typy testovania klientskej časti:

  • Funkčné testovanie: Kontrola zhody rozhrania s požiadavkami špecifikácie.
    • Kontrola správnosti fungovania tlačidiel, formulárov, odkazov.
    • Kontrola validácie zadávaných údajov.
    • Kontrola správnosti zobrazovania údajov.
  • UI testovanie: Vizuálna kontrola rozhrania.
    • Kontrola rozloženia, fontov, farieb, veľkosti prvkov.
    • Kontrola zobrazenia na rôznych rozlíšeniach obrazovky (responzívny dizajn).
  • UX testovanie: Hodnotenie používateľskej pohodlnosti.
    • Kontrola intuitívnosti navigácie.
    • Kontrola ľahkosti vykonávania úloh používateľom.
    • Zber spätnej väzby od používateľov (občas).
  • Testovanie výkonu: Hodnotenie rýchlosti načítania stránok a odozvosti rozhrania.
    • Použitie nástrojov na analýzu rýchlosti načítania (napríklad Lighthouse).
    • Testovanie pod záťažou (hoci to je viac pre backend, môže ovplyvniť aj frontend).
  • Testovanie bezpečnosti: Kontrola zraniteľností na strane klienta.
    • Kontrola na XSS (Cross-Site Scripting).
    • Kontrola na CSRF (Cross-Site Request Forgery).
    • Kontrola na injekcie kódu.
  • Kros-browserové testovanie: Kontrola správneho zobrazenia a fungovania aplikácie v rôznych prehliadačoch a ich verziách.
  • Kros-platformové testovanie: Kontrola práce UI na rôznych operačných systémoch a zariadeniach (počítače, tablety, smartfóny).

Prístupy k testovaniu:

  • Ručné testovanie: Vykonáva ho osoba, ktorá imituje kroky používateľa. Efektívne pre UI a UX testovanie.
  • Automatizované testovanie: Použitie nástrojov a rámcov na automatické vykonávanie testovacích scenárov. Efektívne pre regresné a funkčné testovanie.

Nástroje na automatizované testovanie klientskej časti:

  • Selenium: Široko používaný rámec na automatizáciu prehliadačov. Podporuje rôzne programovacie jazyky.
  • Cypress: Rámec na frontendové testovanie, vyvinutý špeciálne pre web. Rýchly a jednoduchý na použitie.
  • Playwright: Rámec od Microsoftu pre spoľahlivé end-to-end testovanie. Podporuje rôzne prehliadače a jazyky.
  • Jest, Mocha: Rámce na modulové testovanie JavaScript kódu.

Príklad jednoduchého testu so 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

# Nastavenie Chrome ovládača
service = ChromeService(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

try:
    # Otvorenie stránky
    driver.get("https://www.example.com")

    # Kontrola nadpisu stránky
    assert "Example Domain" in driver.title

    # Nájdenie prvku podľa textu odkazu
    link_element = driver.find_element(By.LINK_TEXT, "More information...")
    assert link_element.is_displayed() # Kontrola viditeľnosti prvku
    
    # Kliknutie na odkaz (príklad)
    # link_element.click()
    # time.sleep(2) # Čakanie na načítanie novej stránky

finally:
    # Zatvorenie prehliadača
    driver.quit()

Príklad testu s Cypress:

// cypress/integration/example_spec.js

describe('Môj prvý test', () => {
  it('Navštívi príkladovú webstránku', () => {
    // Otvorenie stránky
    cy.visit('https://www.example.com')

    // Kontrola nadpisu stránky
    cy.title().should('include', 'Example Domain')

    // Kontrola prítomnosti prvku podľa textu
    cy.contains('More information...').should('be.visible')

    // Kliknutie na odkaz (príklad)
    // cy.contains('More information...').click()
    // cy.url().should('include', '/moreinfo') // Kontrola URL po kliknutí
  })
})

Špecifiká testovania klientskej časti:

  • Dynamickosť rozhrania: UI sa môže meniť v závislosti od akcií používateľa alebo dát.
  • Asynchrónne operácie: Žiadosti na server a ich odpovede môžu prebiehať asynchrónne.
  • Rozmanitosť prostredí: Potreba testovania na rôznych zariadeniach, prehliadačoch a rozlíšeniach.
  • Závislosť od backendu: Správna funkčnosť frontendu často závisí od dostupnosti a správnosti odpovedí od backendu.
  • Časté zmeny: Frontend sa často mení počas vývoja.

Celkovo je testovanie klientskej časti kritickým krokom na zabezpečenie kvality a používateľskej pohody webových aplikácií. Vyžaduje si kombináciu manuálneho a automatizovaného prístupu pre úplné pokrytie.