-
Notifications
You must be signed in to change notification settings - Fork 0
11 ‐ Testes de Integraçã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.
- 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.
A criação dos testes de integração é responsabilidade dos testadores, profissionais especializados em desenvolver e validar cenários de teste.
- Os cenários de testes devem ser criados logo após a definição dos critérios de aceitação das User Stories.
As ferramentas de teste utilizadas para o frontend e backend são respectivamente:
- Jest
- Pytest
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.
- 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.
Os testes de integração serão executados por um pipeline de acionamento manual, esse acionamento deve ser feito pelos testadores.
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.
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.
- 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.
Os testes de integração serão armazenados dentro de ./src/tupan/tests/integration
/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
- Jest: Framework para criação e execução dos testes.
Os testes serão organizados em uma pasta dedicada dentro de src
, com subpastas para escopos específicos.
/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.
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