Guia de um profissional de QA para testar bases de dados em 2026

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Apresentei uma visão geral dos testes de bases de dados para ajudar a preparar tudo o que é necessário para garantir que os seus dados podem ser verificados, obtidos, são precisos e completos, para que possam ser utilizados na execução da lógica empresarial de uma aplicação.

Os testes de bases de dados consistem em testes de caixa preta, testes de caixa branca e ACID (atomicidade, consistência, isolamento e durabilidade). Neste guia, apresentarei definições, instruções e exemplos.

O que são testes de bases de dados?

Os testes de bases de dados, ou testes de back-end, ou testes de dados, diferem dos testes da interface do utilizador por não se preocuparem de todo com a interface visual do software do sistema. A sua principal preocupação é verificar se todos os processos internos são executados corretamente e se conseguem obter dados de forma rápida, precisa e segura.

Os testes de bases de dados testam o esquema, as tabelas e os acionadores da base de dados. Submetem a base de dados a esforço e podem incluir a execução de consultas complexas para testar exaustivamente as suas capacidades e capacidade de resposta. Também testam sistemas de gestão de bases de dados (DBMS), como o Oracle e o SQL Server.

Leitura relacionada: OS RESULTADOS POSITIVOS DOS TESTES NEGATIVOS

O que é um esquema de base de dados?

Um esquema de base de dados é uma estrutura lógica que define a organização e a relação dos dados numa base de dados. Descreve o modelo de como os dados são armazenados, acedidos e manipulados num DBMS. O esquema descreve os tipos de dados, as restrições e as relações entre as entidades da base de dados, como tabelas, vistas, índices e acionadores.

O esquema da base de dados é fundamental para garantir a integridade e a consistência dos dados numa base de dados. Fornece aos programadores e administradores de bases de dados uma estrutura para organizar e estruturar os dados de forma significativa. Também ajuda a garantir que os dados armazenados na base de dados cumprem requisitos específicos, como validação de dados, segurança dos dados e acessibilidade dos dados. As organizações podem utilizar um esquema de base de dados para garantir a organização e a otimização das suas bases de dados, permitindo uma gestão eficiente dos dados, melhorando as operações comerciais e a tomada de decisões.

Porque são importantes os testes de bases de dados?

Os testes de bases de dados são importantes porque

  1.  Alguns erros só podem ser encontrados através de testes de bases de dados
  2.  Determinadas condições de utilização só podem ser testadas na base de dados
  3.  Os testes de bases de dados melhoram a estabilidade e a segurança 
  4.  Os testes de bases de dados garantem a consistência

Exemplo de uma função de base de dados

Imagine que abre uma aplicação de banca online no seu telemóvel (ou abra efetivamente a aplicação de banca online no seu telemóvel). Agora, transfira uma pequena quantia da sua conta à ordem para a sua conta poupança.  Quando terminar, pense em todas as coisas que tiveram de acontecer nos bastidores durante esses poucos segundos.

  1. A aplicação enviou as informações da transação para a base de dados.
  2. Nenhuma das suas informações (ou seja, DINHEIRO) se perdeu pelo caminho.
  3. A aplicação não bloqueou nem falhou ao concluir a transferência.
  4. A transação ocorreu de forma segura.
  5. O seu dinheiro está agora confortavelmente na sua conta poupança (parabéns!)

Todas essas funções acontecem dentro da base de dados. O processo de teste da base de dados é importante porque, se um sistema de bases de dados falhar de forma crítica, o sistema fica completamente parado. Nenhuma informação pode ser enviada, obtida, transferida ou protegida. A aplicação pode parecer funcionar à superfície (é possível navegar pelas janelas e preparar transações), mas nada com impacto irá acontecer.

Por fora, tudo parece estar bem, mas internamente é um desastre.

Imagem de isto está bem

Os testes de bases de dados garantem que não ocorre nenhum desastre. Sem incêndios, sem paragens e sem dinheiro desaparecido. É do interesse de todos que sejam realizados testes de bases de dados. Por isso, escrevi um guia abrangente para o ajudar a sentir-se confiante de que, quando terminar, tudo terá sido testado exaustivamente.

Princípios dos testes de bases de dados

A palavra «princípios» pode parecer mais relacionada com o porquê do que com o como. Acredite em mim, trata-se de dois conceitos importantes e práticos. 

  1. Propriedades ACID
    • Atomicidade
    • Consistência
    • Isolamento
    • Durabilidade
  2. Integridade dos dados

O que são as propriedades ACID?

Esta é a versão mais segura de ácido que alguma vez irá utilizar. Não são necessárias luvas; as propriedades ACID representam Atomicidade, Consistência, Isolamento e Durabilidade. Todas as transações numa base de dados devem cumprir estes princípios. 

Uma transação é um grupo de tarefas. Mesmo uma simples transação do mundo real, como a transferência bancária que mencionei anteriormente, envolverá várias tarefas de nível inferior. As propriedades ACID existem para confirmar que cada transação é concluída de forma precisa, completa e íntegra.

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

Propriedades ACID

  • Atomicidade estabelece que cada transação deve ser tratada como uma unidade atómica. Em termos não moleculares, significa que cada transação deve ser concluída na íntegra ou falha. Tratar cada transação desta forma evita a situação complicada de uma transferência de dinheiro ficar concluída apenas parcialmente. Isso parece stressante, não parece?  Com a atomicidade, se a transação estiver concluída a meio quando algo corre mal, toda a transação falha. O dinheiro é devolvido. Sem stress. 
  • Consistência exige que a base de dados permaneça consistente após uma transação. Nenhuma transação pode afetar negativamente quaisquer outros dados na base de dados. Depositar dinheiro na sua conta bancária não irá levantar dinheiro da conta de outra pessoa. 
  • Isolamento impede o cruzamento de fluxos. Garante que, no caso de ocorrerem várias transações ao mesmo tempo, cada transação seja tratada como se fosse a única a ocorrer na base de dados. As informações de ninguém são misturadas com as informações de outras pessoas.  
  • Durabilidade exige que a base de dados seja suficientemente durável para manter todas as transações mais recentes, mesmo que ocorra uma falha do sistema. Mais uma vez, existem razões práticas para exigir tal durabilidade de uma base de dados. Se fizer uma transferência de dinheiro e a base de dados ficar indisponível dez minutos depois, como saberia que tem de efetuar novamente a transferência? Ter requisitos tão rigorosos evita confusões por parte dos utilizadores finais.  

Integridade dos dados

A integridade dos dados é a prática de verificar se todos os dados mais recentes estão atualizados em todo o lado. Existem quatro partes individuais que se combinam para confirmar que os dados têm integridade. Para garantir um elevado nível de integridade dos dados, um testador de QA tem de confirmar que:

  1. Os dados são verificáveis
  2. Os dados podem ser obtidos
  3. Os dados são precisos
  4. Os dados estão completos

Se os dados não cumprirem esses quatro requisitos, é provável que não cumpram o padrão de integridade dos dados. As ferramentas de gestão de dados podem ajudar neste processo, mas, em última análise, cabe-lhe a si garantir a mais elevada qualidade dos dados.

Como Huw Price salientou no episódio do The QA Lead Podcast intitulado A qualidade dos seus dados é péssima, garantir que os seus sistemas funcionam com dados de elevada qualidade e seguros está a ganhar importância à medida que cada vez mais empresas constroem os seus próprios bancos de dados.

Linguagem de manipulação de bases de dados

Uma linguagem de manipulação de bases de dados (DML) é uma linguagem de programação utilizada para manipular dados num sistema de gestão de bases de dados. A DML é utilizada principalmente para executar tarefas como inserir, atualizar, eliminar e obter dados de uma base de dados. Essencialmente, a DML disponibiliza um conjunto de comandos e funções que permitem aos utilizadores interagir com os dados de uma base de dados e modificar ou obter esses dados de acordo com critérios específicos. A DML é um componente essencial de qualquer sistema de bases de dados, permitindo aos utilizadores executar operações sobre os dados sem compreender a estrutura ou a tecnologia subjacente da base de dados.

Os comandos DML são normalmente utilizados em conjunto com uma linguagem de definição de bases de dados (DDL), que é utilizada para criar e modificar objetos de bases de dados, como tabelas, vistas e índices. A DDL e a DML formam os componentes fundamentais de um sistema de bases de dados, permitindo aos utilizadores criar, modificar e manipular dados de forma segura, eficiente e fiável. A utilização de DML na gestão de bases de dados permite às organizações armazenar, gerir e analisar grandes quantidades de dados, tornando-a uma ferramenta crítica para as empresas no mundo atual orientado por dados.

Tipos de testes de bases de dados

Agora que abordámos dois dos princípios fundamentais dos testes de bases de dados, podemos avançar para diferentes tipos de testes. É provável que já tenha ouvido falar de algumas destas abordagens. Lembre-se de que eu disse que, se compreendesse os testes de QA, perceberia os testes de bases de dados sem problemas. Aqui explicarei como cada um destes conceitos se aplica aos testes de bases de dados. 

Existem três tipos de testes de bases de dados:

  1. Estruturais
  2. Funcionais
  3. Não funcionais

Dentro desses três tipos de testes de bases de dados existem subtipos. Não se preocupe, também os explicarei. 

Testes estruturais

Os testes estruturais validam elementos do repositório de dados utilizados para o armazenamento de dados. Estes elementos estão ocultos para os utilizadores finais e funcionam inteiramente em segundo plano. Os testadores de bases de dados realizam estes testes escrevendo consultas SQL. 

Testes de mapeamento de dados

O mapeamento de estruturas de dados é o processo de estabelecer ligações entre dois modelos de dados diferentes. Também conhecido como teste de esquema, um teste de mapeamento de dados validará a interface e o sistema de retaguarda. Garante que os dois comunicam corretamente entre si.

Por exemplo, se estiver a preencher um formulário de registo num website, um mapeamento de dados adequado recolhe os dados do formulário web e transfere-os para a base de dados. O seu nome, endereço de e-mail e palavra-passe serão armazenados no local correto. Os testes de mapeamento de dados confirmam que esse processo está a funcionar. 

Existem várias ferramentas de mapeamento de dados com as quais um profissional de testes de controlo de qualidade irá trabalhar. Uma breve lista de ferramentas de mapeamento de dados inclui:

Testes de tabelas da base de dados

Os testes de tabelas realizam várias verificações à estrutura de mapeamento de dados. Verificam se os campos da interface e do lado do servidor são compatíveis entre si. Validam o comprimento dos campos da base de dados. E confirmam se existem tabelas ou colunas da base de dados sem mapeamento que seja necessário corrigir. 

Validações do servidor da base de dados

As validações do servidor garantem que a configuração do servidor cumpre os requisitos. Também asseguram que qualquer pessoa que tente aceder a determinadas áreas do servidor da base de dados tem a autorização adequada. Este é um passo importante para manter a base de dados segura e protegida para os seus utilizadores. Por fim, a validação do servidor garante que este consegue processar o número máximo de transações em simultâneo. 

Por exemplo, uma validação do servidor de uma aplicação bancária verificaria se o servidor conseguiria processar a transação financeira de um determinado número de utilizadores e se todos os utilizadores poderiam aceder apenas às suas próprias informações. 

Testes funcionais

Vamos tornar os testes funcionais divertidos. A sério, vamos mesmo. Os testes funcionais consistem em verificar se a base de dados cumpre as especificações do cliente e se as ações do utilizador final são coerentes com esses requisitos. Isto significa que é necessário fingir muitas vezes que se é o utilizador final. Não parece divertido? Eu acho que parece divertido. 

Testes de caixa preta

Os testes de caixa preta são uma estratégia de testes de software em que o desenho do sistema de software a testar é desconhecido para o profissional de testes. Sem um conhecimento aprofundado do desenho do software, o profissional de testes abordará o software com expectativas semelhantes às do utilizador final. 

Os testes de caixa preta são realizados durante os testes da base de dados porque detetam erros em percursos comuns que o utilizador final provavelmente irá encontrar. É o teste definitivo realizado como utilizador final. 

Abordámos extensivamente os testes de caixa preta no nosso guia sobre os 9 tipos de testes de software que todos os analistas de controlo de qualidade devem conhecer. 

Testes de caixa branca

Os testes de caixa branca são o oposto dos testes de caixa preta. Nos testes de caixa branca, o profissional de controlo de qualidade compreende totalmente a estrutura interna e o desenho do software que está a ser testado. 

Aborda o teste como um inspetor. Os testes de caixa branca são por vezes designados por testes de caixa transparente, porque o profissional de testes observa as interações entre as unidades enquanto testa o software. Ao contrário dos testes de caixa preta, um profissional de testes de caixa branca não está tão preocupado com a experiência do utilizador. 

Testes unitários

Os testes unitários são uma técnica de testes de software que consiste em testar unidades ou componentes individuais de uma aplicação, isoladamente do resto do sistema. Este tipo de teste testa objetos individuais da base de dados, como tabelas, vistas, procedimentos armazenados e funções. Ao testarem estes objetos de forma isolada, os programadores podem garantir que cada objeto funciona conforme previsto.

Os testes unitários de bases de dados envolvem normalmente a criação de testes automatizados que executam comandos SQL específicos num objeto ou módulo da base de dados e verificam se são devolvidos os resultados esperados. Por exemplo, um teste unitário para um procedimento armazenado pode envolver a passagem de um conjunto de parâmetros de entrada ao procedimento e a verificação de que o resultado está correto. Ao utilizarem testes unitários desta forma, os programadores podem garantir que cada objeto da base de dados funciona conforme esperado e que quaisquer alterações ao esquema da base de dados ou ao código da aplicação não introduzem consequências ou erros indesejados.

Testes não funcionais

Os testes não funcionais não se preocupam minimamente com o utilizador final. Não que o utilizador final não seja importante. Simplesmente há outros aspetos com que se preocupar. Os testes não funcionais verificam o desempenho da base de dados sob carga e pressão, e procuram pontos onde seja possível otimizar o desempenho.

Testes de carga 

Os testes de carga de bases de dados são um tipo de teste de desempenho de bases de dados que verifica se a carga dos utilizadores não terá um impacto dramaticamente negativo no desempenho da base de dados. O profissional de testes de QA executará uma série de consultas de carga e repeti-las-á vezes sem conta para simular uma base de utilizadores ativa. 

Testes de esforço

Os testes de esforço são testes de carga, mas mais intensos. Não pretendem verificar se a base de dados fica mais lenta; pretendem descobrir em que ponto pode deixar de funcionar. Isto é muito mais destrutivo. Portanto, é divertido. 

Alguma vez aguardou ansiosamente pelo lançamento de um novo videojogo ou telemóvel? Se sim, talvez esteja familiarizado com a situação de carregar o site ou abrir a aplicação para efetuar a compra e deparar-se com ecrãs de carregamento invulgarmente longos, códigos de erro inesperados e falhas no processamento das suas informações. Isso é uma base de dados sob esforço.

É diferente dos testes de carga porque sujeita a base de dados a um volume de tráfego elevado, súbito e inesperado. 

More Articles

Testes automatizados de bases de dados

Os testes automatizados de bases de dados tornaram-se mais populares nos últimos anos. Fazer testes manuais à base de dados demoraria demasiado tempo, exigiria demasiadas pessoas e teria simplesmente um custo demasiado elevado.

Existem muitas formas de realizar testes de automatização. Eis uma lista de algumas ferramentas de gestão de bases de dados que disponibilizam funcionalidades de teste.

Lista de ferramentas de gestão de bases de dados

Testar uma base de dados com uma API

Uma API (Interface de Programação de Aplicações) é um conjunto de protocolos e normas que permite a diferentes aplicações de software comunicarem entre si. Nos testes de bases de dados, uma API pode ligar-se a uma base de dados e realizar várias operações, como inserir, atualizar, eliminar e obter dados.

A relação entre uma API e os testes de bases de dados reside no facto de as APIs poderem ser utilizadas para automatizar e simplificar o processo de teste. Ao utilizar uma API para estabelecer ligação a uma base de dados, os profissionais de testes podem automatizar tarefas como a inserção, atualização e eliminação de dados, bem como executar consultas para obter dados e validar resultados. Isto pode reduzir significativamente o tempo e o esforço necessários para os testes manuais e melhorar a exatidão e a consistência dos resultados dos testes.

Recursos adicionais

Depois de ler este artigo, deverá compreender como executar testes de bases de dados. Naturalmente, é impossível abordar absolutamente tudo num único artigo. Eis dois recursos adicionais que poderão ajudá-lo a resolver problemas específicos.

  1. Como realizar testes de regressão a uma base de dados relacional
  2. Como realizar um teste de desempenho numa instância do SQL Server

O que acha?

Ser responsável pelos testes de uma base de dados pode parecer uma grande responsabilidade. Tenho confiança em que conseguirá lidar com a situação. Sente-se mais confiante na sua abordagem aos testes de bases de dados? Diga-me nos comentários!

Jason Boog
Over his 15-year career, Jason Boog has worked as a QA tester, QA analyst, and Senior QA Analyst on video games, commercial sites, and interactive web applications. He spent more than a decade building out the QA team and process as Director of Quality & Client Support at a full-service digital agency.
Follow the author: