Cypress - testes web, open source e na moda

Cypress, Cypress… Esta framework tão falada nos dias de hoje, principalmente quando se fala em automação.

Mas afinal, que framework é esta? Para que serve? Qual a sua mais valia?


O que é?

O Cypress é uma framework para automação de testes, open-source e com foco em testes web e oferece uma experiência de teste completa e interativa, eficiente e intuitiva, tornando mais fácil a vida dos programadores e QAs.

Foi criada para facilitar a escrita e a execução de testes end-to-end (E2E), testes de integração e testes de unidade para aplicações web, simplificando e permitindo aprimorar o processo de criação, execução e manutenção de testes de UI, permitindo que os programadores e equipas de qualidade verifiquem a funcionalidade e a usabilidade das aplicações da web, de forma eficiente.

 

E quais são as suas principais características?

  • Arquitetura “tudo-em-um

    • De instalação Simples, pois não requer a instalação de drivers adicionais. O Cypress é instalado como uma dependência de desenvolvimento via npm ou yarn.

    • Com uma configuração Rápida inicial simples, permitindo que os programadores e QAs comecem a escrever testes rapidamente.

  • Execução no mesmo loop de evento do browser

    • A velocidade e precisão com que o Cypress executa os testes diretamente no browser (no mesmo loop de eventos que a aplicação) faz com que os testes sejam mais rápidos e precisos.

    • Com o acesso completo ao DOM, permite interações e inspecções detalhadas.

  • Depuração/Debug eficiente

    • Dadas as ferramentas de desenvolvimento que tem, integra-se de forma eficaz com as ferramentas de programação do browser (o famoso F12), facilitando assim a depuração de testes.

    • Ao fornecer logs detalhados dos comandos e atividades durante a execução dos testes, permite uma maior rastreabilidade e eficiência.

  • Feedback instantâneo

    • Com uma execução em tempo real, é possível acompanhar as atualizações instantâneas na interface de teste à medida que os testes são executados, permitindo uma experiência interativa.

    • O acesso a relatórios visuais, com partilha de screenshots e gravações de vídeo dos testes executados, facilita a identificação de falhas.

  • Testes E2E, de integração e de unidade

    • Dada a sua versatilidade, permite a execução de testes E2E, testes de integração e testes de unidade, tudo no mesmo ambiente.

  • Automação e controlo da rede

    • Permite interceptar e manipular requisições na rede, através da simulação das respostas de APIs, para testar diversos cenários.

    • Permite também simular diferentes condições da rede, a fim de validar a testar a robustez da aplicação.

  • Suporte a testes de interface

    • Como oferece comandos para interagir com elementos da interface (como cliques, escrita, arrastar,…) ajuda a ter uma melhor e mais fiável execução dos testes, por uma perspectiva de utilizador.

    • Como tem uma sintaxe intuitiva, para fazer asserts sobre o estado da aplicação.

  • Ambiente de testes isolado

    • Cada teste é executado em um ambiente ‘limpo’ e isolado, de forma a garantir que os testes não interferem uns com os outros.

    • Suporta a execução de testes em paralelo, o que permite reduzir de forma eficiente o tempo de execução dos mesmos e também numa fase posterior uma integração mais subtil com os processos de CI/CD.

  • Suporte a múltiplos browsers

    • Como é uma framework para testes web, é compatível com Chrome, Firefox, Edge, entre outros..

  • Framework agnóstica

    • Ou seja, funciona bem com uma variedade de frameworks JavaScript modernos, como React, Angular, Vue, tornando-se assim uma ferramenta versátil para que utilizam diferentes stacks tecnológicos, como as equipas de desenvolvimento..


Comparação com Outras Ferramentas

Cypress vs. Selenium

  • Configuração e Uso:

    • Cypress: Mais fácil de configurar e usar, com uma configuração simples através da instalação via npm e execução direta no browser.

    • Selenium: Requer configuração de drivers específicos para cada browser, o que pode ser mais complexo.

  • Execução de Testes:

    • Cypress: Executa testes em paralelo, permitindo ter testes mais rápidos e uma experiência de desenvolvimento mais fluida.

    • Selenium: Executa testes fora do browser, o que pode resultar em tempos de execução mais lentos e maior complexidade de debug.

  • Funcionalidades:

    • Cypress: Oferece uma interface de debug mais competa e fácil de usar, com ferramentas de programação integradas.

    • Selenium: Menos foco em debug interativo, exigindo mais configuração manual para funcionalidades avançadas.

Cypress vs. Playwright

  • Suporte a browsers:

    • Cypress: Principalmente focado no Chrome e no Edge, com suporte recente para Firefox.

    • Playwright: Suporte robusto para Chrome, Firefox e Safari, oferecendo uma maior flexibilidade para testes em múltiplos browsers.

  • Execução e Depuração:

    • Cypress: oferece uma interface de utilizador bastante intuitiva e completa para a execução e debug de testes.

    • Playwright: Embora tenha uma interface em linha de comandos e uma ferramentas de depuração, é mais focado no suporte abrangente a múltiplos browsers e testes paralelos.

  • Facilidade de Uso:

    • Cypress: APIs intuitivas e documentação abrangente tornam-no muito acessível para programadores e QAs.

    • Playwright: Também é considerado fácil de usar, mas pode exigir uma configuração inicial mais complexa, dependendo da sua aplicação.


Onde usar?

  • Testes de Funcionalidade:

    • Verificação de que todos os recursos e funcionalidades de uma aplicação web estão a funcionar conforme o esperado.

  • Testes de Navegação:

    • Garantir que os links, botões e redirecionamentos do site funcionam corretamente e que os utilizadores navegam pelo site de forma eficaz.

  • Testes de Preenchimento de Formulários:

    • Verificar se os formulários web podem ser preenchidos corretamente, enviar dados e lidar com validações.

  • Testes de Responsividade:

    • Avaliar como a aplicação se comporta em diferentes tamanhos de ecrã e dispositivos, garantindo que a interface é user-friendly em dispositivos móveis, tablets e computadores.

  • Testes de Integração:

    • Testar a integração entre componentes ou serviços da aplicação, para garantir que cooperam e comunicam adequadamente.

  • Testes de Usabilidade:

    • Avaliar a usabilidade da interface do utilizador, verificando se as suas ações podem ser realizadas de maneira intuitiva e sem problemas.

Anterior
Anterior

Mocks - uma breve introdução

Próximo
Próximo

SDLC e STLC - porquê a existência de dois ciclos?