Tutorial de Teste de Banco de Dados

O que รฉ teste de banco de dados?

Teste de banco de dados รฉ um tipo de teste de software que verifica o esquema, tabelas, gatilhos, etc. do banco de dados em teste. Ele tambรฉm verifica a integridade e consistรชncia dos dados. Pode envolver a criaรงรฃo de consultas complexas para testar a carga/estresse do banco de dados e verificar sua capacidade de resposta.

Teste de banco de dados

Por que o teste de banco de dados รฉ importante?

O teste de banco de dados รฉ importante in teste de software porque garante que os valores dos dados e as informaรงรตes recebidas e armazenadas no banco de dados sejam vรกlidas ou nรฃo. O teste de banco de dados ajuda a evitar perda de dados, salva dados de transaรงรตes abortadas e evita acesso nรฃo autorizado ร s informaรงรตes. O banco de dados รฉ importante para qualquer aplicativo de software, portanto, os testadores devem ter um bom conhecimento de SQL para testes de banco de dados.

A GUI geralmente recebe maior รชnfase pelos membros da equipe de teste e desenvolvimento, uma vez que a Interface Grรกfica do Usuรกrio รฉ a parte mais visรญvel do aplicativo. Porรฉm, o que tambรฉm รฉ importante รฉ validar as informaรงรตes que sรฃo o coraรงรฃo da aplicaรงรฃo, tambรฉm conhecido como DATABASE.

Vamos considerar uma aplicaรงรฃo bancรกria em que um usuรกrio faz transaรงรตes. Agora, do ponto de vista de teste de banco de dados ou teste de banco de dados a seguir, as coisas sรฃo importantes:

  1. O aplicativo armazena as informaรงรตes da transaรงรฃo no banco de dados do aplicativo e as exibe corretamente ao usuรกrio.
  2. Nenhuma informaรงรฃo รฉ perdida no processo.
  3. Nenhuma informaรงรฃo de operaรงรฃo parcialmente executada ou abortada รฉ salva pelo aplicativo.
  4. Nenhum indivรญduo nรฃo autorizado tem permissรฃo para acessar as informaรงรตes do usuรกrio.

Para garantir todos esses objetivos acima, precisamos usar validaรงรฃo ou teste de dados.

Diferenรงas entre testes de interface de usuรกrio e testes de dados

Teste de interface do usuรกrio versus teste de dados

Teste de interface do usuรกrio Banco de dados ou teste de dados
Este tipo de teste tambรฉm รฉ conhecido como teste de interface grรกfica do usuรกrio ou teste de front-end. Este tipo de teste tambรฉm รฉ conhecido como teste de back-end ou teste de dados.
Este tipo de teste trata principalmente de todos os itens testรกveis โ€‹โ€‹โ€‹โ€‹que estรฃo abertos ao usuรกrio para visualizaรงรฃo e interaรงรฃo, como Formulรกrios, Apresentaรงรฃo, Grรกficos, Menus e Relatรณrios, etc. (criados atravรฉs de VB, VB.net, VC++, Delphi โ€“ Ferramentas front-end) Este tipo de teste trata principalmente de todos os itens testรกveis โ€‹โ€‹que geralmente ficam ocultos do usuรกrio para visualizaรงรฃo. Isso inclui processos internos e armazenamento como Assembly, SGBD como Oracle, SQL Server, MySQL, etc.

Este tipo de teste inclui a validaรงรฃo do

  • caixas de texto
  • selecione menus suspensos
  • calendรกrios e botรตes
  • Navegaรงรฃo de pรกgina
  • exibiรงรฃo de imagens
  • Aparรชncia da aplicaรงรฃo geral

Este tipo de teste envolve a validaรงรฃo:

  • o esquema
  • tabelas de banco de dados
  • colunas
  • chaves e รญndices
  • gatilhos de procedimentos armazenados
  • validaรงรตes de servidor de banco de dados
  • validando duplicaรงรฃo de dados
O testador deve ter profundo conhecimento sobre os requisitos de negรณcios, bem como sobre o uso das ferramentas de desenvolvimento e de estruturas e ferramentas de automaรงรฃo. Para poder realizar testes de back-end, o testador deve ter uma sรณlida experiรชncia em servidor de banco de dados e conceitos de linguagem de consulta estruturada.

Tipos de teste de banco de dados

Tipos de teste de banco de dados

Os 3 tipos de teste de banco de dados sรฃo

  1. Testes Estruturais
  2. Teste funcional
  3. Teste nรฃo funcional

Neste tutorial de teste de banco de dados, examinaremos cada tipo e seus subtipos, um por um.

Teste de banco de dados estrutural

Teste de banco de dados estrutural รฉ uma tรฉcnica de teste de banco de dados que valida todos os elementos dentro do repositรณrio de dados que sรฃo usados โ€‹โ€‹principalmente para armazenamento de dados e que nรฃo podem ser manipulados diretamente pelos usuรกrios finais. A validaรงรฃo de servidores de banco de dados tambรฉm รฉ uma consideraรงรฃo importante nos testes estruturais de banco de dados. A conclusรฃo bem-sucedida deste teste requer domรญnio em consultas SQL.

O que รฉ teste de esquema?

Teste de esquema no teste de banco de dados valida vรกrios formatos de esquema associados ao banco de dados e verifica se os formatos de mapeamento de tabelas/visualizaรงรตes/colunas sรฃo compatรญveis com os formatos de mapeamento da interface do usuรกrio. O principal objetivo do teste de esquema รฉ garantir que o mapeamento de esquema entre front-end e back-end seja semelhante. Portanto, tambรฉm รฉ conhecido como teste de mapeamento.

Vamos discutir os pontos de verificaรงรฃo mais importantes para testes de esquema.

  1. Validaรงรฃo dos diversos formatos de esquema associados ร s bases de dados. Muitas vezes o formato de mapeamento da tabela pode nรฃo ser compatรญvel com o formato de mapeamento presente no nรญvel da interface do usuรกrio da aplicaรงรฃo.
  2. Hรก necessidade de verificaรงรฃo no caso de tabelas/visualizaรงรตes/colunas nรฃo mapeadas.
  3. Tambรฉm รฉ necessรกrio verificar se os bancos de dados heterogรชneos em um ambiente sรฃo consistentes com o mapeamento geral da aplicaรงรฃo.

Vejamos tambรฉm algumas das ferramentas interessantes de teste de banco de dados para validar esquemas de banco de dados.

  • DBUnit integrado ao Ant รฉ muito adequado para testes de mapeamento.
  • O SQL Server permite que os testadores possam verificar e consultar o esquema do banco de dados escrevendo consultas simples e nรฃo por meio de cรณdigo.

Por exemplo, se os desenvolvedores quiserem alterar a estrutura de uma tabela ou excluรญ-la, o testador deverรก garantir que todos os procedimentos armazenados e visualizaรงรตes que usam essa tabela sejam compatรญveis com a alteraรงรฃo especรญfica. Outro exemplo poderia ser que, se os testadores quiserem verificar alteraรงรตes de esquema entre 2 bancos de dados, eles poderรฃo fazer isso usando consultas simples.

Tabela de banco de dados, teste de coluna

Vejamos vรกrias verificaรงรตes para testes de banco de dados e colunas.

  1. Se o mapeamento dos campos e colunas do banco de dados no back-end รฉ compatรญvel com os mapeamentos no front-end?
  2. Validaรงรฃo do comprimento e convenรงรฃo de nomenclatura dos campos e colunas do banco de dados conforme especificado pelos requisitos.
  3. Validaรงรฃo da presenรงa de quaisquer tabelas/colunas de banco de dados nรฃo utilizadas/nรฃo mapeadas.
  4. Validaรงรฃo da compatibilidade do
  • tipo de dados
  • comprimentos de campo

das colunas do banco de dados back-end com aquelas presentes no front-end da aplicaรงรฃo.

  1. Se os campos do banco de dados permitem que o usuรกrio forneรงa as entradas desejadas conforme exigido pelos documentos de especificaรงรฃo de requisitos de negรณcios.

Teste de chaves e รญndices

Verificaรงรตes importantes de chaves e รญndices โ€“

  1. Verifique se o necessรกrio
  • Chave primรกria
  • chave estrangeira

restriรงรตes foram criadas nas tabelas necessรกrias.

  1. Verifique se as referรชncias para chaves estrangeiras sรฃo vรกlidas.
  2. Verifique se o tipo de dados da chave primรกria e as chaves estrangeiras correspondentes sรฃo iguais nas duas tabelas.
  3. Verifique se as convenรงรตes de nomenclatura exigidas foram seguidas para todas as chaves e รญndices.
  4. Verifique o tamanho e o comprimento dos campos e รญndices obrigatรณrios.
  5. Quer seja o necessรกrio
  • Clusterรญndices ed
  • Nรฃo. Clusterรญndices ed

foram criados nas tabelas necessรกrias, conforme especificado pelos requisitos de negรณcios.

Teste de procedimentos armazenados

Testes importantes para verificar procedimentos armazenados sรฃo:

  1. Se a equipe de desenvolvimento adotou as convenรงรตes padrรฃo de codificaรงรฃo exigidas, A) e B) tratamento de exceรงรตes e erros. Para todos os procedimentos armazenados de todos os mรณdulos do aplicativo em teste.
  2. Se a equipe de desenvolvimento cobriu todas as condiรงรตes/loops aplicando os dados de entrada necessรกrios ao aplicativo em teste?
  3. Se a equipe de desenvolvimento aplicou corretamente a operaรงรฃo TRIM sempre que os dados sรฃo obtidos das tabelas necessรกrias no banco de dados?
  4. Se a execuรงรฃo manual do procedimento armazenado fornece ao usuรกrio final o resultado necessรกrio?
  5. A execuรงรฃo manual do Stored Procedure garante que os campos da tabela sejam atualizados conforme exigido pela aplicaรงรฃo em teste?
  6. Se a execuรงรฃo dos Procedimentos Armazenados permite a invocaรงรฃo implรญcita dos gatilhos necessรกrios?
  7. Validaรงรฃo da presenรงa de quaisquer procedimentos armazenados nรฃo utilizados.
  8. Validaรงรฃo para a condiรงรฃo Permitir Nulo que pode ser feita no nรญvel do banco de dados.
  9. Validaรงรฃo de que todos os Stored Procedures e Functions foram executados com sucesso quando o Banco de Dados em teste estรก em branco.
  10. Validaรงรฃo da integraรงรฃo geral dos mรณdulos de procedimento armazenado de acordo com os requisitos da aplicaรงรฃo em teste.

Algumas das ferramentas รบteis de teste de banco de dados para testar procedimentos armazenados sรฃo LINQ, ferramenta SP Test, etc.

Teste de gatilho

  1. Se as convenรงรตes de codificaรงรฃo exigidas foram seguidas durante a fase de codificaรงรฃo dos Triggers?
  2. Verifique se os gatilhos executados para as respectivas transaรงรตes DML atenderam ร s condiรงรตes exigidas.
  3. O gatilho atualiza os dados corretamente depois de executados?
  4. Validaรงรฃo da funcionalidade necessรกria de acionadores Atualizar/Inserir/Excluir no domรญnio do aplicativo em teste.

Validaรงรตes de servidor de banco de dados

Validaรงรตes de servidor de banco de dados

  1. Verifique as configuraรงรตes do servidor de banco de dados conforme especificado pelos requisitos de negรณcios.
  2. Verifique a autorizaรงรฃo do usuรกrio necessรกrio para executar apenas os nรญveis de aรงรตes exigidos pelo aplicativo.
  3. Verifique se o servidor de banco de dados รฉ capaz de atender ร s necessidades do nรบmero mรกximo permitido de transaรงรตes de usuรกrios, conforme especificado pelas especificaรงรตes de requisitos de negรณcios.

Teste de banco de dados funcional

Teste de banco de dados funcional รฉ um tipo de teste de banco de dados usado para validar os requisitos funcionais de um banco de dados da perspectiva do usuรกrio final. O principal objetivo do teste funcional de banco de dados รฉ testar se as transaรงรตes e operaรงรตes realizadas pelos usuรกrios finais relacionadas ao banco de dados funcionam conforme o esperado ou nรฃo.

A seguir estรฃo as condiรงรตes bรกsicas que precisam ser observadas para validaรงรตes de banco de dados.

  • Se o campo รฉ obrigatรณrio ao permitir valores NULL nesse campo?
  • Se o comprimento de cada campo รฉ de tamanho suficiente?
  • Se todos os campos semelhantes tรชm os mesmos nomes nas tabelas?
  • Se hรก algum campo computado presente no banco de dados?

Este processo especรญfico รฉ a validaรงรฃo dos mapeamentos de campo do ponto de vista do usuรกrio final. Neste cenรกrio especรญfico, o testador executaria uma operaรงรฃo no nรญvel do banco de dados e, em seguida, navegaria atรฉ o item relevante da interface do usuรกrio para observar e validar se as validaรงรตes de campo adequadas foram realizadas ou nรฃo.

A condiรงรฃo vice-versa em que a primeira operaรงรฃo รฉ realizada pelo testador na interface do usuรกrio e depois a mesma รฉ validada no back-end tambรฉm deve ser feita.

Verificando a integridade e consistรชncia dos dados

As seguintes verificaรงรตes sรฃo importantes

  1. Se os dados estรฃo logicamente bem organizados?
  2. Se os dados armazenados nas tabelas estรฃo corretos e de acordo com os requisitos do negรณcio?
  3. Existem dados desnecessรกrios presentes no aplicativo em teste?
  4. Se os dados foram armazenados de acordo com o requisito em relaรงรฃo aos dados que foram atualizados na interface do usuรกrio?
  5. Se as operaรงรตes TRIM foram executadas nos dados antes de inseri-los no banco de dados em teste?
  6. Se as transaรงรตes foram realizadas de acordo com as especificaรงรตes dos requisitos de negรณcios e se os resultados estรฃo corretos ou nรฃo?
  7. Se os dados foram confirmados corretamente se a transaรงรฃo foi executada com sucesso?
  8. Se os dados foram revertidos com sucesso se a transaรงรฃo nรฃo tiver sido executada com sucesso pelo usuรกrio final?
  9. Se os dados foram revertidos se a transaรงรฃo nรฃo tiver sido executada com รชxito e vรกrios bancos de dados heterogรชneos estiverem envolvidos na transaรงรฃo em questรฃo?
  10. Se todas as transaรงรตes foram executadas usando os procedimentos de design exigidos, conforme especificado pelos requisitos de negรณcios do sistema?

Login e seguranรงa do usuรกrio

As validaรงรตes das credenciais de login e seguranรงa do usuรกrio precisam levar em consideraรงรฃo o seguinte.

  1. Se o aplicativo impede o usuรกrio de prosseguir no aplicativo no caso de uma
  • nome de usuรกrio invรกlido, mas senha vรกlida
  • nome de usuรกrio vรกlido, mas senha invรกlida.
  • nome de usuรกrio invรกlido e senha invรกlida.
  1. O usuรกrio tem permissรฃo para executar apenas as operaรงรตes especรญficas especificadas pelos requisitos de negรณcios?
  2. Se os dados estรฃo protegidos contra acesso nรฃo autorizado?
  3. Existem diferentes funรงรตes de usuรกrio criadas com permissรตes diferentes?
  4. Todos os usuรกrios possuem nรญveis de acesso exigidos no banco de dados especificado, conforme exigido pelas especificaรงรตes de negรณcios?
  5. Verifique se dados confidenciais, como senhas e nรบmeros de cartรฃo de crรฉdito, estรฃo criptografados e nรฃo armazenados como texto simples no banco de dados. ร‰ uma boa prรกtica garantir que todas as contas tenham senhas complexas e difรญceis de adivinhar.

Teste nรฃo funcional

Teste nรฃo funcional no contexto de testes de banco de dados podem ser categorizados em vรกrias categorias conforme exigido pelos requisitos de negรณcios. Podem ser testes de carga, testes de estresse, Teste de Seguranรงa, Testando usabilidade e Teste de compatibilidade, e assim por diante. Os testes de carga, bem como os testes de estresse, que podem ser agrupados na gama de testes de desempenho, atendem a dois propรณsitos especรญficos quando se trata da funรงรฃo de testes nรฃo funcionais.

Quantificaรงรฃo de riscoโ€“ A quantificaรงรฃo do risco ajuda as partes interessadas a determinar os vรกrios requisitos de tempo de resposta do sistema sob os nรญveis de carga exigidos. Esta รฉ a intenรงรฃo original de qualquer garantia de qualidade tarefa. Precisamos de observar que os testes de carga nรฃo mitigam o risco diretamente, mas atravรฉs dos processos de identificaรงรฃo e quantificaรงรฃo de riscos, apresentam oportunidades corretivas e um impulso para a remediaรงรฃo que irรก mitigar o risco.

Requisito mรญnimo de equipamento do sistemaโ€“ A configuraรงรฃo mรญnima do sistema que permitirรก que o sistema atenda ร s expectativas de desempenho formalmente declaradas das partes interessadas. Para que hardware e software estranhos e o custo de propriedade associado possam ser minimizados. Este requisito especรญfico pode ser categorizado como o requisito geral de otimizaรงรฃo do negรณcio.

Teste de carga

A finalidade de qualquer teste de carga deve ser claramente compreendida e documentada. Os seguintes tipos de configuraรงรตes sรฃo obrigatรณrios para teste de carga.

  1. As transaรงรตes de usuรกrios usadas com mais frequรชncia tรชm o potencial de impactar o desempenho de todas as outras transaรงรตes se nรฃo forem eficientes.
  2. Pelo menos uma transaรงรฃo de usuรกrio sem ediรงรฃo deve ser incluรญda no conjunto de testes final, para que o desempenho de tais transaรงรตes possa ser diferenciado de outras transaรงรตes mais complexas.
  3. As transacรงรตes mais importantes que facilitam os objectivos centrais do sistema devem ser incluรญdas, uma vez que a falha sob uma carga destas transacรงรตes tem, por definiรงรฃo, o maior impacto.
  4. Pelo menos uma transaรงรฃo editรกvel deve ser incluรญda para que atuaรงรฃo dessas transaรงรตes podem ser diferenciadas de outras transaรงรตes.
  5. Tempo de resposta ideal sob um grande nรบmero de usuรกrios virtuais para todos os requisitos potenciais.
  6. Tempos efetivos para busca de vรกrios registros.

Ferramentas importantes de teste de carga sรฃo LoadRunner Profissional, vencer o corredor e JMeter.

O que รฉ teste de estresse de banco de dados?

Teste de estresse de banco de dados รฉ um mรฉtodo de teste usado para testar a tensรฃo do sistema de banco de dados com carga pesada, de modo que ele falhe em algum ponto. Isso ajuda a identificar o ponto de ruptura do sistema de banco de dados. Requer planejamento e esforรงos adequados para evitar o uso excessivo de recursos. Dados testes de estresse tambรฉm รฉ conhecido como teste torturante ou teste de fadiga.

Ferramentas importantes de teste de estresse sรฃo LoadRunner Profissional e JMeter.

Problemas mais comuns durante testes de banco de dados

A significant amount of overhead could be involved to determine the state of the database transactions

Soluรงรฃo: O planejamento e o cronograma geral do processo devem ser organizados de modo que nรฃo apareรงam problemas baseados em tempo e custos.

New test data have to be designed after cleaning up of the old test data.

Soluรงรฃo: Um plano e metodologia prรฉvios para geraรงรฃo de dados de teste devem estar disponรญveis.

An SQL generator is required to transform SQL validators in order to ensure the SQL queries are apt for handling the required database test cases.

Soluรงรฃo: A manutenรงรฃo das consultas SQL e sua atualizaรงรฃo contรญnua รฉ uma parte significativa do processo geral de teste que deve fazer parte do processo geral estratรฉgia de teste.

The above mentioned prerequisite ensure that the set-up of the database testing procedure could be costly as well as time consuming.

Soluรงรฃo: Deve haver um equilรญbrio delicado entre a qualidade e a duraรงรฃo geral do cronograma do projeto.

Mitos ou equรญvocos relacionados ao teste de banco de dados

Mitos

Database Testing requires plenty of expertise and it is a very tedious job

Realidade: Testes de banco de dados eficazes e eficientes em testes de software fornecem estabilidade funcional de longo prazo para o aplicativo geral, portanto, รฉ necessรกrio trabalhar duro para isso.

Database testing adds extra work bottleneck

Realidade: Pelo contrรกrio, os testes de banco de dados agregam mais valor ao trabalho geral, descobrindo problemas ocultos e, assim, ajudando proativamente a melhorar a aplicaรงรฃo geral.

Database testing slows down the overall development process

Realidade: Uma quantidade significativa de testes de banco de dados ajuda na melhoria geral da qualidade do aplicativo de banco de dados.

Database testing could be excessively costly

Realidade: Qualquer gasto em testes de banco de dados รฉ um investimento de longo prazo que leva ร  estabilidade e robustez do aplicativo a longo prazo. Assim, as despesas com testes de banco de dados ou SQL O teste รฉ necessรกrio.

Melhores Prรกticas

  • Todos os dados, incluindo os metadados, bem como os dados funcionais, precisam ser validados de acordo com seu mapeamento pelos documentos de especificaรงรฃo de requisitos.
  • Verificaรงรฃo do dados de teste que foi criado por/em consulta com a equipe de desenvolvimento precisa ser validado.
  • Validaรงรฃo dos dados de saรญda usando procedimentos manuais e automatizados.
  • Implantaรงรฃo de vรกrias tรฉcnicas, como a tรฉcnica de grรกficos de causa e efeito, tรฉcnica de particionamento de equivalรชncia e tรฉcnica de anรกlise de valor limite para geraรงรฃo de condiรงรตes de dados de teste necessรกrias.
  • As regras de validaรงรฃo de integridade referencial para as tabelas de banco de dados necessรกrias tambรฉm precisam ser validadas.
  • A seleรงรฃo dos valores padrรฃo da tabela para validaรงรฃo da consistรชncia do banco de dados รฉ um conceito muito importante Se os eventos de log foram adicionados com sucesso no banco de dados para todos os eventos de login necessรกrios
  • Os trabalhos agendados sรฃo executados em tempo hรกbil?
  • Faรงa backup oportuno do banco de dados.

Verifique tambรฉm Perguntas e respostas da entrevista sobre teste de banco de dados

Resuma esta postagem com: