Sobes.tech
Junior

Fale sobre os testes da parte cliente das aplicações.

sobes.tech IA

Resposta da IA

Comecemos por dizer que os testes do lado do cliente (frontend) concentram-se na verificação da interface de utilizador (UI) e da sua interação. Isto inclui funcionalidade, desempenho, usabilidade (UX), segurança e compatibilidade entre navegadores.

Tipos de testes do lado do cliente:

  • Testes funcionais: Verificação do cumprimento dos requisitos de especificação pela interface.
    • Verificação do funcionamento correto de botões, formulários, links.
    • Verificação da validação dos dados inseridos.
    • Verificação da correta exibição dos dados.
  • Testes de UI: Verificação visual da interface.
    • Verificação do layout, fontes, cores, tamanho dos elementos.
    • Verificação da exibição em diferentes resoluções de ecrã (design responsivo).
  • Testes de UX: Avaliação da facilidade de utilização da aplicação.
    • Verificação da intuitividade da navegação.
    • Verificação da facilidade de realização de tarefas pelo utilizador.
    • Recolha de feedback dos utilizadores (às vezes).
  • Testes de desempenho: Avaliação da velocidade de carregamento das páginas e da capacidade de resposta da interface.
    • Uso de ferramentas para analisar a velocidade de carregamento (por exemplo, Lighthouse).
    • Testes sob carga (embora isto seja mais para o backend, pode afetar o frontend).
  • Testes de segurança: Verificação de vulnerabilidades do lado do cliente.
    • Verificação de XSS (Cross-Site Scripting).
    • Verificação de CSRF (Cross-Site Request Forgery).
    • Verificação de injeções de código.
  • Testes de compatibilidade entre navegadores: Verificação da exibição e funcionamento corretos em diferentes navegadores e versões.
  • Testes multiplataforma: Verificação do funcionamento do UI em diferentes sistemas operativos e dispositivos (computadores, tablets, smartphones).

Abordagens de teste:

  • Teste manual: Realizado por uma pessoa que imita as ações do utilizador. Eficaz para testes de UI e UX.
  • Teste automatizado: Uso de ferramentas e frameworks para executar automaticamente os cenários de teste. Eficaz para testes de regressão e funcionais.

Ferramentas para testes automatizados do lado do cliente:

  • Selenium: Framework amplamente utilizado para automatizar navegadores. Suporta várias linguagens de programação.
  • Cypress: Framework para testes frontend, desenvolvido especificamente para a web. Rápido e fácil de usar.
  • Playwright: Framework da Microsoft para testes end-to-end confiáveis. Suporta diferentes navegadores e linguagens.
  • Jest, Mocha: Frameworks para testes unitários de código JavaScript.

Exemplo de teste simples com 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

# Configuração do driver Chrome
service = ChromeService(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

try:
    # Abrir a página
    driver.get("https://www.example.com")

    # Verificar o título da página
    assert "Example Domain" in driver.title

    # Encontrar elemento por texto do link
    link_element = driver.find_element(By.LINK_TEXT, "More information...")
    assert link_element.is_displayed() # Verificação de visibilidade do elemento
    
    # Clicar no link (exemplo)
    # link_element.click()
    # time.sleep(2) # Esperar carregamento da nova página

finally:
    # Fechar o navegador
    driver.quit()

Exemplo de teste com Cypress:

// cypress/integration/example_spec.js

describe('Meu Primeiro Teste', () => {
  it('Visita o site de exemplo', () => {
    // Abrir a página
    cy.visit('https://www.example.com')

    // Verificar o título da página
    cy.title().should('include', 'Example Domain')

    // Verificar a presença do elemento por texto
    cy.contains('More information...').should('be.visible')

    // Clicar no link (exemplo)
    // cy.contains('More information...').click()
    // cy.url().should('include', '/moreinfo') // Verificação da URL após o clique
  })
})

Características dos testes do lado do cliente:

  • Dinamicidade da interface: A UI pode mudar dependendo das ações do utilizador ou dados.
  • Operações assíncronas: Requisições ao servidor e suas respostas podem ocorrer de forma assíncrona.
  • Diversidade de ambientes: Necessidade de testar em diferentes dispositivos, navegadores e resoluções.
  • Dependência do backend: O funcionamento correto do frontend muitas vezes depende da disponibilidade e correção das respostas do backend.
  • Mudanças frequentes: O frontend muda frequentemente durante o desenvolvimento.

De modo geral, o teste do lado do cliente é uma etapa crítica para garantir a qualidade e usabilidade de aplicações web. Requer abordagens manuais e automatizadas para uma cobertura completa.