Sobes.tech
Junior

Parlami dei test della parte client delle applicazioni.

sobes.tech AI

Risposta dell'AI

Iniziamo col dire che i test lato client (frontend) si concentrano sulla verifica dell'interfaccia utente (UI) e della sua interazione. Ciò include funzionalità, prestazioni, usabilità (UX), sicurezza e compatibilità tra browser.

Tipi di test lato client:

  • Test funzionali: Verifica della conformità dell'interfaccia ai requisiti di specifica.
    • Verifica del corretto funzionamento di bottoni, form, link.
    • Verifica della validazione dei dati inseriti.
    • Verifica della corretta visualizzazione dei dati.
  • Test UI: Verifica visiva dell'interfaccia.
    • Verifica del layout, dei font, dei colori, delle dimensioni degli elementi.
    • Verifica della visualizzazione su diverse risoluzioni dello schermo (design reattivo).
  • Test UX: Valutazione della facilità d'uso dell'applicazione.
    • Verifica dell'intuitività della navigazione.
    • Verifica della facilità di esecuzione delle attività da parte dell'utente.
    • Raccolta di feedback dagli utenti (a volte).
  • Test di performance: Valutazione della velocità di caricamento delle pagine e della reattività dell'interfaccia.
    • Uso di strumenti per analizzare la velocità di caricamento (ad esempio, Lighthouse).
    • Test sotto carico (anche se questo riguarda più il backend, può influenzare il frontend).
  • Test di sicurezza: Verifica delle vulnerabilità lato client.
    • Verifica di XSS (Cross-Site Scripting).
    • Verifica di CSRF (Cross-Site Request Forgery).
    • Verifica di iniezioni di codice.
  • Test di compatibilità tra browser: Verifica della corretta visualizzazione e funzionamento in diversi browser e versioni.
  • Test multipiattaforma: Verifica del funzionamento dell'UI su diversi sistemi operativi e dispositivi (computer, tablet, smartphone).

Approcci ai test:

  • Test manuale: Eseguito da una persona che imita le azioni dell'utente. Efficace per test UI e UX.
  • Test automatizzato: Uso di strumenti e framework per eseguire automaticamente gli scenari di test. Efficace per test di regressione e funzionali.

Strumenti per test automatizzati lato client:

  • Selenium: Framework ampiamente usato per automatizzare i browser. Supporta diversi linguaggi di programmazione.
  • Cypress: Framework per test frontend, progettato appositamente per il web. Veloce e facile da usare.
  • Playwright: Framework di Microsoft per test end-to-end affidabili. Supporta diversi browser e linguaggi.
  • Jest, Mocha: Framework per test unitari di codice JavaScript.

Esempio di test semplice con 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

# Configurazione del driver Chrome
service = ChromeService(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

try:
    # Aprire la pagina
    driver.get("https://www.example.com")

    # Verificare il titolo della pagina
    assert "Example Domain" in driver.title

    # Trovare elemento per testo del link
    link_element = driver.find_element(By.LINK_TEXT, "More information...")
    assert link_element.is_displayed() # Verifica visibilità elemento
    
    # Cliccare sul link (esempio)
    # link_element.click()
    # time.sleep(2) # Attendere caricamento nuova pagina

finally:
    # Chiudere il browser
    driver.quit()

Esempio di test con Cypress:

// cypress/integration/example_spec.js

describe('Il mio primo test', () => {
  it('Visita il sito di esempio', () => {
    // Aprire la pagina
    cy.visit('https://www.example.com')

    // Verificare il titolo della pagina
    cy.title().should('include', 'Example Domain')

    // Verificare presenza elemento per testo
    cy.contains('More information...').should('be.visible')

    // Cliccare sul link (esempio)
    // cy.contains('More information...').click()
    // cy.url().should('include', '/moreinfo') // Verifica URL dopo clic
  })
})

Caratteristiche dei test lato client:

  • Dinamismo dell'interfaccia: UI può cambiare in base alle azioni dell'utente o ai dati.
  • Operazioni asincrone: Le richieste al server e le risposte possono avvenire in modo asincrono.
  • Diversità di ambienti: Necessità di testare su diversi dispositivi, browser e risoluzioni.
  • Dipendenza dal backend: Il corretto funzionamento del frontend spesso dipende dalla disponibilità e correttezza delle risposte del backend.
  • Frequenti cambiamenti: Il frontend cambia frequentemente durante lo sviluppo.

In generale, i test lato client sono un passo critico per garantire la qualità e l'usabilità delle applicazioni web. Richiedono approcci sia manuali che automatizzati per una copertura completa.