Middle
Que casos de teste podem ser desenvolvidos para testar bases de dados?
sobes.tech IA
Resposta da IA
Testes da estrutura da base de dados, incluindo esquemas, tabelas, índices, restrições (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, NOT NULL).
Testes de dados:
- Verificação da correção dos dados após operações: INSERT, UPDATE, DELETE.
- Verificação da conformidade dos dados com a lógica de negócio.
- Testes de integridade de dados em operações concorrentes.
- Testes de importação/exportação de dados.
- Testes de migração de dados.
Testes de procedimentos armazenados, funções e triggers:
- Testes de parâmetros de entrada e resultados de saída.
- Testes de manipulação de erros e exceções.
- Testes do impacto nos dados das tabelas.
- Testes de desempenho.
Testes de desempenho e carga:
- Testes do tempo de execução de consultas (SELECT).
- Testes da velocidade de operações de modificação de dados (INSERT, UPDATE, DELETE).
- Testes do comportamento do banco sob alta carga.
- Testes de escalabilidade.
Testes de segurança:
- Testes de permissões de acesso de usuários.
- Testes de vulnerabilidades de injeção SQL.
- Testes de auditoria e registro.
Testes de regressão após alterações no esquema do banco ou no código.
Testes de backup e restauração de dados.
Exemplos de casos para verificar restrições:
| ID | Nome do caso | Passos | Resultado esperado |
|---|---|---|---|
| 1 | Verificação PRIMARY KEY - duplicação de valor | Tentar inserir um novo registo com ID que já existe na tabela. | O sistema deve emitir um erro de violação de unicidade de PRIMARY KEY. |
| 2 | Verificação FOREIGN KEY - referência a registo inexistente | Tentar inserir um registo numa tabela dependente que faz referência a um ID que não existe na tabela principal. | O sistema deve emitir um erro de violação de integridade de chave estrangeira. |
| 3 | Verificação NOT NULL - inserção de NULL | Tentar inserir um registo numa tabela deixando NULL num campo marcado como NOT NULL. | O sistema deve emitir um erro de violação de restrição NOT NULL. |
| 4 | Verificação CHECK - valor incorreto | Tentar inserir/atualizar um registo com um valor que não satisfaz a restrição CHECK (por exemplo, valor negativo na idade). | O sistema deve emitir um erro de violação de restrição CHECK. |
Exemplo de consulta SQL para testar vulnerabilidades:
-- Verificação de possibilidade de injeção SQL no campo de login
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';
Exemplo de consulta para testar desempenho:
-- Medição do tempo de execução de uma consulta SELECT complexa
EXPLAIN ANALYZE SELECT o.order_id, c.customer_name, p.product_name
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
JOIN order_items oi ON o.order_id = oi.order_id
JOIN products p ON oi.product_id = p.product_id
WHERE c.country = 'USA' AND o.order_date > '2023-01-01';