O Backoffice JogaJunto é o projeto final do módulo avançado do curso Bugou? QA TA ON oferecido pelo Instituto Joga Junto. Trata-se da criação de cenários de testes manuais e automatizados para um sistema de controle de estoque de produtos para os colaboradores do Instituto Joga Junto, no qual é possível realizar o cadastro, pesquisa e filtragem de produtos adicionados.
Durante o projeto, começamos com o planejamento inicial, onde compreendemos o problema, analisamos os fluxos e requisitos do cliente, exploramos o funcionamento do sistema e mapeamos suas principais funcionalidades. Direcionamos nossa atenção para a definição de cronogramas e divisão de tarefas que seriam realizadas nessa sprint.
Em seguida focamos na parte da execução prática, envolvendo o detalhamento de cenários e casos de testes, a condução dos testes manuais, a elaboração do bug report e a criação de testes de API e de testes automatizados. Por fim, foi realizado uma análise dos problemas identificados e a apresentação dos resultados para o cliente.
A automação dos testes é desenvolvida em Python, utilizando Selenium WebDriver, com o padrão de design Page Objects. Os casos de testes, utilizam do framework Behave para o suporte ao desenvolvimento orientado ao comportamento. Tanto os cenários/casos de teste, quanto o bug report foram escritos em Gherkin.
SQUADS
A divisão de equipes dentro do Instituto Joga Junto foi através de Squads. Esse conceito foi popularizado pela Spotify, embora muitas outras empresas também tenham adotado e adaptado esse modelo.
Com isso, surgiu os Aspirantes da Automação. Esse foi o nome escolhido ao nosso squad pelos participantes - uma sugestão que foi rapidamente abraçada pela equipe, tendo em vista que o principal tópico do módulo avançado do curso era o seu foco em automação de testes.
FLUXUOGRAMA
Antes da criação dos cenários de testes, foi elaborado um fluxuograma detalhado para mapear todos os possíveis caminhos e interações do usuário no Backoffice JogaJunto. Esse processo foi fundamental para compreender o funcionamento completo do sistema e identificar os fluxos que precisavam ser validados durante os testes.
No planejamento de testes para o Backoffice JogaJunto, começamos com uma reunião para definir o que seria testado, focando nas funções de cadastro, pesquisa e filtragem de produtos. Durante essa reunião, discutimos como realizar os testes e dividimos as tarefas entre os membros da equipe, de acordo com as habilidades de cada um.
Depois de dividir as tarefas, criamos um cronograma com prazos para cada etapa do projeto. Isso nos ajudou a organizar o trabalho e garantir que todas as fases fossem concluídas dentro do tempo planejado, mantendo a qualidade do projeto.
Organização do Planejamento de testes
CENÁRIOS DE TESTES
Os cenários de testes foram desenvolvidos com base nos requisitos estabelecidos e executados nos navegadores Google Chrome (Windows e Android) e Safari (iOS e iPadOS).
Foram desenvolvidos um total de 69 casos de testes divididos entre os fluxos de login/logout, cadastro de produto, filtragens de produtos, pesquisa de produtos e entre outros requisitos funcionais e não funcionais.
Casos de Testes por Cenário de Teste
BUG REPORT
Após a execução dos testes, o bug report do Backoffice JogaJunto categoriza e prioriza os problemas identificados em cada cenário de teste. Os bugs são classificados por sua criticidade, proporcionando uma visão clara dos aspectos do sistema que requerem correção imediata para melhorar a experiência do usuário e a eficiência operacional do sistema.
Foram reportados um total de 50 bugs, distribuídos por todo o sistema, cada um com diferentes níveis de criticidade. A maior parte dos bugs foram encontrada dentro do fluxo de filtragem de produtos, seguido pelo fluxo de cadastro de produto, que é o principal fluxo da aplicação.
Testes com sucesso/falha no cenário de Cadastro de Produtos
CRITICIDADE
A criticidade dos bugs foi categorizada em quatro níveis, cada um refletindo a severidade do impacto no funcionamento do sistema e na experiência do usuário. Abaixo estão as definições de cada nível de criticidade:
🔵 Leve: Bugs que causam pequenos inconvenientes ou problemas estéticos, sem afetar significativamente a funcionalidade do sistema.
⚠️ Moderada: Bugs que afetam algumas funcionalidades, mas possuem soluções alternativas, permitindo o uso contínuo do sistema.
🚨 Grave: Bugs que comprometem funcionalidades importantes, tornando o sistema difícil de usar ou causando erros significativos que afetam a experiência do usuário.
🔥 Blocker: Bugs críticos que interrompem completamente o funcionamento do sistema, impedindo a realização de ações essenciais e tornando o sistema inutilizável até serem corrigidos.
TESTES AUTOMATIZADOS
Para garantir que as funcionalidades principais do Backoffice JogaJunto fossem testadas de maneira eficiente e consistente, a equipe implementou testes automatizados utilizando Python, Selenium e Behave, seguindo o padrão Page Objects. Esses testes foram focados nos happy paths: caminhos que representam os fluxos ideais de uso do sistema, onde todas as ações dos usuários ocorrem conforme o esperado, sem erros ou exceções.
O Selenium foi a ferramenta escolhida para automatizar as interações com o navegador, simulando ações de usuários como cliques, preenchimento de formulários e navegação entre páginas. Integrado ao Behave, que permite escrever testes com base nos casos de testes ja desenvolvidos, e que se baseiam no comportamento do usuário. Com o padrão Page Objects, cada página do sistema foi representada por uma classe, facilitando a manutenção e a reutilização dos testes. Ao concentrar os testes nos happy paths, a equipe assegurou que as funcionalidades essenciais do sistema fossem validadas de ponta a ponta, garantindo que o sistema funcionasse conforme o planejado no uso típico.
Encapsulamento das páginas com Page Objects
TESTES DE API
Foram implementados testes automatizados para a API do Backoffice JogaJunto, focando também nos happy paths. Esses testes garantem que as funcionalidades principais da API funcionem corretamente. Além disso, foram implementados testes de contrato.
Testes de contrato são realizados para garantir que a API esteja em conformidade com as especificações acordadas entre os serviços que se comunicam. Esses testes verificam os formatos de dados, os tipos de resposta e os códigos de status HTTP. Eles ajudam a assegurar que mudanças na API não quebrem a integração com outros sistemas e que as respostas sejam consistentes e previsíveis.
Testes de Contrato
Para complementar os testes automatizados, foi criada uma collection no Postman que cobre todos os fluxos possíveis da API, tanto positivos quanto negativos. Essa collection inclui uma série de solicitações e cenários de teste que exploram diferentes aspectos da API, desde respostas esperadas em situações normais até como a API lida com entradas inválidas ou inesperadas. Utilizando essa abordagem, foi possível testar a robustez e a confiabilidade da API, garantindo que ela funcionasse corretamente em uma ampla gama de condições e atendesse aos requisitos estabelecidos.
CONTINOUS INTEGRATION
Foi criada uma pipeline no GitHub Actions para o Backoffice JogaJunto, com o objetivo de automatizar a execução dos testes sempre que houver alterações no código. A ideia principal por trás dos testes automatizados é que eles sejam executados de forma automática e contínua, garantindo que a qualidade do software seja mantida a cada modificação realizada.
Pipeline de CI
A pipeline é configurada para rodar os testes toda vez que um push é feito para o repositório. Ela executa os testes de maneira paralela em dois navegadores diferentes: Chrome e Firefox. Isso permite verificar a compatibilidade e o desempenho do sistema em diferentes ambientes de navegação, garantindo que o software funcione corretamente em ambos os casos. Esse processo automatizado ajuda a detectar problemas rapidamente e a manter a qualidade do código ao longo do desenvolvimento.