-
Notifications
You must be signed in to change notification settings - Fork 0
11 ‐ Testes de Integração
Os testes de software consistem em um conjunto de práticas destinadas a verificar, validar e avaliar a qualidade de um sistema ou aplicação. O objetivo principal é identificar defeitos ou inconsistências no software antes de sua entrega ao usuário final, assegurando que ele funcione conforme o esperado.
De modo geral, os testes de software são classificados em três principais categorias:
- Testes Funcionais: Verificam se o software atende aos requisitos especificados, validando funcionalidades específicas do sistema.
- Testes Não Funcionais: Avaliam aspectos como desempenho, escalabilidade, usabilidade e segurança, que não estão diretamente ligados às funcionalidades, mas são cruciais para a qualidade geral do software.
- Testes de Manutenção: Garantem que alterações no sistema, como correções de bugs ou melhorias, não introduzam novos problemas.
Os testes podem ser realizados de forma automatizada, utilizando ferramentas específicas, ou manualmente, dependendo da complexidade e do contexto do projeto. Eles são aplicados em diversas etapas do ciclo de desenvolvimento, incluindo testes unitários (validam partes isoladas do código), testes de integração (verificam interações entre módulos), testes de sistema (analisam o sistema completo) e testes de aceitação (validação final com o cliente).
O projeto Tupan adotará tanto testes unitários quanto testes de integração. Este documento define padrões para a criação e execução dos testes, incluindo quem será responsável, quando os testes devem ser criados, os recursos necessários, os fluxos e as diretrizes para lidar com falhas, e as responsabilidades pela resolução de problemas.
- Documentação detalhada dos requisitos.
- Critérios de aceitação bem definidos.
- Cenários de testes 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 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.
As ferramentas de teste utilizadas para o frontend e backend são respectivamente:
- Jest
- Pytest
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.
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 de testes, 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.
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.
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.
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 e uma pasta ìntegration
contendo os testes de integração.
/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
Criar a tela de exibição dos dashboards com as informações das estações.
Não exibir dashboards que não apresentem informações
Se um dashboard não possui nenhum valor a exibir o mesmo deve ser ocultado da página
Dados das estações metereológicas.
- 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
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