Menu

Blog

Cypress: o novo conceito em testes automatizados

Compartilhar no facebook
Facebook
Compartilhar no twitter
Twitter
Compartilhar no linkedin
LinkedIn

Atualmente o trabalho de um bom QA (Analista de qualidade) é desafiador, devido ao cenário complexo em que os sistemas são desenvolvidos. Tendo como base esse cenário dentro de um contexto ágil, torna-se moroso o trabalho do QA quando necessita realizar a mesma bateria de testes mais de uma vez, para garantir assim a qualidade do software que será entregue. Diante disso, a importância da automatização de testes aumenta exponencialmente, pois facilita o trabalho desses profissionais, tornando a execução de testes de regressão mais simples, rápida e com resultados imediatos. A garantia da qualidade também é maior, pois um teste End-to-End (E2E) automatizado pode ser rodado após a entrega de um pacote e encontrar bugs(defeitos) em features anteriores, facilitando e agilizando o trabalho não só do QA como do desenvolvedor.

Existem no mercado muitas ferramentas que auxiliam e facilitam na automação de testes de software, cada uma com suas características, vantagens e desvantagens, e nesse artigo vamos conhecer uma delas: o Cypress.

Os testes automatizados basicamente permitem simular o comportamento do usuário no sistema via navegador. Hoje o mercado faz uso do framework Selenium para criação de testes automatizados E2E, este é bastante difundido no meio por ser uma ferramenta livre e gratuita, que permite a criação de scripts de testes pelas principais linguagens de programação como Java, Python, Ruby, C# e outras, mas conta com uma curva de aprendizado íngreme.

Uma alternativa recente é a ferramenta Cypress, um novo framework de testes também de código aberto e de fácil configuração, sem a necessidade de baixar inúmeras ferramentas e bibliotecas separadas para configurar seu conjunto de testes. Esse novo executor de testes auxilia e facilita muito a criação de testes automatizados E2E de forma simples, prática e rápida. Sua curva de aprendizado é bem menor e seus scripts são escritos via JavaScript. O Cypress veio para revolucionar e contribuir para um desenvolvimento de testes automatizados de maneira mais ágil.

O que é o Cypress?

Cypress é uma ferramenta poderosa de última geração desenvolvida especialmente para engenheiros de controle de qualidade (analistas QA) e desenvolvedores, que podem usá-la para os testes unitários. Totalmente baseado em uma nova arquitetura isenta do Selenium, apresenta o próprio painel exibindo exatamente o que está acontecendo durante a execução dos testes. À medida que o script é escrito é possível acompanhar como será a execução do teste através desse painel, auxiliando o técnico em quais partes precisam de ajustes no teste.

O Cypress utiliza o Node JS como servidor e interpretador de sua linguagem JavaScript. Trabalhando juntos, cypress e Node JS estão em constante sincronização e comunicação para execução de tarefas, tornando a experiência da escrita e execução dos testes muito mais ágil, já que o Cypress também opera na camada de rede, na leitura e alteração de tráfego na web em tempo real.

Cypress contém uma completa documentação disponível em cypress.io que facilita a escrita dos testes tornando-os mais confiáveis, com dicas e exemplos que podem ser aplicados sem haver necessidade de perder tempo na busca pela web já que todo conteúdo se encontra concentrado nesse site.

Por que utilizar o Cypress?

Seu principal foco é o teste E2E. Dentre uma gama extensa de ferramentas que utilizam o Selenium para automatização de testes, operando-os fora do navegador e executando os comandos remotamente pela rede, o Cypress surge para criar uma nova forma de automatizar os testes. Ele executa todos os testes no mesmo ciclo de execução do sistema que está sendo testado, sem usar o controle remoto que o Selenium utiliza para acesso ao sistema. Seu principal diferencial é ter sido desenvolvido para que os testes aconteçam simultaneamente ao desenvolvimento da aplicação. Claro que depende muito do processo utilizado no desenvolvimento, mas o Cypress sendo simples contribui com o aumento de produtividade no quesito de escrita de testes e aumenta a qualidade do sistema final.

Há possibilidade de criar testes apenas de front-end e back-end, não só testes E2E. Como ele tem o controle nativo da aplicação controlando-a de cima para baixo, além de operar dentro da camada de rede, lendo e alterando o tráfego da web em tempo real.

Os logs de comandos são gravados para revisitar posteriormente os resultados. Eles são exibidos em tempo de execução dos testes, à medida que os testes são escritos e salvos o Cypress já executa a automação para que o técnico possa verificar se o que foi codado está aderente ao teste, facilitando e muito no debug da automação.

Captura de tela para testes falhos e gravação de vídeos de toda execução dos testes, sem configurações extras uma vez que o Cypress tem acesso nativo ao SO uma vez que ele todo é instalado localmente na máquina, e não utilizado de forma remota, além de possibilitar criação de relatórios de testes de forma mais simples que o Selenium.

Cypress vs. Selenium

Cypress tem controle e acesso nativo a toda aplicação, e com esse recurso torna o teste muito mais rápido e confiável para quem está automatizando. Isso possibilita a criação dos casos de teste automatizados de forma simultânea com o próprio desenvolvimento da aplicação. O Cypress controla a aplicação de cima para baixo, onde assim interpreta o que ocorre fora e dentro do navegador que está sendo testado, fornece ndo resultados muito mais consistentes do que o Selenium, por conta de a ferramenta ser capaz de compreender os eventos assim que eles acontecem . Além de operar dentro da camada de rede, a ferramenta interpreta e altera o tráfego da web em tempo real.

Já o Selenium controla a aplicação de forma remota, é necessário um suporte diferente para cada tipo de navegador que será testado, e sua curva de aprendizado é bem ígreme, sendo necessária a instalação e configuração de inúmeras ferramentas e bibliotecas para que o conjunto do teste possa funcionar corretamente, uma vez que não são instalados localmente na máquina usando tais recursos de forma remota. O Selenium também necessita de várias ferramentas para auxiliar no controle dos navegadores, mas também é bem mais livre no quesito de linguagens de programação, pois tem suporte para a maioria das linguagens usadas atualmente.

Iniciantes em automação de teste? Use o Cypress!

Sem muito esforço para preparar a máquina para instalar essa super ferramenta. Instale:

  • IDE VSCode com suporte a linguagem de programação
  • JavaScript; Node.js
  • Cypress via npm no seu terminal
npm install cypress

Pronto! Para executar é só passar o comando abaixo via terminal.

./node_modules/.bin/cypress open

Uma GUI com vários exemplos de testes é aberta para poder acompanhar o quão rápido e fácil é utilizar os testes com Cypress.

A estrutura do teste já é construída assim que que a interface do Cypress é aberta, com as pastas Fixtures, Integration, Plugins e Support.

Todos os testes (Ex: seu_teste.spec.js) devem ficar na pasta Integration, essa é a pasta com todos os arquivos apresentados dentro da
Interface do Cypress. Já a pasta Fixtures contempla os arquivos .json que auxiliam inserção de massa de dados aos testes, assim o Cypress sozinho já sabe onde buscar os dados para rodar nos testes, basta chamar o arquivo com o .json correspondente em Fixtures. Dentro da pasta S upport pode-se inserir todos os arquivos .js de comandos que possam ser úteis nos testes, códigos que podem ser colocados em funções e chamados dentro dos testes, sem a necessidade de repetição de código. Por fim, na pasta Plugins há um arquivo (index.js) que contém todos os plugins adicionais que serão utilizados nos testes. O principal plugin instalado é o Xpath , que auxilia no mapeamento de elementos das aplicações, semelhantes as ferramentas listadas (https://www.w3schools.com/xml/xml_xpath.asp).

Após as devidas apresentações basta começar a codar os testes. Na interface do Cypress, além do log de comandos apresentado à esquerda, temos o app preview à direita, que auxilia e muito no mapeamento de elementos. Com a ferramenta playground, basta selecionar e clicar no elemento que deseja mapear e pronto, na parte superior do app preview você pode simplesmente “copiar” o comando do mapeamento do elemento, inserir no seu código de teste e fazer os Assertions.

Como vimos, em virtude de tudo que foi mencionado, o Cypress é uma ferramenta poderosa, completa e fácil de utilizar, e mesmo sendo iniciante você consegue criar um teste automatizado de forma simples sem precisar de tantas configurações para ter em mãos um teste robusto e monitorado. Claro que algumas dúvidas podem surgir, mas basta recorrer ao cypress.io para encontrar um exemplo que te ajude de forma concisa na vasta documentação disponível.

Receba nossos conteúdos

Preencha seu email e receba nossos conteúdos 

Entre em contato

Email: contato@atech.com.br
Tel.: 55 (11) 3103-4600
Rua do Rocio, 313 – 5° andar
Vila Olímpia – São Paulo – SP

Copyright © 2019. Todos os direitos reservados.
Criado pela Intelligenzia