Skip to content

Casos de teste

Letícia edited this page Nov 27, 2024 · 4 revisions

📑Testes de Integração

Teste realizado no Back-End (Alerta)

Este arquivo contém testes de integração para as rotas e funcionalidades relacionadas ao AlertaController que interage com o Firebase Firestore. Os testes verificam a criação e recuperação de estações, parâmetros e alertas. Este teste foi selecionado devido ao fato de que a base do projeto depende das estações e parâmetros e o alerta precisa da relação entre eles para poder existir, logo um teste de integração no alerta garantiria a verificação se o parametro e a estação estão conseguindo ser integrados.

Descrição dos Testes:

1. Criação de Estação (beforeAll)

Antes de todos os testes, uma estação de exemplo é criada e o ID da estação é armazenado para ser usado nos testes subsequentes. A resposta esperada é um status HTTP 201 (Criado).

2. Deletar Estação (afterAll)

Após a execução dos testes, a estação criada é removida da base de dados.

3. Buscar Estação por ID

  • Objetivo: Verificar se a estação criada pode ser recuperada corretamente pelo ID.
  • Expectativa: O status HTTP deve ser 200 (OK) e o corpo da resposta deve conter o ID correto da estação.

4. Cadastro de Parâmetro

  • Objetivo: Verificar se é possível cadastrar um novo parâmetro.
  • Expectativa: O parâmetro deve ser cadastrado com sucesso e um ID deve ser retornado.

5. Cadastro de Alerta

  • Objetivo: Testar o cadastro de um alerta que envolve uma estação e um parâmetro.
  • Expectativa: O alerta deve ser salvo corretamente no Firestore e seu ID deve ser retornado.

6. Buscar Todos os Alertas

  • Objetivo: Verificar se todos os alertas cadastrados podem ser recuperados.
  • Expectativa: A resposta deve ser um array e o alerta previamente criado deve estar presente na lista.

Resumo:

Esses testes garantem que a aplicação seja capaz de cadastrar, recuperar e listar alertas, estações e parâmetros corretamente, com a interação adequada com o Firebase Firestore.

Teste: Renderização da Página "Alertas" - Front-End

Objetivo

Este teste tem como objetivo verificar se a página Alertas consegue ter seu html carregado corretamente sem erros, garantindo que os elementos principais da página, como o título e o sidebar, sejam exibidos conforme o esperado.

O que o teste faz

  1. Renderiza o Componente Alertas:

    • O componente Alertas é renderizado dentro de um MemoryRouter do React Router. O MemoryRouter é usado para emular o roteamento de navegação sem precisar de um servidor, permitindo que a navegação seja simulada de maneira isolada no teste.
  2. Verifica a Renderização do Título:

    • O teste espera que o título "Alertas cadastrados" seja exibido na tela. Isso é feito utilizando o método getByText, que busca um texto na tela e verifica se ele está presente. A verificação é feita de forma assíncrona usando waitFor para aguardar a renderização completa antes de validar o título.
  3. Verifica a Existência do Sidebar:

    • O teste também verifica se o sidebar da página é renderizado corretamente. Para isso, ele usa getByTestId para buscar um elemento que tenha o atributo data-testid="sidebar".

Resposta Esperada

  • Renderização sem erros: O componente Alertas deve ser renderizado corretamente, sem quebras ou erros de execução.
  • Título presente na tela: O texto "Alertas cadastrados" deve ser encontrado na tela, indicando que a página está carregada corretamente.
  • Sidebar presente: O sidebar deve ser renderizado corretamente e encontrado usando o data-testid configurado no componente.

Comportamento Esperado

  • O teste deve passar, indicando que a página Alertas é renderizada sem falhas e os elementos essenciais (título e sidebar) estão presentes.
  • Caso algum desses elementos não seja renderizado ou algum erro ocorra, o teste falhará, e uma mensagem de erro será fornecida.

Resumo

Este teste verifica a renderização básica da página Alertas, assegurando que a interface esteja carregada corretamente com o título e sidebar visíveis. O teste usa @testing-library/react para renderização e interações com a UI, garantindo que a página se comporte conforme esperado.

📑 Testes de Qualidade

Objetivo

Garantir a qualidade do código através de análises automatizadas realizadas pelo SonarCloud, utilizando métricas como cobertura de testes, duplicação de código, bugs, vulnerabilidades e code smells. O objetivo é assegurar que o código atenda a padrões de qualidade previamente estabelecidos e que seja confiável para produção. Utilizando o conceito da integração e entrega contínua, o teste de qualidade com o SonarCloud pode ser incorporado em pipelines, que vão ser executadas automaticamente após algum "gatilho" específico, que pode ser um commit ou pull request em alguma branch específica (como a develop) por exemplo, e com isso, através do relatório gerado no SonarCloud, é possível receber uma análise da qualidade do código, que pode ajudar a encontrar problemas no seu estágio inicial, fazendo com que a equipe possa arrumar o erro, e talvez evitar algo que, após um tempo, poderia virar um problema muito maior.

Funcionamento

O SonarCloud é integrado ao GitHub Actions, que desempenha um papel crucial na automação do processo de análise de qualidade do código. O GitHub Actions é uma plataforma de CI/CD (Integração Contínua e Entrega Contínua) que permite automatizar workflows diretamente no repositório do GitHub.

No caso do SonarCloud, o GitHub Actions é responsável por disparar a análise de qualidade do código de forma automática sempre que há um novo commit ou pull request nas branches configuradas. Isso garante que a qualidade do código seja constantemente verificada, sem a necessidade de intervenções manuais, tornando o processo eficiente e ágil.

O workflow do GitHub Actions é executado de forma consistente e confiável, realizando as seguintes etapas automaticamente:

  1. Checkout do código: Obtém a versão mais recente do código do repositório.
  2. Configuração do ambiente: Instala as dependências necessárias, como o Node.js e o Java 17, que são fundamentais para a execução do SonarScanner, a ferramenta que realiza a análise estática do código.
  3. Execução da análise de qualidade: O SonarScanner analisa o código e envia os resultados para o SonarCloud, onde as métricas de qualidade são processadas.
  4. Verificação do Quality Gate: Após a análise, o GitHub Actions verifica se o código passou no Quality Gate do SonarCloud, que é um conjunto de critérios de qualidade que o código precisa atender para ser considerado pronto para produção.

Essa automação do GitHub Actions permite que a análise de qualidade do código seja realizada de forma contínua, garantindo que cada alteração no código seja sempre verificada contra os critérios de qualidade. Além disso, reduz o risco de erros manuais e aumenta a confiabilidade do processo, uma vez que o pipeline é executado de forma consistente, sempre que um novo código é enviado.

Quem configura o SonarCloud e quando?

A configuração inicial do SonarCloud é feita pelo desenvolvedor ou DevOps da equipe. A análise é executada automaticamente em momentos-chave do desenvolvimento:

  • A cada commit ou pull request em branches monitoradas.
  • Após o merge em branches principais, como develop ou main.