TodoMVC

TODO MVC

O projeto consiste no desenvolvimento de uma suíte de testes manuais e automatizados para a aplicação TodoMVC. Ele inclui user stories com seus requisitos e regras de negócio; um plano de testes para garantir cobertura das funcionalidades e testes manuais com evidências documentadas. Além disso, implementei automação de testes usando Cypress junto com uma integração contínua via Github Actions para manter a estabilidade e qualidade do código.

APLICAÇÃO SOB TEST (AUT)

O TodoMVC é um projeto que apresenta o mesmo aplicativo de lista de tarefas implementado em diferentes frameworks JavaScript. É uma ferramenta útil para comparar sintaxes, soluções e desempenho entre os principais frameworks, sendo amplamente utilizado para benchmarks de compatibilidade entre navegadores.

To help you understand the options, we created TodoMVC - a project which has offered the same Todo applications implemented in popular JavaScript frameworks for the last decade.

TodoMVC.com

Por mais que a interface gráfica e as funcionalidades sejam iguais entre as diferentes implementações, neste projeto eu utilizo apenas a interface do exemplo do TodoMVC implementado em React.

USER STORIES

As user stories são uma parte fundamental do processo de desenvolvimento ágil, pois ajudam a capturar as necessidades e expectativas dos usuários de forma simples e compreensível. No contexto do TodoMVC, as User Stories foram elaboradas com base nas principais funcionalidades: criar uma tarefa, completar uma tarefa e os filtros atribuídos.

Com a analise do funcionamento da aplicação e suas funcionalidades principais, foi possível definir requisitos e user stories com suas respectivas regras de negócio e critérios de aceitação.

PLANO DE TESTES

Com as user stories definidas como nosso guia, passei para a elaboração do plano de testes. Os cenários de testes foram desenvolvidos com base nas principais funcionalidades da aplicação TodoMVC. Foram desenvolvidos um total de 13 casos de testes, elaborados para validar as funcionalidades conforme descrito nas user stories, assegurando que todos os aspectos críticos da aplicação fossem testados de maneira eficaz.

Os casos de teste, escritos em Gherkin, são elaborados a partir da perspectiva do usuário e seu comportamento. Essa abordagem garante que os testes reflitam as necessidades reais dos usuários e ajudem a alinhar as expectativas dos stakeholders com a funcionalidade do sistema.

Cada teste foi documentado com os seguintes detalhes:

  • 😀 Status do Teste: Indicação se o teste foi aprovado ou reprovado.
  • 🔥 Prioridade: Classificação da importância da funcionalidade no projeto.
  • 🚨 Severidade: Grau de impacto sobre outras tarefas.
  • 📆 Data do teste: Último dia que o teste foi realizado.

A etapa seguinte envolveu a execução dos casos de testes definidos anteriormente no plano de teste. Executei os testes e documentei as evidências dos testes realizados, fornecendo uma documentação visual do processo de teste manual. Você pode verificar as evidências aqui.

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

Por fim, implementei a automação dos cenários de teste utilizando o framework Cypress. Esse processo permitiu a criação de scripts automatizados que reproduzem os mesmos cenários de teste de forma consistente e repetível. Os testes automatizados permitem uma detecção precoce de possíveis regressões mantendo a estabilidade da aplicação ao longo do tempo.

Para melhorar a usabilidade e a clareza do código, criei comandos customizáveis no Cypress. Cada comando foi devidamente documentado, incluindo exemplos claros de como usá-los efetivamente. Essa abordagem não apenas facilitou a manutenção dos testes, mas também promoveu uma colaboração mais eficiente dentro da equipe.

Documentação do comando customizável cy.createNewTaskbyGUI() no IntelliSense

CONTINOUS INTEGRATION

Para garantir a qualidade contínua do projeto, integrei a suíte de testes automatizados do Cypress com o GitHub Actions. Toda vez que um push é feito no repositório, os testes são executados automaticamente, fornecendo feedback imediato sobre a saúde do projeto.

Pipeline do Github Actions

CONCLUSÃO

Durante o desenvolvimento dos testes para o projeto TodoMVC, aprendi a importância de uma abordagem organizada para garantir a qualidade do software. Criar as user stories e o plano de testes me ajudou a entender melhor as funcionalidades do sistema e a testar o que realmente importa para o usuário. A automação com Cypress e a integração com GitHub Actions garantiram a estabilidade da aplicação. Foi uma ótima experiência para melhorar minhas habilidades em testes e garantir a qualidade do software.