Sobes.tech
Junior

Ispričaj mi o testiranju klijentskog dela aplikacija.

sobes.tech АИ

Одговор од АИ

Почнимо са тога да тестирање клијентског дела (фронтенда) фокусира се на проверу корисничког интерфејса (UI) и интеракције са њим. Ово укључује функционалност, перформансе, корисничко искуство (UX), безбедност и крст-браузерску компатибилност.

Типови тестирања клијентског дела:

  • Функционално тестирање: Провера усклађености интерфејса са захтевима спецификације.
    • Провера исправности рада дугмади, форми, линкова.
    • Провера валидности уноса података.
    • Провера исправног приказа података.
  • UI тестирање: Визуелна провера интерфејса.
    • Провера распореда, фонта, боја, величине елемената.
    • Провера приказа на различитим резолуцијама екрана (адаптивни дизајн).
  • UX тестирање: Процена погодности коришћења апликације.
    • Провера интуитивности навигације.
    • Провера лакоће извршавања задатака од стране корисника.
    • Скупљање повратних информација од корисника (понекад).
  • Тестирање перформанси: Процена брзине учитавања страница и одзивности интерфејса.
    • Коришћење алата за анализу брзине учитавања (нпр. Lighthouse).
    • Тестирање под оптерећењем (иако то више припада бекенду, може утицати и на фронтенд).
  • Тестирање безбедности: Провера утичљивости на страни клијента.
    • Провера на XSS (Cross-Site Scripting).
    • Провера на CSRF (Cross-Site Request Forgery).
    • Провера на инекције кода.
  • Крос-браузерско тестирање: Провера исправног приказа и рада апликације у различитим прегледачима и њиховим верзијама.
  • Крос-платформско тестирање: Провера рада UI на различитим оперативним системима и уређајима (компјутери, таблети, паметни телефони).

Приступи тестирању:

  • Ручно тестирање: Обавља га особа која имитира радње корисника. Ефективно за UI и UX тестирање.
  • Аутоматизовано тестирање: Коришћење алата и оквира за аутоматско извршавање тест сценарија. Ефективно за регресионо и функционално тестирање.

Алатке за аутоматизовано тестирање клијентског дела:

  • Selenium: Широко коришћена оквир за аутоматизацију прегледача. Подржава различите програмске језике.
  • Cypress: Оквир за фронтенд тестирање, развијен посебно за веб. Брз и једноставан за коришћење.
  • Playwright: Оквир од Microsoft-а за поуздано свеобухватно тестирање. Подржава различите прегледаче и језике.
  • Jest, Mocha: Оквири за модулно тестирање JavaScript кода.

Пример једноставног теста са 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

# Подешавање Chrome драйвера
service = ChromeService(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

try:
    # Отварање странице
    driver.get("https://www.example.com")

    # Провера насловне странице
    assert "Example Domain" in driver.title

    # Проналажење елемента по тексту линка
    link_element = driver.find_element(By.LINK_TEXT, "More information...")
    assert link_element.is_displayed() # Провера видљивости елемента
    
    # Клик на линк (пример)
    # link_element.click()
    # time.sleep(2) # Чекање на учитавање нове странице

finally:
    # Затварање прегледача
    driver.quit()

Пример теста са Cypress:

// cypress/integration/example_spec.js

describe('Мој први тест', () => {
  it('Посећује пример вебсајт', () => {
    // Отварање странице
    cy.visit('https://www.example.com')

    // Провера насловне странице
    cy.title().should('include', 'Example Domain')

    // Провера присуства елемента по тексту
    cy.contains('More information...').should('be.visible')

    // Клик на линк (пример)
    // cy.contains('More information...').click()
    // cy.url().should('include', '/moreinfo') // Провера URL-а након клика
  })
})

Особености тестирања клијентске стране:

  • Динамичност интерфејса: UI може да се мења у зависности од акција корисника или података.
  • Асинхроност операција: Захтеви према серверу и њихови одговори могу се одвијати асинхроно.
  • Разноликост окружења: Потреба за тестирањем на различитим уређајима, прегледачима и резолуцијама.
  • Зависност од бекенда: Правилна работа фронтенда често зависи од доступности и исправности одговора са бекенда.
  • Чести промене: Фронтенд се често мења током развоја.

У целини, тестирање клијентске стране је критични корак за обезбеђење квалитета и погодности коришћења веб апликација. Треба користити и ручне и аутоматизоване приступе за потпуно покривање.