teste de banco de dados Selenium (usando WebDriver e JDBC API)

em nosso último tutorial do Selenium, aprendemos como solucionar alguns problemas recorrentes em scripts selenium. Discutimos alguns conceitos avançados em que lidaríamos com eventos de mouse e teclado, acessando vários links implementando listas.

avançando com nossos tópicos avançados na série de treinamento Selenium, apresentaríamos o conceito de teste de banco de dados usando o Selenium WebDriver.

discutiríamos os processos básicos como conexão de banco de Dados, execução de consultas, busca de dados e desconexão de instâncias de banco de dados etc. Também discutiremos várias implicações práticas em que precisamos de testes de banco de dados com testes de automação para testar os cenários completos de ponta a ponta.

teste de banco de dados usando Selenium

Antes de avançar com as implicações técnicas associadas ao teste automatizado de banco de dados. Vamos discutir alguns cenários em que exigimos a realização de testes de banco de dados junto com os testes de automação. Mas antes disso, gostaria de afirmar aqui que o teste de banco de dados é um tipo muito peculiar de teste, enquanto o Selenium WebDriver é uma ferramenta usada para simular e automatizar as interações do usuário com a interface do usuário do aplicativo.

portanto, tecnicamente falando, não estamos realizando testes de banco de dados com precisão, mas estamos testando nosso aplicativo em conjunto com o banco de dados, a fim de garantir que as alterações sejam refletidas em ambas as extremidades, identificando defeitos precocemente.

absolutamente todos os aplicativos da web precisam de um back-end para armazenar os dados. Bancos de dados como MySQL, Oracle e SQL Server são razoavelmente populares nos dias de hoje.

agora voltando ao tópico original, vamos discutir alguns cenários para exemplificar a demanda de testes de banco de dados junto com testes de automação.

considere os seguintes cenários

#1) Às vezes, somos obrigados a garantir que os dados inseridos na interface do USUÁRIO sejam refletidos consistentemente no banco de dados. Assim, recuperamos as informações do banco de dados e verificamos as informações recuperadas em relação às informações fornecidas da interface do Usuário. Por exemplo, formulários de Registro, dados do Usuário, perfis de usuário, atualizações e exclusões de dados do Usuário. Assim, o cenário de teste para automatizar pode ser “verificar se as informações do usuário são salvas com sucesso no banco de dados assim que o Usuário se registra no aplicativo”.

#2) Outro caso de uso de realizar testes de banco de dados com Selenium WebDriver pode surgir quando o Usuário é direcionado para carregar os dados de teste ou os dados esperados do banco de dados. Assim, nesse caso, o usuário faria a conexão com o banco de dados usando uma API de terceiros, executaria consultas para recuperar dados do conjunto de dados e, em seguida, afirmaria os dados obtidos do banco de dados com os dados reais que são preenchidos na interface do usuário do aplicativo.

#3) Outro caso de uso é realizar testes associativos de banco de dados. Suponha que realizamos uma operação na interface do usuário do aplicativo e queremos testar a reflexão no banco de dados. Pode ser que os dados impactados residam em várias tabelas do banco de dados devido à Associação. Portanto, é sempre aconselhável testar a reflexão dos dados em todas as áreas impactadas.

Selenium, como eu disse, simula as interações do usuário com o aplicativo em teste. Ele pode simular eventos de teclado, ações do mouse etc. Mas se o usuário deseja automatizar qualquer coisa fora da vizinhança das interações navegador – aplicativo da web, então selenium não pode ser de muita ajuda. Assim, exigimos Outras ferramentas ou recursos para realizar testes de ponta a ponta.

assim, em todos os cenários acima, podemos exigir a realização de testes de banco de dados junto com a automação da interface do Usuário. Podemos verificar as lógicas de negócios manipulando os dados e verificando sua reflexão. Também podemos verificar os aspectos técnicos do próprio banco de dados, como exclusão suave, validação de campo etc.

vamos agora avançar com a implementação real. Antes de desenvolver scripts Selenium WebDriver para extrair dados da fonte de dados, vamos criar dados de teste no banco de dados. Para este tutorial, usaríamos o MySQL como um banco de dados.

criação de dados de teste no banco de dados

se você ainda não baixou o banco de dados, faça o download usando o link. Espera-se que o usuário siga algumas etapas básicas para baixar e instalar o banco de dados.

=>> leia este tutorial para baixar e instalar o banco de dados MySQL.

uma vez que o banco de dados é instalado com sucesso, o usuário pode iniciar o Prompt de linha de comando MySQL que se pareceria com a seguinte captura de tela. O aplicativo pode pedir ao Usuário para inserir a senha. A senha padrão é “root”.

 testes de DB usando selênio 1

Observação: O usuário também pode encontrar clientes baseados em GUI pela internet para se conectar ao banco de dados. Para citar alguns, o usuário pode baixar e instalar o navegador de consulta ou banco de trabalho.

Criação de novo Banco de dados

O próximo passo é criar o banco de dados de teste com algumas tabelas e registros armazenados nas tabelas, a fim de fazer uma conexão com o banco de dados e executar consultas.

Etapa 1) Digite “mostrar bancos de dados” para ver todos os bancos de dados já disponíveis

mostrar bancos de dados;

teste de banco de dados usando selênio 2

Etapa 2) Digite ” Criar usuário de banco de dados;” para criar um banco de dados chamado “Usuário”.

Criar usuário de banco de dados;

teste de banco de dados usando selênio 3

observe que o nome do banco de dados conforme o Usuário é criado e pode ser visto na lista de bancos de dados.

Etapa 3) Digite “usar Usuário;” para selecionar o banco de dados recém-criado. Além disso, digite “mostrar tabelas;” para visualizar todas as tabelas disponíveis no banco de dados do Usuário.

usar Usuário;
mostrar tabelas;

teste de banco de dados usando selênio 4

observe que o conjunto vazio é mostrado no resultado da consulta” mostrar tabelas;”, pois não havia tabelas disponíveis no banco de dados do Usuário.

vamos agora algumas tabelas e adicionar registros neles.

Etapa 4) Digite o seguinte comando para criar uma tabela com 4 campos/colunas (userId, userName, userAge, userAddress).

criar tabela userinfo
(
userId int,
nome de usuário varchar(255),
userAge int,
userAddress varchar(255)
);

DB testes utilizando Selenium 5

O próximo passo é adicionar alguns registros de dados no “userinfo” da tabela.

Etapa 5) digite o seguinte comando para inserir dados na tabela uma tabela para todos os quatro campos 4 campos/colunas (userId, userName, userAge, userAddress).

insert into userinfo (id de utilizador, nome de utilizador, userAge, userAddress) values (‘1’, ‘shruti’, ’25’, ‘Noida’);

Para visualizar os dados adicionados, digite o seguinte comando:

select * from userinfo;

DB testes utilizando Selenium 6

da mesma forma, você pode adicionar mais dados para a sua mesa e pode criar outras tabelas.

agora, que criamos nosso banco de dados. Podemos seguir em frente e entender a implementação de Consultas automatizadas para buscar os registros do banco de dados.

como também iteramos anteriormente, o Selenium WebDriver é uma ferramenta para automação da interface do Usuário. Assim, o Selenium WebDriver sozinho não é elegível para realizar testes de banco de dados, mas isso pode ser feito usando Java Database Connectivity API (JDBC). A API permite que o Usuário se conecte e interaja com a fonte de dados e busque os dados com a ajuda de Consultas automatizadas. Para poder explorar a API JDBC, é necessário ter a máquina virtual Java (JVM) em execução no sistema.

JDBC Fluxo de trabalho

DB testes utilizando Selenium 7

gostaríamos de manter o nosso foco alinhado com os seguintes processos:

  1. Criando uma conexão com o banco de dados
  2. Execução de consultas e instruções de atualização, a fim de extrair/obtenção de dados (Operações CRUD)
  3. Usar e manipular os dados extraídos do Banco de dados na forma de definir o resultado. (O conjunto de resultados é uma coleção de dados organizados nas linhas e Colunas)
  4. Desconectando a conexão do banco de dados.

como dito anteriormente, para poder testar o banco de dados automaticamente a partir de nossos scripts de teste Selenium WebDriver, nos conectaríamos ao banco de dados por meio da conectividade JDBC em nossos scripts de teste. Post para a conexão, podemos acionar tantas operações CRUD (criar, ler, atualizar e Excluir) no banco de dados.

neste tutorial, discutiríamos “Operação de leitura e suas variantes” e sobre sua implementação no script Selenium WebDriver. Mas antes disso, vamos verificar o cenário de teste manualmente usando a”linha de comando MySQL”.

cenário:

1) Abra o servidor de banco de dados e conecte-se ao banco de dados “Usuário”.

2) Liste todos os registros da tabela “userinfo”.

sintaxe: Selecione * do userinfo;

teste de banco de dados usando selênio 8

3) Feche a conexão do banco de dados.

observe que a consulta de leitura listará todos os dados do Usuário presentes na tabela userinfo. A tabela consiste nas seguintes colunas.

  • id de utilizador
  • username
  • userAge
  • userAddress

O resultado também mostra que há apenas um único conjunto de dados presentes na tabela.

agora, vamos executar o mesmo cenário usando a classe Java.

para poder acessar o banco de dados, o Usuário é aproveitado para escolher entre as diversas opções de conector disponíveis para se conectar ao banco de dados. A maioria dos conectores de banco de dados são distribuídos gratuitamente como arquivos “jar”. Como estamos usando o MySQL como uma fonte de dados, portanto, somos obrigados a baixar o arquivo jar específico para o MySQL.

o arquivo jar pode ser baixado de: aqui ou aqui.Etapa 1: a primeira e mais importante etapa é configurar o caminho de compilação do projeto e adicionar “mysql-connector-java-3.1.13-bin.jar ” arquivo como uma biblioteca externa.Etapa 2: crie uma classe java chamada “DatabaseTesingDemo”.Etapa 3: Copie e cole o código abaixo na classe criada na etapa acima.

amostra de código

import org.junit.After;import org.junit.Before;import org.junit.Test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class DatabaseTesingDemo { // Connection object static Connection con = null; // Statement object private static Statement stmt; // Constant for Database URL public static String DB_URL = "jdbc:mysql://localhost:3306/user"; // Constant for Database Username public static String DB_USER = "root"; // Constant for Database Password public static String DB_PASSWORD = "root"; @Before public void setUp() throws Exception { try{ // Make the database connection String dbClass = "com.mysql.jdbc.Driver"; Class.forName(dbClass).newInstance(); // Get connection to DB Connection con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); // Statement object to send the SQL statement to the Database stmt = con.createStatement(); } catch (Exception e) { e.printStackTrace(); } } @Test public void test() { try{ String query = "select * from userinfo"; // Get the contents of userinfo table from DB ResultSet res = stmt.executeQuery(query); // Print the result untill all the records are printed // res.next() returns true if there is any next record else returns false while (res.next()) { System.out.print(res.getString(1)); System.out.print("\t" + res.getString(2)); System.out.print("\t" + res.getString(3)); System.out.println("\t" + res.getString(4)); } } catch(Exception e) { e.printStackTrace(); } } @After public void tearDown() throws Exception { // Close DB connection if (con != null) { con.close(); } }}

a saída do código acima é:

1 shruti 25 Noida
2 shrivastava 55 Mumbai

leia variantes de declaração

onde cláusula com condição única

String query = “select * from userinfo where userId='” + 1 + “‘”;
resultado res = stmt.executeQuery(consulta);

> Saída:
1 shruti 25 Noida

cláusula Where com várias condições

String Endereço =”Mumbai”;
String query = “select * from userinfo onde userId='” + 2 + “‘ e userAddress='”+Endereço+”‘”;
conjunto de Resultados res = stmt.executeQuery (consulta);

saída:
2 shrivastava 55 Mumbai

exibir userId

String query = “select userId from userinfo”;
ResultSet res = stmt.executeQuery (consulta);

saída:
1
2

exibir userId com Where cláusula

String Address =”Noida”;
String query = ” select userId, userName from userinfo where userAddress=’ ” + Address+”‘”;
ResultSet res = stmt.executeQuery (query);

Output:
2
shrivastava

assim, da mesma forma que o usuário pode executar várias consultas no banco de dados.

com isso, vamos lançar alguma luz sobre os métodos de acessibilidade de resultados também.

Métodos De Acessibilidade De Resultados:

nome do Método Descrição
String getString() Método é utilizado para obter o tipo de seqüência de caracteres de dados do conjunto de resultados
int getInt() Método é utilizado para obter o tipo de número inteiro de dados do conjunto de resultados
boolean getBoolean() Método é usado para obter o valor booleano a partir do conjunto de resultados
float getFloat() Método é usado para buscar o flutuador tipo de dados do conjunto de resultados
longo getLong() Método é utilizado para obter o tipo de dados do conjunto de resultados
curta getShort() Método é usado para buscar a curto tipo de dados do conjunto de resultados
duplo getDouble() Método é utilizado para obter o dobro do tipo de dados a partir do conjunto de resultados
Data getDate() Método é usado para buscar a Data de tipo de objecto a partir do conjunto de resultados

Resultado Métodos de Navegação:

nome do Método Descrição
boolean next() Método é usado para mover para o próximo registro no conjunto de resultados
boolean anteriores() Método é usado para mover para o registo anterior no conjunto de resultados
booleano (primeiro) Método é usado para mover para o primeiro conjunto de registros no resultado
booleano (último) Método é usado para mover para o último registro no conjunto de resultados
boolean
absoluto(int rowNumber)
Método é usado para mover para o registro específico no conjunto de resultados

Conclusão

Através deste tutorial, nós tentamos fazer você se familiarizar com o conceito de base de Dados Automatizada de Testes. Enfatizamos claramente as implicações técnicas e as necessidades dos testes de banco de dados.Como toda a nossa série foi focada no Selenium, o leitor pode ser enganado e pode criar uma impressão de que este tutorial ensinaria a realizar testes de banco de dados usando o Selenium, mas como mencionei várias vezes antes, qualquer coisa que esteja fora da periferia dos testes de interface do Usuário não pode ser tratada pelo Selenium. Portanto, introduzimos a API Java Database Connectivity (JDBC) para realizar testes de banco de dados incorporando o código nos scripts do Selenium WebDriver.

o JDBC possibilita que a classe java se conecte ao banco de dados, Recupere dados do banco de dados ou, de fato, execute qualquer uma das operações CRUD, manipule os dados resultantes e feche a conexão.

assim, o tutorial constitui a implementação básica da amostra do processo acima mencionado.

próximo Tutorial # 29: seguiremos em frente com Tópicos Avançados de selênio. No próximo tutorial, abordaremos a grade Selenium – que é usada quando você precisa realizar testes com vários navegadores e tem um grande número de casos de teste.

Última Atualização: 29 De Novembro De 2021

Leave a Reply

O seu endereço de email não será publicado.