Projeto de portfólio focado em Quality Engineering aplicado a Dados, cobrindo testes de ETL, Data Quality, reconciliação Source-to-Target, grandes volumes, SQL avançado, automação e CI/CD.
O cenário simula uma plataforma de transações financeiras em que dados passam por regras de qualidade antes de seguir para Staging e Warehouse.
flowchart TD
A[RAW Data] --> B[Quality Gate]
B -->|Approved| C[Staging]
B -->|Rejected| D[Quarantine]
C --> E[ETL Transformation]
E --> F[Warehouse]
F --> G[Source-to-Target Reconciliation]
G --> H[ETL Audit]
H --> I[Quality Metrics]
I --> J[CI/CD Evidence]
- ETL / ELT Testing
- Data Quality
- Source-to-Target Testing
- Reconciliação de dados
- Quality Gate
- Data Quarantine
- SQL avançado
- Validação de regras de transformação
- Integridade referencial
- Grandes volumes de dados
- Testes automatizados com Pytest
- Métricas de qualidade
- Base SAS
- Shift Left Quality
- GitHub Actions
- Evidências automatizadas
A massa RAW contém registros válidos e defeitos controlados.
Fluxo:
5 registros RAW
|
v
Quality Gate
/ \
/ \
3 válidos 2 rejeitados
| |
v v
Staging Quarantine
Exemplos de regras:
valor_bruto > 0
taxa >= 0
taxa <= valor_bruto
status IN ('APROVADA', 'NEGADA', 'CANCELADA')
Os registros inválidos recebem rastreabilidade de rejeição:
{
"quality_status": "REJECTED",
"rejection_reasons": [
"INVALID_GROSS_AMOUNT"
]
}O pipeline implementa:
RAW
↓
Quality Validation
↓
Staging
↓
Transformation
↓
Warehouse
↓
Reconciliation
↓
Audit
Regra financeira implementada:
valor_liquido = valor_bruto - taxa
Exemplo:
valor_bruto: 150.00
taxa: 5.00
valor_liquido: 145.00
A suíte SQL utiliza:
- CTE
- Window Functions
- ROW_NUMBER()
- LAG()
- PARTITION BY
- FULL OUTER JOIN
- EXCEPT
- COALESCE
- CASE
- GROUP BY
- SUM
- COUNT
As consultas cobrem:
- NULLs
- duplicidades
- integridade referencial
- regras de negócio
- transformações
- reconciliação financeira
- comparação detalhada origem × destino
| Dimensão | Exemplo |
|---|---|
| Completeness | campos obrigatórios |
| Uniqueness | IDs duplicados |
| Validity | domínio e formato |
| Consistency | comparação entre camadas |
| Accuracy | regras de transformação |
| Integrity | relacionamento entre entidades |
| Reconciliation | origem × destino |
O projeto gera automaticamente um dataset sintético de 100.000 registros.
| Métrica | Resultado |
|---|---|
| Total | 100.000 |
| Válidos | 99.000 |
| Inválidos únicos | 1.000 |
| Invalid Amount | 500 |
| Invalid Fee | 500 |
| Invalid Status | 500 |
| Null Records | 0 |
| Duplicate IDs | 0 |
| Data Quality Score | 99,0% |
| Tempo local | ~0,17 s |
O tempo é apenas uma referência de execução local e varia conforme o ambiente.
A massa de 100 mil registros é gerada durante a execução e não é versionada.
Stack principal:
Python 3.12
Pytest
Pandas
pytest-html
Estrutura de testes:
tests/
├── data-quality/
├── integration/
└── volume/
Execução utilizada pelo CI:
python -m pytest \
tests/volume \
tests/integration \
tests/data-quality/test_quality_gate.py \
-vResultado atual no CI:
60 passed
1 skipped (benchmark opcional de 1M)
Localmente, com o dataset de 1 milhão gerado, o teste adicional também é executado com sucesso.
A auditoria valida:
source_records
staging_records
warehouse_records
rejected_records
missing_in_warehouse
extra_in_warehouse
reconciliation_status
Resultado esperado:
Source: 5
Staging: 3
Warehouse: 3
Rejected: 2
Reconciliation: PASSED
O projeto possui scripts Base SAS para:
- importação de CSV;
- validação de completude;
- identificação de duplicidades;
- cruzamento entre bases;
- Source-to-Target Reconciliation;
- análise financeira;
- regras de negócio.
sas/
├── 01_import_csv.sas
├── 02_duplicate_validation.sas
├── 03_completeness_validation.sas
├── 04_source_target_reconciliation.sas
├── 05_financial_analysis.sas
└── 06_business_rules_validation.sas
Os scripts SAS requerem um ambiente SAS para execução.
O projeto possui validações automatizadas para CSV, JSON, TXT e Excel, incluindo schema, campos obrigatórios, duplicidade, domínio, integridade e consistência entre arquivos.
Atualmente o projeto trabalha com:
CSV
JSON
TXT
Exemplos:
data/raw/csv/clientes.csv
data/raw/json/transacoes.json
data/raw/txt/cancelamentos.txt
A validação de arquivos Excel está implementada e coberta por testes automatizados de schema, obrigatoriedade, duplicidade e qualidade dos dados.
A estratégia de qualidade começa no refinamento dos requisitos.
A documentação inclui:
- Data Quality Strategy;
- Acceptance Criteria;
- Risk Analysis;
- Source-to-Target Mapping;
- Defect Documentation;
- Test Execution.
Fluxo:
Requisito
↓
Critério de Aceite
↓
Análise de Risco
↓
Data Quality Rule
↓
Teste Automatizado
O projeto possui uma matriz de rastreabilidade automatizada relacionando:
Requisito → Critério de aceite → Teste automatizado → Evidência → Defeito
A matriz é validada por Pytest para garantir que os documentos, testes, evidências e defeitos referenciados realmente existam no repositório.
A estrutura representa práticas utilizadas em ferramentas como Jira, Xray e Octane, sem simular uma integração real com essas plataformas.
Arquivos principais:
docs/traceability-matrix.jsondocs/test-traceability.mdtests/integration/test_traceability_matrix.py
O projeto contém defeitos de dados documentados:
docs/defects/
├── BUG-DATA-001.md
└── BUG-DATA-002.md
Os registros incluem severidade, prioridade, impacto, evidência, resultado esperado e regra violada.
GitHub Actions executa automaticamente:
Checkout
↓
Setup Python
↓
Install Dependencies
↓
Generate 100K Dataset
↓
Generate Data Quality Metrics
↓
Execute ETL
↓
Execute ETL Audit
↓
Run Automated Tests
↓
Upload Evidence
O pipeline é disparado em:
push → main
pull request → main
As evidências são disponibilizadas como artifacts da execução.
A estrutura para PostgreSQL já está preparada com as camadas:
source
staging
warehouse
Incluindo:
source.clientes
source.estabelecimentos
source.transacoes
staging.clientes
staging.estabelecimentos
staging.transacoes
warehouse.dim_cliente
warehouse.dim_estabelecimento
warehouse.fact_transacao
O repositório também contém:
docker-compose.yml
A integração runtime com PostgreSQL e Docker está implementada e validada por testes automatizados de estrutura, transformação, qualidade e reconciliação.
qa-data-quality-etl-engineering/
├── .github/workflows/
├── data/
├── database/init/
├── docs/
├── etl/
├── sas/
├── scripts/
├── sql/
├── tests/
├── docker-compose.yml
├── pytest.ini
├── requirements.txt
└── README.md
- Data Quality Strategy
- Quality Gate
- Data Quarantine
- SQL avançado
- ETL automatizado
- Source-to-Target Reconciliation
- ETL Audit
- Scripts SAS
- Dataset de 100K registros
- Data Quality Metrics
- Pytest
- GitHub Actions
- Evidências automatizadas
- Automated test traceability
- Excel validation
- TXT automated validation
- PostgreSQL runtime integration
- Docker integration
- Database automated tests
- Dataset de 1 milhão de registros
Além da massa padrão de 100 mil registros, o projeto possui validação local opcional com 1 milhão de transações sintéticas.
| Dataset | Registros válidos | Registros inválidos | Data Quality Score | Tempo | Throughput |
|---|---|---|---|---|---|
| 100K | 99.000 | 1.000 | 99,0% | 0,1284 s | 778.679,75 registros/s |
| 1M | 990.000 | 10.000 | 99,0% | 1,1946 s | 837.087,88 registros/s |
Os resultados acima correspondem a uma execução local de referência. O throughput representa a quantidade aproximada de registros processados por segundo e pode variar conforme hardware e ambiente.
O dataset de 1 milhão de registros é gerado localmente e está excluído do controle de versão por meio do .gitignore.
python scripts/generate_large_dataset.py \
--records 1000000 \
--output transacoes_1m.csv
python -m pytest tests/volume/test_million_records.py -vA validação verifica:
- 1.000.000 de registros processados;
- 990.000 registros válidos;
- 10.000 registros inválidos únicos;
- ausência de IDs duplicados;
- ausência de campos obrigatórios nulos;
- Data Quality Score de 99%.
No ambiente de CI, o teste de 1 milhão é ignorado caso a massa local não exista, evitando versionamento de arquivos de grande volume.
Este projeto está disponível sob a MIT License. Consulte o arquivo LICENSE para mais detalhes.
Jaqueline Fernandes de Andrade
Quality Assurance | Quality Engineering | Test Automation | Data Quality