Skip to content

Latest commit

 

History

History
549 lines (403 loc) · 11.4 KB

File metadata and controls

549 lines (403 loc) · 11.4 KB

QA SQL Validation Project

SQL PostgreSQL DBeaver Data Validation Database Testing

Projeto prático de validação de dados com SQL, desenvolvido para demonstrar conhecimentos aplicados à área de Quality Assurance.

O projeto simula um banco de dados relacional de e-commerce, permitindo validar usuários, produtos, pedidos, itens de pedido, regras de negócio, relacionamentos entre tabelas e consistência dos dados utilizando PostgreSQL e DBeaver.


Objetivo

Demonstrar o uso de SQL como ferramenta de apoio ao trabalho de QA, utilizando consultas para:

  • Validar dados cadastrados;
  • Identificar inconsistências;
  • Verificar regras de negócio;
  • Cruzar informações entre tabelas;
  • Validar relacionamentos;
  • Conferir integridade dos dados;
  • Apoiar testes funcionais;
  • Apoiar testes de integração;
  • Investigar defeitos;
  • Documentar evidências de execução.

Tecnologias utilizadas

  • SQL;
  • PostgreSQL;
  • DBeaver;
  • Git;
  • GitHub;
  • Markdown;
  • Visual Studio Code.

Estrutura do projeto

qa-sql-validation/
├── docs/
│   ├── data-dictionary.md
│   ├── evidence.md
│   └── test-scenarios.md
│
├── screenshots/
│   ├── 01_tables_created_dbeaver.png
│   ├── 02_insert_test_data_execution.png
│   ├── 03_users_data_validation.png
│   ├── 04_products_data_validation.png
│   ├── 05_orders_data_validation.png
│   ├── 06_order_items_data_validation.png
│   ├── 07_locked_users_validation.png
│   ├── 08_out_of_stock_products_validation.png
│   ├── 09_inactive_products_validation.png
│   ├── 10_orders_by_status_validation.png
│   ├── 11_active_product_without_stock_validation.png
│   ├── 12_order_total_consistency_validation.png
│   ├── 13_blocked_user_orders_validation.png
│   ├── 14_invalid_status_validation.png
│   ├── 15_orders_with_users_join.png
│   ├── 16_complete_order_join.png
│   └── 17_order_total_join_validation.png
│
├── scripts/
│   ├── 01_create_tables.sql
│   ├── 02_insert_test_data.sql
│   ├── 03_basic_selects.sql
│   ├── 04_validation_queries.sql
│   └── 05_join_queries.sql
│
└── README.md

Modelagem e estrutura do banco

O projeto utiliza quatro tabelas principais:

users
products
orders
order_items

Essas tabelas simulam um fluxo básico de e-commerce envolvendo usuários, produtos, pedidos e os respectivos itens.

A estrutura também contempla:

  • Chaves primárias;
  • Chaves estrangeiras;
  • Relacionamentos entre tabelas;
  • Restrições de unicidade;
  • Regras de integridade;
  • Restrições com CHECK.

Scripts SQL

01 - Criação das tabelas

Arquivo:

scripts/01_create_tables.sql

Responsável pela criação das tabelas:

  • users;
  • products;
  • orders;
  • order_items.

Também define:

  • Primary Keys;
  • Foreign Keys;
  • Restrições de unicidade;
  • Regras de integridade;
  • Validações com CHECK.

02 - Inserção da massa de dados

Arquivo:

scripts/02_insert_test_data.sql

Insere a massa de dados utilizada nos testes:

Entidade Quantidade
Usuários 4
Produtos 5
Pedidos 3
Itens de pedido 4

Esses dados servem como base para as consultas e cenários de validação.


03 - Consultas básicas

Arquivo:

scripts/03_basic_selects.sql

Contém consultas utilizando:

  • SELECT;
  • WHERE;
  • ORDER BY.

Entre as validações estão:

  • Usuários ativos;
  • Usuários bloqueados;
  • Produtos sem estoque;
  • Produtos inativos;
  • Pedidos por status;
  • Produtos ordenados por preço.

04 - Validações de regras de negócio

Arquivo:

scripts/04_validation_queries.sql

Contém consultas direcionadas à identificação de possíveis inconsistências e violações de regras de negócio.

Validações realizadas:

  • Produtos ativos sem estoque;
  • Pedidos sem itens;
  • Divergência entre total do pedido e soma dos itens;
  • Pedidos de usuários bloqueados;
  • Pedidos de usuários inativos;
  • Produtos inativos vinculados a pedidos;
  • Status inválidos;
  • Valores zerados ou negativos.

Essas consultas simulam verificações comuns realizadas durante testes de backend, banco de dados e integrações.


05 - Consultas com JOIN

Arquivo:

scripts/05_join_queries.sql

Contém consultas relacionais envolvendo:

  • Usuários e pedidos;
  • Pedidos e itens;
  • Itens e produtos;
  • Usuário, pedido, produto e valor;
  • Total armazenado e total calculado.

Foram utilizados:

  • INNER JOIN;
  • LEFT JOIN.

Essas consultas permitem verificar se informações relacionadas entre diferentes tabelas permanecem consistentes.


Documentação

Dicionário de dados

Arquivo:

docs/data-dictionary.md

Documenta:

  • Tabelas;
  • Campos;
  • Tipos de dados;
  • Relacionamentos;
  • Restrições;
  • Regras de integridade.

Cenários de teste SQL

Arquivo:

docs/test-scenarios.md

Documenta os cenários de validação utilizados no projeto, incluindo:

  • Objetivo;
  • Regra validada;
  • Consulta utilizada;
  • Resultado esperado;
  • Importância da validação para QA.

Evidências de execução

Arquivo:

docs/evidence.md

Reúne as evidências das execuções realizadas no DBeaver.

As screenshots demonstram:

  • Criação das tabelas;
  • Inserção da massa de dados;
  • Consultas básicas;
  • Validações de regras de negócio;
  • Consultas com JOIN;
  • Validação de consistência entre tabelas.

Principais validações realizadas

O projeto contempla validações como:

  • Usuários bloqueados;
  • Usuários inativos;
  • Produtos ativos sem estoque;
  • Produtos inativos;
  • Pedidos sem itens;
  • Consistência do total do pedido;
  • Pedidos vinculados a usuários bloqueados;
  • Pedidos vinculados a usuários inativos;
  • Produtos inativos vinculados a pedidos;
  • Status inválidos;
  • Valores zerados;
  • Valores negativos;
  • Relacionamentos entre tabelas;
  • Consistência de dados utilizando JOIN.

Validação do total do pedido

Uma das validações mais importantes do projeto compara o valor armazenado no pedido com o valor calculado a partir dos respectivos itens.

O objetivo é verificar se:

Total armazenado no pedido
        =
Soma dos valores dos itens

Esse tipo de validação ajuda a identificar inconsistências que poderiam afetar:

  • Faturamento;
  • Checkout;
  • Relatórios;
  • Integrações;
  • Dados apresentados na interface;
  • Processos financeiros.

Validação com JOIN

As consultas com JOIN permitem relacionar informações distribuídas entre diferentes tabelas.

Exemplo conceitual:

Usuário
   ↓
Pedido
   ↓
Item do pedido
   ↓
Produto

Com esse relacionamento é possível validar se os dados armazenados em diferentes pontos do sistema estão coerentes entre si.


Como executar o projeto

Pré-requisitos

É necessário possuir:

  • PostgreSQL;
  • DBeaver;
  • Banco de dados configurado.

Banco utilizado no projeto:

qa_lab

Ordem de execução

Execute os scripts no DBeaver seguindo esta sequência:

1. scripts/01_create_tables.sql
2. scripts/02_insert_test_data.sql
3. scripts/03_basic_selects.sql
4. scripts/04_validation_queries.sql
5. scripts/05_join_queries.sql

Essa ordem garante que:

  1. A estrutura do banco seja criada;
  2. A massa de dados seja inserida;
  3. As consultas básicas possam ser executadas;
  4. As regras de negócio sejam validadas;
  5. Os relacionamentos entre tabelas sejam analisados.

Evidências

As evidências estão armazenadas na pasta:

screenshots/

Entre as principais estão:

01_tables_created_dbeaver.png
02_insert_test_data_execution.png
07_locked_users_validation.png
11_active_product_without_stock_validation.png
12_order_total_consistency_validation.png
13_blocked_user_orders_validation.png
14_invalid_status_validation.png
15_orders_with_users_join.png
16_complete_order_join.png
17_order_total_join_validation.png

As screenshots permitem comprovar a execução das consultas e os resultados obtidos no banco de dados.


Aplicação de SQL em QA

Em um cenário real, SQL pode ser utilizado pelo QA para validar dados gerados ou alterados após ações realizadas:

Interface Web / Mobile
        ↓
       API
        ↓
   Banco de dados

Por exemplo, após realizar uma compra na interface, o QA pode utilizar consultas SQL para verificar:

  • Se o pedido foi criado;
  • Se o usuário correto está relacionado ao pedido;
  • Se os produtos foram registrados;
  • Se as quantidades estão corretas;
  • Se o valor total foi calculado corretamente;
  • Se o status foi armazenado corretamente.

SQL também pode apoiar:

  • Testes funcionais;
  • Testes de integração;
  • Testes de API;
  • Análise de defeitos;
  • Investigação de inconsistências;
  • Validação de regras de negócio.

Boas práticas aplicadas

Durante o projeto foram utilizadas práticas como:

  • Separação dos scripts por finalidade;
  • Organização sequencial dos arquivos SQL;
  • Massa de dados controlada;
  • Uso de Primary Keys;
  • Uso de Foreign Keys;
  • Restrições de integridade;
  • Validação de regras de negócio;
  • Consultas específicas para identificação de inconsistências;
  • Uso de JOIN para cruzamento de informações;
  • Documentação dos cenários;
  • Registro de evidências;
  • Versionamento com Git e GitHub.

Competências demonstradas

Este projeto demonstra conhecimentos práticos em:

  • SQL;
  • PostgreSQL;
  • DBeaver;
  • Database Testing;
  • Validação de dados;
  • Modelagem relacional;
  • Criação de tabelas;
  • CREATE TABLE;
  • INSERT;
  • SELECT;
  • WHERE;
  • ORDER BY;
  • INNER JOIN;
  • LEFT JOIN;
  • Primary Keys;
  • Foreign Keys;
  • Restrições com CHECK;
  • Massa de dados;
  • Regras de negócio;
  • Integridade dos dados;
  • Consultas relacionais;
  • Investigação de inconsistências;
  • Testes funcionais com apoio de banco de dados;
  • Testes de integração;
  • Evidências de execução;
  • Git;
  • GitHub;
  • Documentação técnica.

Status do projeto

Concluído nesta etapa.

O projeto atualmente demonstra:

  • Banco relacional criado em PostgreSQL;
  • 4 tabelas relacionadas;
  • Massa de dados controlada;
  • Consultas básicas;
  • Consultas de validação;
  • Regras de negócio;
  • INNER JOIN;
  • LEFT JOIN;
  • Validação de consistência do total de pedidos;
  • Validação de usuários, produtos e pedidos;
  • 17 evidências documentadas;
  • Uso do DBeaver para análise dos resultados;
  • Aplicação prática de SQL no contexto de Quality Assurance.

Próximas melhorias possíveis

  • Adicionar consultas com GROUP BY;
  • Explorar funções de agregação;
  • Expandir o uso de subqueries;
  • Criar novas regras de validação;
  • Adicionar cenários com dados inconsistentes propositalmente;
  • Validar dados retornados por uma API contra o banco;
  • Explorar views;
  • Criar novas consultas voltadas à investigação de defeitos;
  • Integrar este laboratório com projetos de testes de API.

Autor

Bruno Ramos Lopes

LinkedIn: linkedin.com/in/brunolopes-ti
GitHub: github.com/brunolopes-ti