Sobes.tech
Junior

Vertel me over het testen van het clientgedeelte van applicaties.

sobes.tech AI

Antwoord van AI

Laten we beginnen met dat het testen van de client-side (front-end) zich richt op het controleren van de gebruikersinterface (UI) en de interactie ermee. Dit omvat functionaliteit, prestaties, gebruiksvriendelijkheid (UX), beveiliging en cross-browser compatibiliteit.

Types of client-side testing:

  • Functioneel testen: Controle op overeenstemming van de interface met de specificatie-eisen.
    • Controle op correcte werking van knoppen, formulieren, links.
    • Validatie van gegevensinvoer.
    • Correcte weergave van gegevens.
  • UI-testen: Visuele controle van de interface.
    • Controle van lay-out, lettertypen, kleuren, grootte van elementen.
    • Controle van weergave op verschillende schermresoluties (responsive design).
  • UX-testen: Beoordeling van gebruiksgemak van de applicatie.
    • Controle van intuïtiviteit van navigatie.
    • Controle van de eenvoud van het uitvoeren van taken door de gebruiker.
    • Verzamelen van feedback van gebruikers (soms).
  • Prestatietesten: Beoordeling van laadsnelheid van pagina's en responsiviteit van de interface.
    • Gebruik van tools voor snelheidsanalyse (bijvoorbeeld Lighthouse).
    • Testen onder belasting (hoewel dit meer voor de backend is, kan het de front-end beïnvloeden).
  • Beveiligingstesten: Controle op kwetsbaarheden aan de clientzijde.
    • Controle op XSS (Cross-Site Scripting).
    • Controle op CSRF (Cross-Site Request Forgery).
    • Controle op code-injecties.
  • Cross-browser testen: Controle op correcte weergave en werking in verschillende browsers en versies.
  • Cross-platform testen: Controle op werking van UI op verschillende besturingssystemen en apparaten (computers, tablets, smartphones).

Testbenaderingen:

  • Handmatig testen: Uitgevoerd door een persoon die de acties van de gebruiker nabootst. Effectief voor UI en UX testen.
  • Geautomatiseerd testen: Gebruik van tools en frameworks voor automatische uitvoering van testscenario's. Effectief voor regressie- en functioneel testen.

Tools voor geautomatiseerd client-side testen:

  • Selenium: Veelgebruikte framework voor browserautomatisering. Ondersteunt verschillende programmeertalen.
  • Cypress: Framework voor front-end testen, speciaal ontwikkeld voor web. Snel en gebruiksvriendelijk.
  • Playwright: Framework van Microsoft voor betrouwbare end-to-end testing. Ondersteunt verschillende browsers en talen.
  • Jest, Mocha: Frameworks voor modulegerichte JavaScript-testen.

Voorbeeld van een eenvoudige Selenium-test (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

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

try:
    # Pagina openen
    driver.get("https://www.example.com")

    # Pagina titel controleren
    assert "Example Domain" in driver.title

    # Element vinden op linktekst
    link_element = driver.find_element(By.LINK_TEXT, "More information...")
    assert link_element.is_displayed() # Controle of element zichtbaar is
    
    # Klik op de link (voorbeeld)
    # link_element.click()
    # time.sleep(2) # Wacht op het laden van nieuwe pagina

finally:
    # Browser sluiten
    driver.quit()

Voorbeeld Cypress-test:

// cypress/integration/example_spec.js

describe('Mijn eerste test', () => {
  it('Bezoekt de voorbeeldwebsite', () => {
    // Pagina openen
    cy.visit('https://www.example.com')

    // Controle van paginatitel
    cy.title().should('include', 'Example Domain')

    // Controle op aanwezigheid element met tekst
    cy.contains('More information...').should('be.visible')

    // Klik op de link (voorbeeld)
    // cy.contains('More information...').click()
    // cy.url().should('include', '/moreinfo') // URL controleren na klik
  })
})

Kenmerken van client-side testen:

  • Dynamisch: UI kan veranderen afhankelijk van gebruikersacties of gegevens.
  • Asynchrone operaties: Serververzoeken en antwoorden kunnen asynchroon plaatsvinden.
  • Verspreide omgevingen: Testen op verschillende apparaten, browsers en resoluties.
  • Afhankelijkheid van backend: Correcte werking van de frontend hangt vaak af van de beschikbaarheid en juistheid van backend-antwoorden.
  • Frequent veranderingen: Frontend verandert vaak tijdens de ontwikkelingsfase.

Over het algemeen is het testen van de client-side een cruciale stap om de kwaliteit en gebruiksvriendelijkheid van webapplicaties te waarbaken. Het vereist zowel handmatige als geautomatiseerde aanpak voor volledige dekking.