Skip to content

11 ‐ Testes de Integração

Wellington Luiz de Faria edited this page Dec 4, 2024 · 3 revisions

Testes de Integração

11.1 Introdução

Este documento estabelece os padrões e diretrizes para o processo de testes no projeto Tupan, abrangendo testes unitários e de integração.


11.2 Criação dos testes

11.2.3 Recursos necessários para a criação dos testes de integração

  • Documentação detalhada dos requisitos.
  • Critérios de aceitação bem definidos.
  • Cenários de teste bem definidos.
  • Ferramentas e ambientes de teste configurados adequadamente.

11.2.2 Responsabilidade pela Criação

A criação dos testes de integração é responsabilidade dos testadores, profissionais especializados em desenvolver e validar cenários de testes forem definidos.

11.2.3 Cenários de testes

Os cenários de testes devem ser criados logo após a definição dos critérios de aceitação das User Story's.

11.2.4 Ferramentas de teste

As ferramentas de teste utilizadas para o frontend e backend são respectivamente:

  • Jest
  • Pytest

11.2.5 Ambiente de teste

O ambiente de teste é configurado com um banco de dados preparado especificamente para ser populado com os dados necessários durante a execução dos testes, garantindo um cenário adequado para validação das funcionalidades.

11.2.6 Testes

Os testes de integração devem ser elaborados na branch develop assim que os critérios de aceitação das User Story's e os cenários de testes forem definidos.

Os testes de integração devem popular o banco de dados com dados específicos para cada cenário, sendo responsabilidade do script de teste criar esses dados. Para garantir um ambiente limpo entre os testes, existe uma fixture configurada para excluir os dados do banco ao final de cada execução, permitindo que o próximo teste insira as informações necessárias de forma isolada e controlada.


11.3 Execução dos Testes

11.3.1 Responsabilidade pela execução dos testes

Os testes de integração serão realizados por meio de um pipeline com acionamento manual, que deverá ser executado pelos testadores. Esses testes devem ser executados exclusivamente na branch develop.

Caso os testes passem sem nenhum erro o testador deve acionar o checkbox de que passou nos testes de integração que estará no card da tarefa.

11.3.2 Comportamento em Caso de Falhas

Quando uma falha for detectada:

  • Logs detalhados serão gerados para apoiar a análise do problema.
  • Os testadores serão responsáveis por analisar as falhas identificadas nos testes de integração e notificar os responsáveis, seja do frontend ou do backend, conforme a origem do problema.
  • A correção das falhas identificadas nos testes ficará a cargo do indivíduo que foi notificado pelo testador sobre a falha.

11.3.3 Acompanhamento e Correções

As falhas identificadas devem ser registradas como issues no GitHub, permitindo seu rastreamento e priorização.

  • Detalhes da Issue:
    • Critérios de aceitação associados à tarefa em que o teste apresentou falha.
    • Logs de execução do teste, fornecendo informações para facilitar a análise e resolução.

Após as correções, os testes devem ser reexecutados para verificar se o problema foi solucionado e garantir que nenhuma nova falha foi introduzida. Somente após essa validação a issue poderá ser marcada como resolvida.


11.4 Configuração do ambiente de testes

11.4.1 Backend

Biblioteca Utilizada

  • Pytest: Framework para criação e execução dos testes.

Estrutura de Diretórios

Os testes de integração serão armazenados dentro de ./src/tupan/tests/integration.

Exemplo de Estrutura:

/src
    /tupan
        /usuarios
            __init__.py
            admin.py
            views.py
            urls.py
            serializers.py
            /tests
                test_views.py
                test_urls.py
        /usuarios
            test_views.py
        /tests
            /integration
                conftest.py
                pytest.ini
                test_examplo.py

11.4.2 Frontend

Biblioteca Utilizada

  • Jest: Framework para criação e execução dos testes.

Estrutura de Diretórios

Os testes serão organizados em uma pasta dedicada dentro de src, com subpastas para escopos específicos e uma pasta ìntegration contendo os testes de integração.

Exemplo de Estrutura:

/src
    /app
    /components
        /alertas
            confirmacao.tsx
        /estacao
            estacao.tsx
    /hooks
    /tests
        /estacao
            adicionarEstacao.test.ts
        /integration
            integrationEstacoes.test.ts

Nota: Testes fora das subpastas abrangem múltiplos escopos.

11.4.3 Pipeline

A execução da pipeline dos testes de integração deve ser realizada manualmente através do GitHub.

name: Django Integration Tests

on:
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [3.12]
    steps:
    - uses: actions/checkout@v4

    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v3
      with:
        python-version: ${{ matrix.python-version }}

    - name: Install Dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements-dev.txt

    - name: Start PostgreSQL service
      run: |
        docker run --name postgres-db -d \
          -e POSTGRES_USER=${{ secrets.DB_USERNAME }} \
          -e POSTGRES_PASSWORD=${{ secrets.DB_PASSWORD }} \
          -e POSTGRES_DB=${{ secrets.DB_NAME }} \
          -p 5432:5432 postgres:13
        # Wait until PostgreSQL is ready
        until docker exec postgres-db pg_isready -U ${{ secrets.DB_USERNAME }}; do
          echo "Waiting for PostgreSQL to be ready...";
          sleep 5;
        done

    - name: Create .env file
      run: |
        echo "SECRET_KEY=${{ secrets.SECRET_KEY }}" >> .env
        echo "DB_USER=${{ secrets.DB_USERNAME }}" >> .env
        echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> .env
        echo "DB_NAME=${{ secrets.DB_NAME }}" >> .env
        echo "DB_HOST=localhost" >> .env
        echo "DB_PORT=5432" >> .env

    - name: Apply Django Migrations
      run: |
        python src/tupan/manage.py makemigrations
        python src/tupan/manage.py migrate

    - name: Run Integration Tests
      run: |
        cd src/tupan/tests/integration && pytest

    - name: Stop PostgreSQL container
      run: |
        docker stop postgres-db
        docker rm postgres-db

11.5 Exemplo de card

Criação da tela de Dashboards

O que fazer:

Criar a tela de exibição dos dashboards com as informações das estações.

Restrições:

Não exibir dashboards que não apresentem informações

Falha:

Se um dashboard não possui nenhum valor a exibir o mesmo deve ser ocultado da página

Conteúdo:

Dados das estações metereológicas.


Aceitação:

  • Os dashboards devem apresentar informações de fácil leitura;
  • Legendas/títulos explicativos de cada dashboard exibido;
  • Passou nos testes unitários
  • Passou nos testes de integração

Apoio:

Não há material de apoio.

Desenvolvido pela equipe: SyntaxSquad, composta por alunos do 4º semestre, do tecnólogo em Desenvolvimento de Software Multiplataforma, na FATEC Profº Jessen Vidal - São José dos Campos, SP, 2024

Clone this wiki locally