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 teste.

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 Stories.

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 o banco de dados devidamente preparado para ser populado pelos dados necessários durante a execução dos testes.

11.2.6 Teste de Integração

  • Os testes de integração devem ser elaborados assim que os critérios de aceitação das User Stories e os cenários de testes forem definidos.

Os testes de integração precisam popular o banco de dados com dados específicos de cada cenário de testes, sendo responsabilidade do script de teste realizar a criação desses dados.


11.3 Execução dos Testes

11.3.1 Responsabilidade pela execução dos testes

Os testes de integração serão executados por um pipeline de acionamento manual, esse acionamento deve ser feito pelos testadores.

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.

Para os testes de integração existe uma fixture que a cada teste exclui os dados do banco de dados para que o próximo teste de integração insira os seus dados para o cenário de 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.

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

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