Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

O que é?

Esta atividade tem como objetivo realizar a comparação detalhada entre os valores presentes em dois bancos de dados distintos, a partir de uma consulta SQL específica. O processo envolve a execução de uma consulta em cada uma das bases, como por exemplo, uma base de teste e uma base gabarito, e a comparação dos resultados obtidos. O intuito é verificar se os dados estão consistentes entre as bases, garantindo que as operações realizadas nos testes, como inserções, atualizações ou exclusões, produziram os resultados esperados. Essa comparação pode abranger tanto os valores individuais dos campos quanto a estrutura das tabelas, identificando eventuais discrepâncias nos dados, como diferenças em valores, ausência de registros ou erros de consistência.

Para que serve?

Esta atividade é utilizada para validar a execução dos seus Projetos de Teste. Por exemplo, imagine que você tem uma atividade que realiza o cadastro de informações em uma base de dados. Com esta atividade, você pode verCópia de 2.3.2 - Comparação de Bancoificar se o cadastro foi concluído com sucesso, confirmando que todas as informações foram inseridas corretamente. Isso inclui garantir que todos os campos da tabela relacionados ao cadastro estão preenchidos corretamente e que os valores registrados estão de acordo com o esperado. Assim, você assegura a integridade e precisão dos dados inseridos no banco.

Exemplo de Uso 

Deck of Cards
idComo cadastrar
Card
labelComo Cadastrar
Expandir
title1. Navegação para o cadastro

 1. Navegue no menu do TestFlow e clique em: Atividades Banco de DadosComparação de Banco. 

 2. Na tabela que será mostrada, clique no botão verde em destaque para iniciar o cadastro.

Image Added

Expandir
title2. Link para Definir cabeçalho (Nome e nível de acesso)

Clique aqui para obter as informações do cabeçalho

Expandir
title3. Preenchimento dos Campos
Expandir
titleVersão

Especifica a versão da atividade em questão. O objetivo de versionar uma atividade é para quando necessitamos ter mais de uma atividade em versões diferentes. Isso irá nos auxiliar a ter um histórico de atualizações e assegurar que as mudanças feitas sejam rastreáveis e reversíveis, se necessário.

Informações

Se for necessário utilizar mais de uma versão do RM no seu ambiente, é recomendado que a versão da atividade seja compatível com o sistema RM em uso. Caso contrário, pode-se optar por uma versão padrão de sua preferência.

Section
Column

Exemplo utilizando a versão do RM

Image Added

Column

Exemplo utilizando a versão padrão

Image Added

Expandir
titleDescrição

Fornece uma descrição detalhada da atividade, explicando seu propósito e operações, facilitando a compreensão e manutenção futura.

Image Added

Expandir
titleUsar Contexto ou bases específicas

Existem duas opções de como você pode utilizar a comparação de base de dados:

Expandir
titleUsar Contexto.

Ao selecionar esta opção,

Utilize esta Atividade para comparar Bancos de dados para testar a execução de seus Projetos de Teste.

...

a sentença informada na atividade será executada na base de dados restaurada no Projeto de Testes

...

ao qual

...

a Atividade

...

pertence. Nesse cenário, deve-se criar um mock para a comparação

...

, que será carregado a partir da base de dados

...

indicada na String de Conexão

...

dessa Atividade. O uso de mocks

...

acelera a execução

...

dos Projetos, pois

...

apenas uma base de dados

...

precisará ser restaurada. Caso

...

não

...

utilize o mock

...

, é importante garantir que a base Gabarito esteja sempre restaurada e acessível, ou

...

criar uma Atividade de Restauração de

...

Banco para ela.

Expandir
titleUsar bases específicas

Ao marcar esta opção, será necessário usar duas bases de dados na Atividade de Comparação. A seguir, são apresentadas duas configurações possíveis para essas bases:

  1. Base Gabarito: Esta base deve conter todos os testes já executados manualmente. É recomendável manter um nome fixo para a base, pois ele será usado na string de conexão. Para acelerar a execução dos testes e evitar erros, sugere-se o uso de um mock no lugar da base real, principalmente quando o foco for validar a lógica do sistema, sem a necessidade de consultar dados reais.

  2. Base em Teste: Esta base deve conter apenas os pré-requisitos necessários para rodar os Projetos de Teste. Durante os testes, as atividades irão preencher as tabelas do banco com informações que serão comparadas à Base Gabarito. É importante incluir uma Atividade de restauração de banco para esta base, garantindo que o ambiente esteja sempre preparado e com os dados corretamente configurados para a execução dos testes.

Expandir
titleTipo de Banco

Escolha o tipo do seu banco de dados: 

  1. SQL;
  2. Oracle
Expandir
titleNome de Identificação

Esse campo é utilizado para nomear ou criar um apelido para a base de teste ou gabarito, porém, seu preenchimento não é obrigatório.

Expandir
titleString de Conexão

Escreva os parâmetros de conexão com o seu banco de dados.

  1. No caso da opção selecionada anteriormente for Usar Contexto, escreva os parâmetros de conexão com o banco de dados que será utilizado para recuperar o mock das informações, ou seja, do banco de dados em que os valores retornados pelo script Sql serão os valores de referência para comparar com a base restaurada pelo projeto de teste.
  2. No caso da opção selecionada anteriormente for Usas bases específicas, forneça os parâmetros de conexão da sua base de dados de Teste (onde será executada a automação) e da base de dados Gabarito (base que conterá os valores de referência que servirão para realizar a comparação).

Os parâmetros mais comuns são:

  • Data Source: SERVIDOR DO BANCO
  • User ID: USUÁRIO DE CONEXÃO
  • Password: SENHA DE CONEXÃO

Estes parâmetros devem ser informados separados por ponto e vírgula.

...

Image Added

Se preferir não

...

criar

...

a string manualmente, você pode utilizar o Gerador de Strings de

...

Conexão disponível ao lado deste

...

campo.

...

Basta abri-lo, selecionar a opção +PADRÃO SQLSERVER

...

, preencher os valores

...

e salvar para criar sua conexão.

Image Added

Caso precise adicionar parâmetros adicionais à sua string de conexão, clique no botão +Adicionar Parâmetro

Além disso, também é possível excluir qualquer parâmetro adicionado anteriormente clicando no ícone Image Added

Image Added

Expandir
titleScript Sql

Utilize esse campo para escrever o script Sql que deve ser executado na sua base.

Aviso

Evite utilizar em suas sentenças a expressão SELECT * FROM TABELA, uma vez que o uso de uma sentença tão genérica pode causar problemas, como por exemplo:

  1. Campos novos forem criados e sua comparação não for atualizada.
  2. Se sua tabela contiver campos que não são fixos, ou seja, que atualizam o seu valor no momento da criação ou edição. Campos como: Data de criação, Data de Atualização, Data de Deleção.

Você não será impedido de salvar sua comparação de banco, mas será mostrado um alerta em laranja na tela, avisando-o desse risco.

Usar contexto: O script Sql fornecido será utilizado para recuperar as informações do Mock da sua base de referência e também será executado na base restaurada do projeto de teste.

Usar bases específicas: Deve ser fornecido tanto o Script que será executado na sua base de teste, quanto o script que será executado na sua base Gabarito.

Expandir
titleRecuperar e Apagar Informações de Mock

Mocks em banco de dados são simulações ou versões não reais de interações com o banco, usadas principalmente em testes automatizados de software. Quando se utiliza mocks, as interações reais com o banco de dados são substituídas por respostas programadas, que imitam o comportamento esperado do banco. Isso permite testar a lógica de negócios sem acessar o banco de dados diretamente, o que torna os testes mais rápidos, isolados e determinísticos.

O uso de mocks é útil para evitar problemas como:

  • Dependência de dados reais ou do estado do banco.
  • Dificuldades de reproduzir certos cenários.
  • Redução do tempo de execução dos testes.

Ao usar mocks, em vez de consultar um banco de dados real, os testes são configurados para retornar valores específicos previamente definidos, simulando os resultados de consultas, inserções, atualizações ou exclusões.

O mock será realizado executando a consulta informada na base de dados referente à String de Conexão definida anteriormente.

Aviso

Para recuperar o mock de uma determinada consulta em uma determinada base de dados, o Agent deve estar sendo executado como administrador na máquina que consiga comunicar com esse servidor de banco.


Image Added

Card
labelVariáveis de ambiente

As variáveis de ambiente na comparação de arquivos no TestFlow são utilizadas para configurar e personalizar o comportamento da atividade de comparação. Elas permitem definir valores específicos que podem ser usados durante a execução dos testes, assegurando que a comparação ocorra conforme o ambiente em que o teste está sendo executado.

Consulte as variáveis de ambiente permitidas nessa Atividade:

Comparação de Banco - Variáveis de Ambiente.

Saiba mais sobre Ambientes.

Card
labelExemplo prático

Imagine que você faz parte da equipe de Fiscal e precisa testar o seguinte fluxo: realizar o cadastro de uma nova moeda no sistema.

Para isso, você criou um projeto de teste que realiza a inserção desse registro na base de dados por meio de uma chamada HTTP. Esse projeto automatiza o processo de cadastro, mas é necessário verificar se o registro foi inserido corretamente na base restaurada.

Image Added

Para garantir essa verificação, é essencial criar uma atividade de comparação que valide o resultado. Nesse caso, você configurará um mock dos campos que precisam ser validados, ou seja, os valores esperados para cada campo do registro criado, como o código da moeda, o nome, a descrição e outros atributos relevantes. A atividade de comparação irá comparar esses valores mockados com os valores efetivamente inseridos na base de dados durante a execução do teste.

Image Added

Dessa forma, o projeto de teste estará completo, pois, além de executar a ação de cadastro, ele também garantirá que o registro foi inserido corretamente, validando a integridade e a consistência dos dados armazenados. Esse fluxo proporciona uma abordagem mais robusta, automatizada e confiável para testar o processo de cadastro de moeda, evitando erros manuais e garantindo a precisão da operação.

Card
labelVisualização do Log de Execução.

Se a comparação for executada com erro, será possível identificar as discrepâncias entre a base gabarito/mock e o banco de teste (onde a automação foi executada) por meio do log de execução do projeto de teste. O log fornecerá informações detalhadas sobre as divergências encontradas.

Quando ocorre um erro, as linhas que apresentarem diferenças serão exibidas na aba DIFERENÇAS. Nessa aba, os campos que apresentarem inconsistências serão destacados em negrito e na cor vermelha, facilitando a identificação visual dos problemas. Além disso, todos os campos que contêm diferenças serão listados em uma coluna específica chamada CAMPOS DIFERENTES. Esta coluna detalhará exatamente quais campos apresentaram variações, permitindo uma análise precisa das discrepâncias.

Essa funcionalidade oferece uma visão clara e organizada das divergências, agilizando o processo de correção e garantindo que o teste possa ser ajustado de maneira eficiente. Além disso, o uso de logs detalhados e a exibição de erros em formato visual ajudam a identificar rapidamente os problemas, permitindo ações corretivas imediatas.

Image Added

...

Saiba mais

Dica

...

  • Atenção: Evite utilizar sem suas sentenças a expressão "SELECT * FROM TABELA". Você não será impedido de salvar sua comparação de banco mas será avisado. O uso de uma sentença tão genérica pode causar problemas se campos novos forem criados e sua comparação não for atualizada. Use sempre "SELECT TABELA.CAMPO FROM TABELA".

Quando sua consulta for executada

No log de execução se ela apresentar sucesso só serão mostradas as informações dos Passos, Aletas, Ambiente e Parâmetros.

Caso apresente erro as linhas com diferença serão mostradas na aba DIFF. Os campos com diferença serão mostrados em negrito e vermelho. Todos os campos com diferença serão listados na coluna CAMPOS DIFERENTES.

* O uso de bases Oracle ainda está em implementação.

...

Você pode montar a string de conexão de três maneiras: 1 - Digitando manualmente a string; 2 - Através do gerador de conexão informando os campos necessários; 3 - Através do gerador de conexão carregando o padrão do SQLServer.

...

Dica

Sempre que utilizar uma Atividade de Restauração de Banco de Dados

...

, deixe a limpeza automatica do TestFlow apagar a base. Isso ajudará a preparar o seu ambiente para uma próxima execução das automações.

Dica

Nunca utilize "select *" para validar a comparação dos bancos de dados. Pode haver campos de datas que irá comprometer seu resultado.

FAQ

Informações

P: Recebi o seguinte erro ao rodar a minha comparação: Column 'X' does not belong to table. O que fazer?

R: A base restaurada não está com os scripts atualizados. Sua comparação faz referência uma coluna que não existe mais. Para isso, execute a atualização dessa base de dados ou ajuste a consulta da comparação para excluir essa coluna.

P: Recebi o seguinte erro ao rodar a minha comparação: Log: Colunas de tipos diferentes nas tabelas possuem a mesma posição. O que fazer?

R: A posição das colunas nas comparações estão diferentes. Para resolver isso, ajuste a sua consulta da comparação informando somente os campos utilizado no lugar de SELECT * FROM.

P: Recebi o seguinte erro ao rodar a minha comparação: Log: Houve diferenças na comparação do banco de Dados. O que fazer?

R: Verifique se houve algum erro nas atividade executadas anteriormente. O problema pode estar no meu teste que não retornou o resultado esperado.