Teste de banco de dados - perguntas da entrevista

O teste de banco de dados inclui a execução de validade de dados, teste de integridade de dados, verificação de desempenho relacionado ao banco de dados e teste de procedimentos, gatilhos e funções no banco de dados.

Existem vários motivos pelos quais o teste de banco de dados é executado. É necessário realizar a verificação da integridade, validação e consistência dos dados no banco de dados, pois o sistema backend é responsável por armazenar os dados e é acessado para fins múltiplos.

Algumas das razões comuns pelas quais é necessário realizar testes de banco de dados são as seguintes -

  • Para facilitar a complexidade das chamadas para o back-end do banco de dados, os desenvolvedores aumentam o uso de View e Stored Procedimentos.

  • Estes Stored procedimentos e Viewscontêm tarefas críticas, como inserir detalhes do cliente (nome, informações de contato, etc.) e dados de vendas. Essas tarefas precisam ser testadas em vários níveis.

  • O teste de caixa preta realizado no front-end é importante, mas torna difícil isolar o problema. O teste no sistema de back-end aumenta a robustez dos dados. É por isso que o teste do banco de dados é executado no sistema back end.

  • Em um banco de dados, os dados vêm de vários aplicativos e existe a possibilidade de que dados prejudiciais ou incorretos sejam armazenados no banco de dados. Portanto, é necessário verificar os componentes do banco de dados regularmente. Além disso, a integridade e a consistência dos dados devem ser verificadas regularmente.

As etapas que você precisa seguir ao realizar o teste de banco de dados são as seguintes -

  • Os dados que estão no banco de dados devem ser verificados.
  • Verifique se as restrições são mantidas.
  • O desempenho dos procedimentos e a execução dos gatilhos devem ser verificados.
  • Reverter e confirmar a transação devem ser verificados.

Com base na função e estrutura de um banco de dados, o teste de banco de dados pode ser categorizado nas seguintes categorias -

  • Structural Database testing - Lida com teste de tabela e coluna, teste de esquema, procedimentos armazenados e teste de visualizações, verificação de gatilhos, etc.

  • Functional Testing- Envolve a verificação da funcionalidade do banco de dados do ponto de vista do usuário. Os tipos mais comuns de teste funcional são os testes de caixa branca e caixa preta.

  • Nonfunctional Testing - Envolve teste de carga, teste de risco no banco de dados, teste de estresse, requisitos mínimos do sistema e lida com o desempenho do banco de dados.

As ferramentas mais comuns usadas para realizar testes de procedimentos armazenados são LINQ, ferramenta de teste SP, etc.

Joins são usados ​​para conectar duas ou mais tabelas de alguma maneira lógica. Os tipos comuns de junções incluem: junção interna, não equijoin, junção externa, junção automática e junção cruzada.

Você pode juntar uma única mesa a ela mesma. Nesse caso, você está usando a mesma tabela duas vezes.

Step 1 - Conecte-se ao banco de dados

db_connect(query1 DRIVER {drivername};SERVER server_name;UID uidname;
   PWD password;DBQ database_name );

Step 2 - Execute a consulta do banco de dados -

db_excecute_query (write the required query that is to execute); Specify the appropriate condition

Step 3 - Desconecte a conexão do banco de dados usando

db_disconnect(query);

Usando os pontos de verificação do banco de dados de saída, as opções de consultas manuais SQL devem ser selecionadas. Aqui, a consulta selecionada pode ser escrita.

Primeiro, verifique o requisito do procedimento armazenado. A próxima etapa é verificar se os índices, junções, exclusões e atualizações estão corretos em comparação com as tabelas mencionadas no procedimento armazenado.

Em seguida, execute as seguintes tarefas -

  • Valide o nome do procedimento de chamada, os parâmetros de chamada e as respostas esperadas para diferentes conjuntos de parâmetros de entrada.

  • Execute o procedimento com TOAD ou MySQL ou Query Analyzer.

  • Reexecute os procedimentos disponíveis enviando parâmetros diferentes e compare os resultados com os valores esperados.

  • Concluindo o processo, automatize os testes com o WinRunner.

O testador deve chamar o procedimento armazenado no banco de dados usando o comando EXEC. Se algum parâmetro for necessário, ele deve ser passado. Diferentes valores de parâmetros devem ser passados ​​para confirmar se o procedimento armazenado é executado ou não. Ao chamar este comando, ele deve verificar e verificar a natureza e o comportamento do banco de dados.

Example - Se o procedimento armazenado for escrito para preencher alguma tabela, os valores da tabela devem ser verificados.

Temos três tipos de instruções SQL -

  • Linguagem de manipulação de dados (DML)
  • Linguagem de definição de dados (DDL)
  • Linguagem de controle de dados (DCL)

As instruções DDL são usadas para definir a estrutura ou esquema do banco de dados. Alguns exemplos -

  • CREATE - para criar objetos no banco de dados

  • ALTER - altera a estrutura do banco de dados

  • DROP - excluir objetos do banco de dados

Os operadores são usados ​​para especificar condições em uma instrução SQL e servir como conjunções para várias condições em uma instrução.

  • Operadores aritméticos
  • Operadores de comparação / relacionais
  • Operadores lógicos
  • Operadores de conjunto
  • Operadores costumavam negar condições

Union é usado para combinar os resultados de duas ou mais instruções Select. No entanto, isso eliminará as linhas duplicadas. Union é um operador de conjunto.

Unioné usado para combinar os resultados de duas ou mais instruções Select. No entanto, irá eliminar linhas duplicadas

Union All operação é semelhante a União, mas também mostra as linhas duplicadas.

Os gatilhos são usados ​​para manter a integridade do banco de dados. Para verificar se o Trigger foi disparado ou não, você pode verificar os logs de auditoria.

Os gatilhos não podem ser invocados sob demanda. Eles são chamados quando uma ação associada (inserir, excluir e atualizar) ocorre na tabela na qual estão definidos. Triggers são usados ​​para aplicar regras de negócio, auditoria e também para verificações de integridade referencial.

Primeiro, obtenha o requisito funcional. Em seguida, entenda a estrutura da tabela, Joins, Cursores e Triggers, Procedimento armazenado usado e outros parâmetros. Em seguida, você pode escrever um caso de teste com diferentes valores como entrada para esses objetos.

O teste de banco de dados envolve o teste de componentes de back-end que não são visíveis aos usuários. Inclui componentes de banco de dados e sistemas DBMS, como MySQL e Oracle.

O teste de front-end envolve a verificação das funcionalidades de um aplicativo e seus componentes como formulários, gráficos, menus, relatórios, etc. Esses componentes são criados usando ferramentas de desenvolvimento de front-end como VB.net, C #, Delphi, etc.

O processo para realizar o teste do banco de dados é semelhante ao teste de outros aplicativos. O teste de banco de dados pode ser descrito com os seguintes processos-chave -

  • Configurando o ambiente
  • Faça um teste
  • Verifique o resultado do teste
  • Validando de acordo com os resultados esperados
  • Relate as descobertas às respectivas partes interessadas

Várias instruções SQL são usadas para desenvolver os casos de teste. A instrução SQL mais comum usada para realizar testes de banco de dados é a instrução select. Além disso, várias instruções DDL, DML e DCL também podem ser usadas.

Example - Criar, inserir, selecionar, atualizar, etc.

Uma visão é uma tabela que não existe por si mesma, mas é derivada de uma ou mais tabelas base. Em outras palavras, não há nenhum arquivo armazenado que represente diretamente a visão, em vez de uma definição de visão armazenada no dicionário de dados.

O crescimento e a reestruturação das tabelas base não se refletem nas visualizações. Portanto, a visualização pode isolar os usuários das mudanças no banco de dados. Conseqüentemente, é responsável pela independência lógica dos dados.

Ele especifica as visualizações do usuário e seus mapeamentos para o esquema conceitual.

É um processo de decompor uma tabela em várias tabelas sem perder nenhuma informação. A normalização é feita para atingir os seguintes objetivos -

  • Para minimizar a redundância.
  • Para minimizar a inserção, exclusão e atualização de anomalias.

A indexação é uma técnica para determinar a rapidez com que dados específicos podem ser encontrados. Ele é usado para otimização de desempenho de consulta. A indexação pode ser dos seguintes tipos -

  • Indexação de estilo de pesquisa binária
  • Indexação B-Tree
  • Indexação de lista invertida
  • Tabela residente na memória
  • Indexação de tabelas

SQL é uma linguagem de consulta estruturada projetada especificamente para operações de acesso a dados em estruturas de banco de dados relacionais normalizadas.

A principal diferença entre SQL e outras linguagens de programação convencionais é que as instruções SQL especificam quais operações de dados devem ser realizadas, em vez de como fazê-las.

Os procedimentos armazenados são usados ​​para realizar uma operação definida pelo usuário. Um procedimento armazenado pode ter um conjunto de instruções SQL compostas. Um procedimento armazenado executa os comandos SQL e retorna o resultado ao cliente.

PL / SQL usa cursores para todas as instruções de acesso a informações de banco de dados. A linguagem suporta o uso de dois tipos de cursores - implícitos e explícitos.

Cold Backup- Cold back é conhecido como fazer backup de arquivos de banco de dados, logs de redo e arquivo de controle quando a instância é encerrada. Esta é uma cópia de arquivo, geralmente do disco diretamente para a fita. Você deve desligar a instância para garantir uma cópia consistente.

Se um backup frio for executado, a única opção disponível no caso de perda de arquivos de dados é restaurar todos os arquivos do backup mais recente. Todas as alterações realizadas após o último backup são perdidas.

Hot Backup- Alguns bancos de dados não podem ser encerrados ao fazer uma cópia de backup dos arquivos, portanto, o backup frio não é uma opção disponível. Para esses tipos de banco de dados, usamos backup dinâmico.

A subconsulta SQL é um meio de consultar duas ou mais tabelas ao mesmo tempo. A própria subconsulta é uma instrução SQL SELECT contida na cláusula WHERE de outra instrução SQL SELECT e separada por ser colocada entre parênteses. Algumas subconsultas têm estruturas de junção SQL equivalentes, mas subconsultas correlacionadas não podem ser duplicadas por uma junção

Nesse caso, você precisa testar os seguintes aspectos -

  • Dependências multivaloradas
  • Dependências funcionais
  • Chaves do candidato
  • Chaves primárias
  • Chaves estrangeiras

Você pode ir ao banco de dados e executar uma consulta SQL relevante. No WinRunner, você pode usar a função de ponto de verificação do banco de dados. Se o aplicativo fornecer a função de visualização, você poderá verificar a mesma no front-end.

O teste baseado em dados é definido como um processo de teste de automação onde o aplicativo será testado com vários dados de teste. É simples e fácil do que repetir o teste, onde o testador apenas senta na frente do sistema e insere manualmente novos valores de entrada na interface de front-end.

Depois de executar os casos de teste e encontrar os defeitos que já foram detectados e corrigidos. A reexecução do mesmo teste com valores de entrada diferentes para confirmar que o defeito original foi removido com sucesso é chamada de Re-teste.

O reteste também é chamado de teste orientado a dados, com uma pequena diferença -

  • Retesting - É um processo de teste manual, enquanto o teste de aplicativo é feito com um novo conjunto de dados inteiro.

  • Data-driven Testing- É um processo de teste de automação onde o aplicativo será testado com vários dados de teste. É simples e fácil do que repetir o teste, onde o testador apenas senta na frente do sistema e insere manualmente novos valores de entrada na interface de front-end.

Existem quatro tipos de teste orientado a dados -

  • Envio de dados de teste dinâmico através do teclado
  • Testes orientados a dados por meio de arquivos simples .txt, .doc
  • Testes orientados a dados por meio de objetos front-end
  • Testes baseados em dados via planilha do excel

O teste de desempenho é uma técnica de teste de software para determinar o desempenho de um sistema em termos de velocidade, sensibilidade e estabilidade sob uma carga de trabalho pesada.

Os seguintes pontos-chave devem ser considerados ao realizar o teste de recuperação de banco de dados -

  • Período de tempo em que ocorrem mudanças ou modificações no sistema de banco de dados.

  • O período em que você deseja que seu plano de recuperação seja conduzido.

  • A sensibilidade dos dados no sistema de banco de dados. Quanto mais críticos forem os dados, mais regularmente você precisará testar o software.

As seguintes ferramentas são usadas para gerar dados de teste -

  • Data Factory
  • DTM Data Generator
  • Turbo Data

Existem dois tipos de backup que podem ser usados ​​-

  • Physical Backups- backup físico inclui tomar de volta usando 3 rd ferramentas de backup partido como voltar net Veritas, IBM Tivoli Manager ou backups User Manager usando utilitários do sistema operacional.

  • Logical Backups - O backup lógico do banco de dados inclui o backup de objetos lógicos como tabelas, índices, procedimentos, etc.

Uma ferramenta comum para fazer backup de dados é o Oracle Recovery Manager (RMAN), que é um utilitário Oracle para fazer backup de banco de dados.

As seguintes ações são realizadas no teste de recuperação de banco de dados -

  • Teste do sistema de banco de dados
  • Teste dos arquivos SQL
  • Teste de arquivos parciais
  • Teste de backup de dados
  • Teste da ferramenta de backup
  • Testando backups de registro

O teste de segurança do banco de dados é executado para encontrar brechas nos mecanismos de segurança e também para encontrar vulnerabilidades ou fraquezas do sistema de banco de dados.

O teste de segurança do banco de dados é realizado para verificar os seguintes aspectos -

  • Authentication
  • Authorization
  • Confidentiality
  • Availability
  • Integrity
  • Resilience

A ameaça de injeção de SQL é o tipo mais comum de ataque em um sistema de banco de dados, onde instruções SQL maliciosas são inseridas no sistema de banco de dados e executadas para obter informações críticas do sistema de banco de dados. Esse ataque tira proveito de lacunas na implementação de aplicativos do usuário. Para evitar isso, os campos de entrada do usuário devem ser manuseados com cuidado.

As seguintes ferramentas podem ser usadas para realizar o teste de segurança do banco de dados: Zed Attack Proxy, Paros, Social Engineer Toolkit, Skipfish, Vega, Wapiti e Web Scarab.

Os desafios comuns que enfrentamos durante a realização de testes de banco de dados são os seguintes -

  • O escopo do teste é muito grande
  • Banco de dados de teste reduzido
  • Mudanças na estrutura do banco de dados
  • Planos de teste complexos
  • Boa compreensão de SQL