Cypress e Gitlab: como a Pencillabs automatizou parte do seu trabalho de Quality Assurance.

Blog

Cypress e Gitlab: como a Pencillabs automatizou parte do seu trabalho de Quality Assurance.

por David Carlos // 23.04.24

Cypress e Gitlab

"Com essa nova etapa na nossa esteira de entrega contínua, já tivemos três solicitações de mudança que foram revertidas por inconsistências capturadas pelo Cypress."

Parte do trabalho das pessoas que constroem produtos de software é definir critérios de qualidade que possam ser testados, de forma automatizada ou manual, antes do lançamento de uma nova versão. A depender do tamanho do projeto, é necessário ter equipes específicas que adotarão práticas e métodos focados em identificar bugs e oportunidades de melhoria.

O profissional de Quality Assurance (QA) é responsável por garantir que uma nova versão do produto seja disponibilizada apenas se os critérios de qualidade forem atendidos. Na Pencil, nós decidimos que garantir qualidade também é uma responsabilidade da pessoa desenvolvedora e por isso decidimos integrar uma etapa de QA ao fluxo das sprints.

Automação é um assunto recorrente aqui no blog, como por exemplo, quando apresentei como automatizamos o monitoramento de licitações do Governo Federal. Nesse caso, a ferramenta que utilizamos foi o Selenium, mas hoje eu quero apresentar uma segunda ferramenta que permite controlar o browser para verificar se as jornadas do usuário atendem aos requisitos e critérios de qualidade previamente definidos. Essa ferramenta é o Cypress, um grande aliado do trabalho de QA.

Qual problema o Cypress resolve

Na área de desenvolvimento, existem diferentes estratégias para se testar um software: testes unitários, de integração, funcionais e e2e (ponta a ponta). Testes e2e permitem replicar o comportamento do usuário, de preferência com todos os componentes da arquitetura sendo executados juntos (banco de dados, servidores de cache, firewall e etc).

Tipos de teste automatizado

O Cypress é uma ferramenta que permite implementar testes e2e. Os testes utilizam a linguagem Javascript e permitem controlar o browser, simulando um usuário realizando ações diversas como: autenticação, clique em botões, envio de formulários, visualização de relatórios e demais requisitos do produto. Além disso, ele permite que o desenvolvedor defina qual o estado esperado para cada cenário de teste e, caso esse estado não seja atendido, a tela é capturada e a execução dos testes é encerrada no momento exato da inconsistência.

Um dos principais projetos da Pencillabs é uma plataforma de Inteligência de dados para participação digital. A jornada de usuário mais crítica é a de participação, em que o público acessa uma URL e participa de uma pesquisa de opinião, votando e adicionando comentários. Para garantir que esse cenário nunca quebre, a equipe decidiu adotar o Cypress como parte do processo de QA.

Testes e2e e entrega contínua

O Gitlab é a plataforma que utilizamos para disponibilizar novas versões dos nossos projetos. Com ele, conseguimos construir esteiras (pipelines) de integração e entrega contínua. Essas esteiras são responsáveis automatizar a execução do código desenvolvido pelo time no nosso cluster Kubernetes. O Cypress é uma etapa da esteira de entrega contínua, já que os cenários de teste são executados depois que o nosso ambiente de homologação é atualizado.

Exemplo de pipeline

Na prática, nós não implementamos testes e2e para todas as possíveis jornadas. Decidimos cobrir apenas as três principais e, a cada nova versão lançada, nossa esteira de entrega contínua valida os critérios de qualidade. Com essa estratégia, já tivemos três solicitações de mudança que foram revertidas por inconsistências capturadas pelo Cypress. A cada nova issue, o time avalia qual o melhor nível de teste para garantir que aquela mudança seja corretamente integrada ao restante do código.

David Carlos

Desenvolvedor sênior