Voltar para a lista de artigos Artigos
13 minutos de leitura

Perguntas da entrevista sobre SQL para testadores de software

O SQL é uma habilidade crucial para os testadores de software. Caso contrário, como eles obteriam os dados para testar? Os entrevistadores para esses empregos podem lhe fazer várias perguntas sobre testes de software com SQL. Portanto, se estiver se preparando para uma entrevista de emprego, você precisará saber como responder a essas dez perguntas comuns sobre SQL.

Por que as perguntas da entrevista de teste de software incluem SQL? Bem, os testadores de software geralmente usam a Structured Query Language (Linguagem de Consulta Estruturada) em suas tarefas diárias. Por exemplo, eles a utilizam para:

  • Validar dados entre aplicativos e bancos de dados.
  • Encontrar contas de usuário que satisfaçam os critérios que precisam testar.
  • Recuperar dados de teste de bancos de dados
  • Verificar erros nos dados salvos nos bancos de dados.
  • Verificar a lógica comercial implementada no banco de dados.

A palavra comum aqui é "banco de dados", que é o domínio do SQL; ele foi projetado para lidar com dados em bancos de dados.

Devido à sua importância nas tarefas diárias de teste de software, o SQL também costuma aparecer nas perguntas das entrevistas de teste de software. As perguntas geralmente testam conhecimentos teóricos e práticos de SQL. A melhor maneira de se preparar para a entrevista é ler sobre os conceitos de SQL usados pelos testadores de software e resolver o maior número possível de desafios de codificação que envolvam esses tópicos.

Portanto, sim, é altamente recomendável encontrar mais artigos como este ou outras listas de perguntas de entrevistas sobre SQL. Além disso, talvez você queira fazer cursos que se concentrem no conhecimento de que precisa, como o nosso SQL para Iniciantes curso. Seus tópicos vão desde a recuperação de dados de um banco de dados, criação de relatórios básicos e filtragem de dados usando WHERE até o trabalho com JOINs, GROUP BY, subconsultas e operações de conjunto. Se você ainda não domina esses tópicos, os mais de 100 exercícios de codificação desse curso o ajudarão a adquirir as habilidades necessárias.

Neste artigo, vou me concentrar nos conceitos de SQL que são importantes para o teste de software. Se você ainda não estiver familiarizado com SQL, aconselho que tenha por perto nossa folha de consulta gratuita SQL para Iniciantes para referência rápida.

1. Qual é a estrutura básica de uma consulta SQL?

Resposta: A consulta SQL básica é uma instrução SELECT com uma cláusula FROM, conforme mostrado abaixo:

SELECT
  column_1,
  column_2,
  
FROM table_name;

Uma consulta SQL não pode funcionar sem essas duas cláusulas:

  • SELECT - Lista a(s) coluna(s) a ser(em) buscada(s) na tabela.
  • FROM - Especifica a tabela da qual a(s) coluna(s) em SELECT será(ão) buscada(s).

LearnSQL.com.br é uma plataforma online projetada para ajudá-lo a dominar o SQL. Oferece 10+ cursos interativos que variam em dificuldade de iniciante a avançado. Cada curso oferece conhecimento teórico e exercícios práticos para que você possa solidificar essas novas ideias.

Entretanto, uma consulta SQL frequentemente inclui outras cláusulas (opcionais). Uma consulta um pouco menos básica teria a seguinte aparência:

SELECT
  column_1,
  column_2,
  …,
  aggregated_column
FROM table_name
WHERE column_1 condition
GROUP BY column_1, column_2, …
HAVING aggregated_column condition
ORDER BY column_1 [ASC|DESC];

Aqui está uma explicação de cada cláusula adicional.

  • WHERE: Verifica os valores na(s) coluna(s) especificada(s) e retorna as linhas com valores que satisfazem a condição. Usada para filtrar dados antes de
  • GROUP BY: Organiza os dados por valores nas colunas especificadas.
  • HAVING: verifica os valores na(s) coluna(s) agregada (s) especificada(s) e retorna as que satisfazem a condição. Usado para filtrar dados depois de
  • ORDER BY: Classifica a saída por colunas específicas em ordem ascendente (do menor para o maior valor numérico; alfabeticamente para valores de cadeia de caracteres; da data mais antiga para a mais recente) ou descendente (do maior para o menor valor numérico; alfabeticamente invertido para valores de cadeia de caracteres; da data mais recente para a mais antiga).

2. Como você modificaria os dados em um banco de dados?

Resposta: Às vezes, os testadores modificam os dados em um banco de dados para criar uma condição de teste específica. Portanto, perguntas sobre modificação de dados são muito comuns em entrevistas com testadores de software.

Você pode inserir dados em um banco de dados com a instrução INSERT. Você altera os dados existentes em um banco de dados com a instrução UPDATE. Você remove dados de um banco de dados com o comando DELETE.

O comando INSERT insere uma ou mais novas linhas de dados em uma tabela usando essa sintaxe:

INSERT INTO table_name (column_1, column_2, column_3, …)
VALUES (value_1, value_2, value_3, …);

O comando UPDATE modifica os valores existentes em uma coluna da tabela do banco de dados. Aqui está a sintaxe:

UPDATE table_name
SET column_name = value
WHERE condition;

O comando DELETE apaga uma ou várias linhas da tabela usando esta sintaxe:

DELETE
FROM table_name
WHERE condition;

Para obter mais tópicos de perguntas populares sobre testes de software para entrevistas, talvez você queira trabalhar em algumas dessas 22 práticas de comandos SQL antes da entrevista.

3. Encontrar contas de usuário que atendam a determinados critérios

Descrição do problema: Imagine que você trabalha com a tabela app_users tabela fornecida abaixo e deseja testá-la usando alguns de seus dados. Esses dados devem incluir apenas:

  • Usuários ativos que
  • Se registraram em 2024 e
  • Tenham mais de US$ 100 em suas contas.

Como você escreveria a consulta para encontrar esses usuários? Primeiro, vamos dar uma olhada em uma amostra dos dados:

idusernameemailregistration_dateuser_typestatusaccount_balance
1mjohnsonmjohnson@gmail.com2024-02-08adminactive25.00
2sstevenssstevens@gmail.com2023-05-08regular_useractive528.49
3bkingbking@gmail.com2023-09-12regular_userinactive0.00
4adedicadedic@gmail.com2024-07-04adminactive184.22
5blavetteblavette@gmail.com2024-11-03regular_useractive208.50

Solução: Para resolver o problema que lhe foi dado, você precisa escrever a seguinte consulta que tem três condições em WHERE:

SELECT
  id,
  username,
  email,
  registration_date,
  user_type,
  status,
  account_balance
FROM app_users
WHERE status = 'Active'
  AND registration_date > '2023-12-31'
  AND account_balance > 100;

Essa consulta seleciona todas as colunas da tabela app_users. Em seguida, ela usa WHERE e três condições de filtragem com os operadores lógicos e de comparação.

A primeira condição é que o status esteja ativo, portanto, os valores na coluna status devem ser iguais (=; o operador de comparação) ao valor 'active'. Observação: isso filtra dados de texto, portanto o valor deve ser escrito entre aspas simples (').

A segunda condição de filtragem é que a data de registro deve ser posterior a (o operador de comparação > ) 2023-12-31, ou seja, o usuário se registrou em 2024. Observação: isso filtra as datas, que também precisam ser escritas entre aspas simples.

Por fim, a terceira condição verifica se o saldo da conta do usuário está acima de 100. Isso, novamente, usa o operador de comparação maior que (>). Aqui, o valor é escrito sem aspas simples porque se trata de um valor numérico.

Todas as três condições precisam ser satisfeitas simultaneamente, portanto, "encadeamos" as três condições em WHERE usando dois operadores lógicos AND.

Essa é uma pergunta comum em entrevistas, portanto, recomendo que você pratique esse tópico usando estes 20 exercícios práticos de SQL WHERE para iniciantes.

Saída: O resultado mostra dois usuários que satisfazem todos os três critérios.

idusernameemailregistration_dateuser_typestatusaccount_balance
4adedicadedic@gmail.com2024-07-04adminactive184.22
5blavetteblavette@gmail.com2024-11-03regular_useractive208.50

4. Classificar os valores de saída

Descrição do problema: O entrevistador pode pedir que você classifique o resultado obtido na pergunta anterior das datas de registro mais recentes para as mais antigas.

Solução: Para fazer isso, você precisa de uma cláusula ORDER BY no final da consulta.

SELECT id,
       username,
       email,
       registration_date,
       user_type,
       status,
       account_balance
FROM app_users
WHERE status = 'active'
  AND registration_date > '2023-12-31'
  AND account_balance > 100
ORDER BY registration_date DESC;

Para classificar o resultado por data de registro, basta adicionar uma cláusula ORDER BY com a coluna registration_date ao final da consulta anterior. É necessário ordenar das datas de registro mais recentes para as mais antigas, ou seja, ordenar em ordem decrescente, portanto, não se esqueça de escrever DESC após o nome da coluna.

Saída: Aqui está o resultado classificado:

idusernameemailregistration_dateuser_typestatusaccount_balance
5blavetteblavette@gmail.com2024-11-03regular_useractive208.50
4adedicadedic@gmail.com2024-07-04adminactive184.22

5. Encontrar os valores mais altos e mais baixos

Descrição do problema: Uma pergunta de entrevista SQL muito comum para testadores de controle de qualidade envolve encontrar os valores mais altos e mais baixos em um conjunto de dados.

LearnSQL.com.br é um ótimo lugar para aprender SQL. LearnSQL.com.br oferece 10+ cursos interativos que variam em dificuldade de iniciante a avançado. Você pode escolher entre uma trilha completa de aprendizado, mini-trilhas para aprimorar habilidades específicas e cursos individuais.

Especificamente, digamos que você seja solicitado a retornar o valor mais baixo e o mais alto nas contas de todos os usuários consultando a mesma tabela anterior. Quando tiver esses valores, você poderá verificar os dados no aplicativo para ver se há algumas contas com valores inferiores ou superiores a esses.

Solução: Para resolver esse problema, você precisa de duas funções agregadas: MIN() e MAX(). Sua sintaxe é simples; basta escrever o nome da coluna da qual você deseja obter o valor mínimo/máximo entre parênteses na função.

SELECT
  MIN(account_balance) AS minimum_account_balance,
  MAX(account_balance) AS maximum_account_balance
FROM app_users;

Para tornar a saída mais legível, podemos criar aliases para as colunas agregadas escrevendo a palavra-chave AS seguida do alias da coluna.

Saída: Aqui está o resultado:

minimum_account_balancemaximum_account_balance
0528.49

6. O que é um JOIN em SQL e com qual Cláusulas JOIN em SQL você está familiarizado?

Resposta: JOIN é uma cláusula usada para combinar duas ou mais tabelas no SQL.

A sintaxe é mostrada abaixo:

SELECT
  table_1.column_1,
  table_2.column_2,
  
FROM table_1
JOIN table_2
ON table_1.common_column = table_2.common_column;

A primeira tabela unida está listada em FROM, e a segunda em JOIN. As tabelas são unidas na coluna comum e essa condição de união é escrita na cláusula ON.

No SQL, há cinco JOINs:

  • (INNER) JOIN
  • LEFT (OUTER) JOIN
  • RIGHT (OUTER) JOIN
  • FULL (OUTER) JOIN
  • CROSS JOIN

INNER JOIN retorna somente as linhas correspondentes das tabelas unidas.

LEFT JOIN retorna todas as linhas da primeira tabela (esquerda) e as linhas correspondentes da segunda tabela (direita). Os valores não correspondentes da tabela da direita são mostrados como NULL.

RIGHT JOIN é a imagem espelhada de LEFT JOIN. Ele retorna todas as linhas da segunda tabela (direita) e as linhas correspondentes da primeira tabela (esquerda). Os valores não correspondentes da tabela da esquerda são mostrados como NULL.

FULL JOIN é uma combinação de LEFT JOIN e RIGHT JOIN; ele retorna todas as linhas das tabelas da esquerda e da direita. Os valores não correspondentes de ambas as tabelas são mostrados como NULL.

CROSS JOIN combina todas as linhas de uma tabela com todas as linhas da outra tabela, resultando em um produto cartesiano (ou seja, todas as combinações possíveis de linhas).

Tudo isso é um conhecimento crucial de SQL; você pode aprender mais sobre isso com estas 10 perguntas e respostas da entrevista sobre SQL JOIN.

7. Saída de dados correspondentes de duas tabelas

Descrição do problema: Mais uma vez, você recebe a tabela app_users tabela. Você também tem a tabela session_data que mostra informações sobre cada sessão no aplicativo. Um trecho dessa tabela é mostrado abaixo:

idapp_user_idsession_startsession_end
112024-10-30 6:05:282024-10-30 6:25:52
222024-10-30 12:58:492024-10-30 14:07:07
312024-10-31 4:22:122024-10-31 5:12:43
422024-10-31 9:51:122024-10-31 9:58:24
552024-11-03 21:36:392024-11-03 23:18:25

Sua tarefa é listar os IDs dos usuários, os nomes de usuário e os horários de início e término das sessões para que você possa testar esses dados. Não inclua os nomes de usuário que não tiveram nenhuma sessão no aplicativo.

Solução: O problema requer o uso de dados de ambas as tabelas, portanto, você terá que uni-las. No entanto, qual tipo de união você deve usar? A resposta é INNER JOIN. Por quê? Porque ele retorna apenas as linhas correspondentes, ou seja, apenas os usuários que podem ser encontrados em ambas as tabelas. Se eles puderem ser encontrados em ambas as tabelas, isso significa que eles têm pelo menos uma sessão registrada na tabela session_data.

SELECT
  au.id AS user_id,
  au.username,
  sd.session_start,
  sd.session_end
FROM app_users au
JOIN session_data sd
ON au.id = sd.app_user_id;

A primeira tabela unida é referenciada em FROM e recebe o alias au. (Os aliases não são obrigatórios, mas ajudam a encurtar o nome da tabela quando você precisar referenciá-la novamente). Para unir a segunda tabela, adicione a palavra-chave JOIN (ou INNER JOIN; elas significam a mesma coisa em SQL) e escreva o nome da tabela.

As tabelas são unidas na coluna comum. Nesse caso, é id da primeira tabela e app_user_id da segunda tabela.

Agora, você pode selecionar todas as colunas necessárias de ambas as tabelas. Para entender facilmente qual coluna está vindo de qual tabela, coloque o nome da coluna antes do nome da tabela (ou alias da tabela) seguido de um ponto: table_name.row_name.

Saída: O resultado mostra cinco sessões em três usuários:

user_idusernamesession_startsession_end
1mjohnson2024-10-30 6:05:282024-10-30 6:25:52
2sstevens2024-10-30 12:58:492024-10-30 14:07:07
1mjohnson2024-10-31 4:22:122024-10-31 5:12:43
2sstevens2024-10-31 9:51:122024-10-31 9:58:24
5blavette2024-11-03 21:36:392024-11-03 23:18:25

8. Categorias com estoque acima de 100

Descrição do problema: Você recebeu a tabela products para resolver esta pergunta da entrevista de teste de software. Aqui está um resumo dela:

idproduct_nameproduct_categorystock_quantity
1Wireless earbudsElectronics518
2Vacuum cleanerAppliances208
3TreadmillSports12
4USB-C cableElectronics121
5DishwasherAppliances80
6Exercise bikeSports17
7Wireless boomboxElectronics94
8Washing machineAppliances103
9Yoga matSports54

Você deseja gerar as categorias de produtos e sua quantidade total de estoque, mas somente para categorias com estoque total acima de 100. Você precisará disso para verificar se os dados estão registrados corretamente no aplicativo de inventário.

Solução: A solução usa a função agregada SUM() para somar a quantidade total de estoque. Para obter esse cálculo por categoria de produto, selecione a coluna product_category e agrupe a saída pela mesma coluna em GROUP BY.

Para mostrar categorias com estoque total acima de 100, a filtragem deve ser feita após a agregação. Por esse motivo, você deve usar HAVING para filtragem. (Lembre-se de que WHERE serve apenas para filtrar antes da agregação). Em HAVING, você escreverá novamente a coluna de agregação que calcula a quantidade total de estoque, com a condição de que somente os valores acima de 100 sejam incluídos na saída.

Saída: Há duas categorias de produtos que satisfazem a condição HAVING:

product_categorytotal_stock_quantity
Appliances391
Electronics733

9. O que é uma chave primária em um banco de dados?

Resposta: Uma chave primária é uma restrição criada na coluna que identifica exclusivamente cada linha da tabela, não aceitando valores duplicados e NULLs.

Ela tem várias finalidades importantes:

  • Garantir que não haja dados duplicados ou ausentes nessa coluna.
  • Fornecer uma maneira de identificar exclusivamente cada linha da tabela.
  • Estabelecer um relacionamento com outra tabela por meio de uma chave estrangeira.
  • Garantir a acessibilidade em nível de linha dos dados de uma tabela.

Você pode saber mais sobre chaves em nosso artigo Por que usar chaves primárias e chaves estrangeiras em bancos de dados?

10. Com quais mecanismos de banco de dados você trabalha?

Descrição do problema: Talvez lhe perguntem com quais mecanismos de banco de dados você já trabalhou. Essa pergunta um tanto estranha e fácil tem o potencial de surpreendê-lo se você nunca pensou nela.

Resposta: Nem todos os mecanismos de banco de dados SQL são iguais. É importante saber qual(is) mecanismo(s) de banco de dados você usa, especialmente se esses forem os mecanismos que você usará em um possível emprego. Certifique-se de que você conhece os mecanismos de banco de dados mais populares. Isso é importante não só por causa das diferenças técnicas entre as ferramentas, mas também por causa das diferenças nos dialetos SQL que esses mecanismos usam.

Mais importante ainda, saiba quais desses mecanismos você usou em seus projetos ou funções anteriores. O entrevistador pode estar interessado em saber com quais mecanismos de banco de dados você está familiarizado.

Pronto para responder a essas perguntas sobre teste de software SQL?

Essas dez perguntas de entrevista lhe deram uma boa ideia de como são as perguntas de entrevista sobre SQL para testadores de software. Espere receber uma combinação de perguntas teóricas e tarefas práticas de SQL.

LearnSQL.com.br é uma plataforma online projetada para ajudá-lo a dominar o SQL. LearnSQL.com.br permite que você escolha entre uma trilha completa de aprendizado, mini-trilhas para aprimorar habilidades específicas e cursos individuais. Você também pode selecionar o dialeto SQL (SQL Padrão, Microsoft SQL Server ou PostgreSQL) que melhor atende às suas necessidades.

Os tópicos que discutimos são conhecimentos básicos de SQL. Se quiser se sair bem em sua entrevista sobre SQL, certifique-se de que está confortável com tudo o que mencionei no artigo. Para consolidar seus conhecimentos fundamentais de SQL, recomendo fortemente que experimente nossos cursos SQL para Iniciantes e Usando Comandos INSERT, UPDATE e DELETE em SQL e, em seguida, revise tudo o que está na trilhaTrilha de Práticas em SQL .