Sobes.tech
Junior

Vorbește-mi despre testarea părții client a aplicațiilor.

sobes.tech AI

Răspuns de la AI

Să începem prin a spune că testarea părții client (front-end) se concentrează pe verificarea interfeței utilizatorului (UI) și a interacțiunii cu aceasta. Aceasta include funcționalitatea, performanța, ușurința în utilizare (UX), securitatea și compatibilitatea cross-browser.

Tipuri de testare a părții client:

  • Testare funcțională: Verificarea conformității interfeței cu cerințele specificației.
    • Verificarea funcționării corecte a butoanelor, formularelor, linkurilor.
    • Validarea introducerii datelor.
    • Verificarea afișării corecte a datelor.
  • Testare UI: Verificare vizuală a interfeței.
    • Verificarea layout-ului, fonturilor, culorilor, dimensiunii elementelor.
    • Verificarea afișării pe diferite rezoluții de ecran (design adaptiv).
  • Testare UX: Evaluarea ușurinței de utilizare a aplicației.
    • Verificarea intuitivității navigației.
    • Verificarea ușurinței de realizare a sarcinilor de către utilizator.
    • Colectarea feedback-ului de la utilizatori (uneori).
  • Testare de performanță: Evaluarea vitezei de încărcare a paginilor și a răspunsului interfeței.
    • Utilizarea instrumentelor pentru analiza vitezei de încărcare (de exemplu, Lighthouse).
    • Testare sub sarcină (deși acest lucru este mai mult pentru backend, poate influența frontend-ul).
  • Testare de securitate: Verificarea vulnerabilităților din partea clientului.
    • Verificarea pentru XSS (Cross-Site Scripting).
    • Verificarea pentru CSRF (Cross-Site Request Forgery).
    • Verificarea pentru injecții de cod.
  • Testare cross-browser: Verificarea afișării și funcționării corecte în diferite browsere și versiuni.
  • Testare cross-platform: Verificarea funcționării UI pe diferite sisteme de operare și dispozitive (calculatoare, tablete, smartphone-uri).

Abordări de testare:

  • Testare manuală: Efectuată de o persoană care imită acțiunile utilizatorului. Eficientă pentru testarea UI și UX.
  • Testare automatizată: Utilizarea de instrumente și cadre pentru executarea automată a scenariilor de testare. Eficientă pentru regresie și testare funcțională.

Instrumente pentru testare automatizată a părții client:

  • Selenium: Cadru larg utilizat pentru automatizarea browserelor. Suportă diferite limbaje de programare.
  • Cypress: Cadru pentru testarea front-end, dezvoltat special pentru web. Rapid și ușor de utilizat.
  • Playwright: Cadru de la Microsoft pentru testare fiabilă end-to-end. Suportă diferite browsere și limbaje.
  • Jest, Mocha: Cadre pentru testarea modulară a codului JavaScript.

Exemplu de test simplu cu 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

# Instalarea driver-ului Chrome
service = ChromeService(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

try:
    # Deschiderea paginii
    driver.get("https://www.example.com")

    # Verificarea titlului paginii
    assert "Example Domain" in driver.title

    # Găsirea elementului după textul linkului
    link_element = driver.find_element(By.LINK_TEXT, "More information...")
    assert link_element.is_displayed() # Verificarea vizibilității elementului
    
    # Apăsarea pe link (exemplu)
    # link_element.click()
    # time.sleep(2) # Așteptarea încărcării noii pagini

finally:
    # Închiderea browserului
    driver.quit()

Exemplu de test Cypress:

// cypress/integration/example_spec.js

describe('Primul meu test', () => {
  it('Vizitează site-ul exemplu', () => {
    // Deschiderea paginii
    cy.visit('https://www.example.com')

    // Verificarea titlului
    cy.title().should('include', 'Example Domain')

    // Verificarea prezenței elementului cu text
    cy.contains('More information...').should('be.visible')

    // Apăsarea pe link (exemplu)
    // cy.contains('More information...').click()
    // cy.url().should('include', '/moreinfo') // Verificarea URL-ului după clic
  })
})

Caracteristici ale testării părții client:

  • Dinamicitatea: UI poate varia în funcție de acțiunile utilizatorului sau de date.
  • Operații asincrone: Cererile către server și răspunsurile pot avea loc asincron.
  • Diverse medii: Necesitatea testării pe diferite dispozitive, browsere și rezoluții.
  • Dependența de backend: Funcționarea corectă a frontend-ului depinde adesea de disponibilitatea și corectitudinea răspunsurilor backend.
  • Modificări frecvente: Frontend-ul se schimbă adesea în timpul dezvoltării.

În general, testarea părții client este o etapă critică pentru asigurarea calității și a ușurinței în utilizare a aplicațiilor web. Necesită atât abordări manuale, cât și automate pentru o acoperire completă.