Sobes.tech
Junior

Opowiedz o testowaniu części klienta aplikacji.

sobes.tech AI

Odpowiedź od AI

Zacznijmy od tego, że testy po stronie klienta (frontendu) skupiają się na sprawdzaniu interfejsu użytkownika (UI) i jego interakcji. Obejmuje to funkcjonalność, wydajność, użyteczność (UX), bezpieczeństwo i kompatybilność między przeglądarkami.

Typy testów po stronie klienta:

  • Testy funkcjonalne: Sprawdzenie zgodności interfejsu z wymaganiami specyfikacji.
    • Sprawdzenie poprawności działania przycisków, formularzy, linków.
    • Walidacja danych wejściowych.
    • Poprawność wyświetlania danych.
  • Testy UI: Wizualna kontrola interfejsu.
    • Sprawdzenie układu, czcionek, kolorów, rozmiarów elementów.
    • Sprawdzenie wyświetlania na różnych rozdzielczościach ekranu (responsywny design).
  • Testy UX: Ocena wygody korzystania z aplikacji.
    • Sprawdzenie intuicyjności nawigacji.
    • Sprawdzenie łatwości wykonywania zadań przez użytkownika.
    • Zbieranie opinii od użytkowników (czasami).
  • Testy wydajności: Ocena szybkości ładowania stron i reaktywności interfejsu.
    • Użycie narzędzi do analizy szybkości ładowania (np. Lighthouse).
    • Testy pod obciążeniem (chociaż to bardziej dotyczy backendu, może wpływać na frontend).
  • Testy bezpieczeństwa: Sprawdzenie podatności po stronie klienta.
    • Sprawdzenie na XSS (Cross-Site Scripting).
    • Sprawdzenie na CSRF (Cross-Site Request Forgery).
    • Sprawdzenie na iniekcje kodu.
  • Testy kompatybilności między przeglądarkami: Sprawdzenie poprawnego wyświetlania i działania w różnych przeglądarkach i wersjach.
  • Testy wieloplatformowe: Sprawdzenie działania UI na różnych systemach operacyjnych i urządzeniach (komputery, tablety, smartfony).

Podejścia do testowania:

  • Test ręczny: Przeprowadzany przez osobę naśladującą działania użytkownika. Efektywny dla testów UI i UX.
  • Test automatyczny: Użycie narzędzi i frameworków do automatycznego wykonywania scenariuszy testowych. Efektywny dla testów regresji i funkcjonalnych.

Narzędzia do automatycznych testów po stronie klienta:

  • Selenium: Powszechnie używany framework do automatyzacji przeglądarek. Obsługuje różne języki programowania.
  • Cypress: Framework do testów frontendowych, specjalnie zaprojektowany dla weba. Szybki i prosty w użyciu.
  • Playwright: Framework od Microsoft do niezawodnych testów end-to-end. Obsługuje różne przeglądarki i języki.
  • Jest, Mocha: Frameworki do testów jednostkowych kodu JavaScript.

Przykład prostego testu z 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

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

try:
    # Otwarcie strony
    driver.get("https://www.example.com")

    # Sprawdzenie tytułu strony
    assert "Example Domain" in driver.title

    # Znalezienie elementu po tekście linku
    link_element = driver.find_element(By.LINK_TEXT, "More information...")
    assert link_element.is_displayed() # Sprawdzenie widoczności elementu
    
    # Kliknięcie na link (przykład)
    # link_element.click()
    # time.sleep(2) # Oczekiwanie na załadowanie nowej strony

finally:
    # Zamknięcie przeglądarki
    driver.quit()

Przykład testu w Cypress:

// cypress/integration/example_spec.js

describe('Mój pierwszy test', () => {
  it('Odwiedza stronę przykładową', () => {
    // Otwarcie strony
    cy.visit('https://www.example.com')

    // Sprawdzenie tytułu strony
    cy.title().should('include', 'Example Domain')

    // Sprawdzenie obecności elementu po tekście
    cy.contains('More information...').should('be.visible')

    // Kliknięcie na link (przykład)
    // cy.contains('More information...').click()
    // cy.url().should('include', '/moreinfo') // Sprawdzenie URL po kliknięciu
  })
})

Cechy testów po stronie klienta:

  • Dynamika interfejsu: UI może się zmieniać w zależności od działań użytkownika lub danych.
  • Operacje asynchroniczne: Zapytania do serwera i ich odpowiedzi mogą zachodzić asynchronicznie.
  • Różnorodność środowisk: Konieczność testowania na różnych urządzeniach, przeglądarkach i rozdzielczościach.
  • Zależność od backendu: Prawidłowe działanie frontendu często zależy od dostępności i poprawności odpowiedzi z backendu.
  • Częste zmiany: Frontend często się zmienia podczas rozwoju.

Ogólnie, testowanie po stronie klienta jest kluczowym etapem zapewniającym jakość i użyteczność aplikacji internetowych. Wymaga zarówno podejść ręcznych, jak i automatycznych, aby zapewnić pełne pokrycie.