Volver a la lista de artículos Artículos
Lectura de 13 minutos

Preguntas de la entrevista SQL para probadores de software

SQL es una habilidad crucial para los evaluadores de software. De lo contrario, ¿cómo obtendrían los datos para realizar las pruebas? Los entrevistadores para estos puestos de trabajo pueden hacerte varias preguntas sobre pruebas de software con SQL. Por lo tanto, si se está preparando para una entrevista de trabajo, necesitará saber cómo responder a estas diez preguntas comunes sobre SQL.

¿Por qué las preguntas de las entrevistas de pruebas de software incluyen SQL? Bueno, los evaluadores de software suelen utilizar el lenguaje de consulta estructurado en sus tareas diarias. Por ejemplo, lo utilizan para:

  • Validar datos entre aplicaciones y bases de datos.
  • Encontrar cuentas de usuario que satisfagan los criterios que necesitan probar.
  • Recuperar datos de prueba de bases de datos.
  • Comprobar errores en los datos guardados en las bases de datos.
  • Verificar la lógica de negocio implementada en la base de datos.

La palabra común aquí es "base de datos", que es el dominio de SQL; fue diseñado para manejar datos en bases de datos.

Debido a su importancia en las tareas cotidianas de comprobación de software, SQL también suele aparecer en las preguntas de las entrevistas de comprobación de software. Las preguntas suelen poner a prueba los conocimientos teóricos y prácticos de SQL. La mejor manera de prepararse para la entrevista es leer sobre los conceptos de SQL utilizados por los evaluadores de software y resolver tantos retos de codificación relacionados con esos temas como sea posible.

Por lo tanto, sí, se recomienda encarecidamente buscar más artículos como éste u otras listas de preguntas de SQL para entrevistas. Además, es posible que desee tomar cursos que se centran en el conocimiento que necesita, como nuestro SQL para principiantes curso. Sus temas abarcan desde la recuperación de datos de una base de datos, la creación de informes básicos y el filtrado de datos mediante WHERE hasta el trabajo con JOINs, GROUP BY, subconsultas y operaciones de conjuntos. Si aún no dominas estos temas, los más de 100 ejercicios de codificación de este curso te ayudarán a adquirir las habilidades que necesitas.

Centraré este artículo en los conceptos de SQL que son importantes para las pruebas de software. Si aún no estás familiarizado con SQL, te aconsejo que tengas cerca nuestra hoja de trucos gratuita SQL para principiantes para una referencia rápida.

1. ¿Cuál es la estructura básica de una consulta SQL?

Respuesta: La consulta SQL básica es una sentencia SELECT con una cláusula FROM, como se muestra a continuación:

SELECT 
  column_1,
  column_2,
  …
FROM table_name;

Una consulta SQL no puede funcionar sin estas dos cláusulas:

  • SELECT - Enumera la(s) columna(s) que debe(n) obtenerse de la tabla.
  • FROM - Especifica la tabla de la que se obtendrá la(s) columna(s) en SELECT.

Sin embargo, una consulta SQL suele incluir otras cláusulas (opcionales). Una consulta un poco menos básica tendría este aspecto:

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];

He aquí una explicación de cada cláusula adicional.

  • WHERE: Comprueba los valores de la(s) columna(s) especificada(s) y devuelve las filas con valores que satisfacen la condición. Se utiliza para filtrar datos antes de
  • GROUP BY: Organiza los datos según los valores de las columnas especificadas.
  • HAVING: Comprueba los valores en la(s) columna(s) agregada (s) especificada(s) y devuelve aquellas que satisfacen la condición. Se utiliza para filtrar datos después de
  • ORDER BY: Ordena la salida por columnas específicas en orden ascendente (de los valores numéricos más bajos a los más altos; alfabéticamente para valores de cadena; de la fecha más antigua a la más reciente) o descendente (de los valores numéricos más altos a los más bajos; alfabéticamente inverso para valores de cadena; de la fecha más reciente a la más antigua).

2. ¿Cómo se modifican los datos de una base de datos?

Respuesta: A veces, los probadores modifican los datos de una base de datos para crear una condición de prueba específica. Por eso, las preguntas sobre modificación de datos son bastante habituales en las entrevistas a evaluadores de software.

Puede insertar datos en una base de datos con la sentencia INSERT. Los datos existentes en una base de datos se modifican con la sentencia UPDATE. Para eliminar datos de una base de datos, utilice la sentencia DELETE.

La sentencia INSERT inserta una o varias filas nuevas de datos en una tabla utilizando esta sintaxis:

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

La sentencia UPDATE modifica los valores existentes en una columna de una tabla de base de datos. Esta es la sintaxis

UPDATE table_name
SET column_name = value
WHERE condition;

La sentencia DELETE borra una o varias filas de la tabla utilizando esta sintaxis:

DELETE
FROM table_name
WHERE condition; 

Para temas adicionales de preguntas populares de entrevistas de pruebas de software, es posible que desee trabajar en algunas de estas 22 Prácticas de Comandos SQL antes de la entrevista.

3. Encontrar Cuentas de Usuario que Satisfagan Ciertos Criterios

Descripción del Problema: Imagine que trabaja con la app_users tabla que se muestra a continuación y desea probarla utilizando algunos de sus datos. Estos datos deben incluir únicamente

  • Usuarios activos que
  • Se registraron en 2024, y
  • Tienen más de 100 dólares en su cuenta.

¿Cómo escribirías la consulta para encontrar esos usuarios? Primero, veamos una muestra de los datos:

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

Solución: Para resolver el problema que se te plantea, necesitas escribir la siguiente consulta que tiene tres condiciones en 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;

Esta consulta selecciona todas las columnas de la tabla app_users. A continuación, utiliza WHERE y tres condiciones de filtrado con los operadores de comparación y lógicos.

La primera condición es que el estado sea activo, por lo que los valores de la columna status tienen que ser iguales (=; el operador de comparación) al valor 'active'. Nota: Esto filtra datos de texto, por lo que el valor debe escribirse entre comillas simples (').

La segunda condición de filtrado es que la fecha de registro tiene que ser posterior a ( el operador de comparación > ) 2023-12-31, es decir, el usuario se registró en 2024. Nota: Esto filtra las fechas, que también deben escribirse entre comillas simples.

Por último, la tercera condición comprueba que el saldo de la cuenta del usuario sea superior a 100. Esto, de nuevo, utiliza el operador mayor que. También en este caso se utiliza el operador de comparación mayor que (>). Aquí, el valor se escribe sin comillas simples porque es un valor numérico.

Las tres condiciones deben cumplirse simultáneamente, por lo que "encadenamos" las tres condiciones en WHERE utilizando dos operadores lógicos AND.

Esta es una pregunta común en las entrevistas, por lo que te aconsejo que practiques este tema utilizando estos 20 Ejercicios Prácticos de SQL WHERE para Principiantes.

Resultado: La salida muestra dos usuarios que satisfacen los tres criterios.

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

4. Ordenar los Valores de Salida

Descripción del Problema: El entrevistador podría pedirle que ordene la salida obtenida en la pregunta anterior de la fecha de registro más reciente a la más antigua.

Solución: Para hacerlo, necesita una cláusula ORDER BY al final de la 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 ordenar la salida por fecha de registro, simplemente añada una cláusula ORDER BY con la columna registration_date al final de la consulta anterior. Necesita ordenar desde la fecha de registro más reciente a la más antigua - es decir, ordenar en orden descendente - así que no olvide escribir DESC después del nombre de la columna.

Resultado: Aquí tienes la salida ordenada:

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

5. Encontrar los valores más altos y más bajos

Descripción del Problema: Una pregunta de entrevista SQL muy común para los probadores de control de calidad consiste en encontrar los valores más altos y más bajos en un conjunto de datos.

En concreto, digamos que se le pide que devuelva el importe más bajo y el más alto de todas las cuentas de los usuarios consultando la misma tabla que antes. Cuando tengas estos valores, puedes comprobar los datos en la aplicación para ver si hay algunas cuentas que sean inferiores o superiores a esos valores.

Solución: Para resolver este problema, necesitas dos funciones agregadas: MIN() y MAX(). Su sintaxis es sencilla; sólo tienes que escribir el nombre de la columna de la que quieres el valor mínimo/máximo entre los paréntesis de la función.

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

Para que la salida sea más legible, podemos crear alias para las columnas agregadas escribiendo la palabra clave AS seguida del alias de la columna.

Salida: Esta es la salida:

minimum_account_balancemaximum_account_balance
0528.49

6. ¿Qué es un JOIN en SQL y con qué Tipos de JOIN en SQL está familiarizado?

Respuesta: JOIN es una cláusula utilizada para combinar dos o más tablas en SQL.

La sintaxis se muestra a continuación:

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

La primera tabla unida aparece en FROM, y la segunda en JOIN. Las tablas se unen en la columna común y esta condición de unión se escribe en la cláusula ON.

En SQL, hay cinco JOINs:

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

INNER JOIN devuelve sólo las filas coincidentes de las tablas unidas.

LEFT JOIN devuelve todas las filas de la primera tabla (izquierda) y las filas coincidentes de la segunda tabla (derecha). Los valores no coincidentes de la tabla derecha se muestran como NULL.

RIGHT JOIN es la imagen especular de LEFT JOIN. Devuelve todas las filas de la segunda tabla (derecha) y las filas coincidentes de la primera tabla (izquierda). Los valores no coincidentes de la tabla izquierda se muestran en NULL.

FULL JOIN es una combinación de LEFT JOIN y RIGHT JOIN; devuelve todas las filas de las tablas izquierda y derecha. Los valores no coincidentes de ambas tablas se muestran como NULL.

CROSS JOIN combina todas las filas de una tabla con todas las filas de la otra tabla, dando como resultado un producto cartesiano (es decir, todas las combinaciones posibles de filas).

Todo esto son conocimientos cruciales de SQL; puedes aprender más sobre ello con estas 10 preguntas y respuestas de la entrevista de SQL JOIN.

7. Salida de Datos Coincidentes de Dos Tablas

Descripción del problema: Una vez más, se le da la tabla app_users tabla. También tiene la tabla session_data que muestra información sobre cada sesión de la aplicación. A continuación se muestra un fragmento de esta tabla:

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

Tu tarea es listar los IDs de los usuarios, los nombres de usuario y las horas de inicio y fin de sus sesiones para que puedas probar estos datos. No incluyas los nombres de usuario que no hayan tenido ninguna sesión en la aplicación.

Solución: El problema requiere utilizar datos de ambas tablas, por lo que tendrás que unirlas. Sin embargo, ¿qué tipo de unión debe utilizar? La respuesta es INNER JOIN. ¿Por qué? Porque sólo devuelve filas coincidentes, es decir, sólo los usuarios que se pueden encontrar en ambas tablas. Si se encuentran en ambas tablas, significa que tienen al menos una sesión registrada en la tabla 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;

Se hace referencia a la primera tabla unida en FROM y se le asigna el alias au. (Los alias no son obligatorios, pero ayudan a acortar el nombre de la tabla cuando se necesita volver a hacer referencia a ella). Para unir la segunda tabla, añada la palabra clave JOIN (o INNER JOIN; significan lo mismo en SQL) y escriba el nombre de la tabla.

Las tablas se unen en la columna común. En este caso, es id de la primera tabla y app_user_id de la segunda.

Ahora, puedes seleccionar todas las columnas necesarias de ambas tablas. Para entender fácilmente qué columna proviene de qué tabla, anteponga al nombre de la columna el nombre de la tabla (o alias de tabla) seguido de un punto: table_name.row_name.

Resultados: La salida muestra cinco sesiones a través de tres usuarios:

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. Categorías con existencias superiores a 100

Descripción del problema: Se le da la tabla products para resolver esta pregunta de entrevista sobre pruebas de software. Aquí tiene un resumen de la misma:

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

Desea obtener las categorías de productos y su cantidad total de existencias, pero sólo para las categorías con existencias totales superiores a 100. Necesitará esto para comprobar si los datos se registran correctamente en el inventario. Lo necesitará para comprobar si los datos se registran correctamente en la aplicación de inventario.

Solución: La solución utiliza la función agregada SUM() para sumar la cantidad total de existencias. Para obtener este cálculo por categoría de producto, seleccione la columna product_category y agrupe la salida por la misma columna en GROUP BY.

Para mostrar las categorías con existencias totales superiores a 100, el filtrado debe realizarse después de la agregación. Por ello, debe utilizar HAVING para el filtrado. (Recuerde, WHERE es sólo para filtrar antes de la agregación). En HAVING, escribirá de nuevo la columna de agregación que calcula la cantidad total de existencias, con la condición de que sólo se incluyan en la salida los valores superiores a 100.

Salida: Hay dos categorías de productos que satisfacen la condición HAVING:

product_categorytotal_stock_quantity
Appliances391
Electronics733

9. ¿Qué es una clave primaria en una base de datos?

Respuesta: Una clave primaria es una restricción creada sobre la columna, que identifica de forma única cada fila de la tabla al no aceptar valores duplicados y NULLs.

Tiene varias finalidades importantes:

  • Garantizar que no haya datos duplicados o que falten datos en esa columna.
  • Proporcionar una forma de identificar de forma única cada fila de la tabla.
  • Establecer una relación con otra tabla mediante una clave externa.
  • Garantizar la accesibilidad a nivel de fila de los datos de una tabla.

Puedes aprender más sobre claves en nuestro artículo ¿Por qué usar claves primarias y claves foráneas en las bases de datos?

10. ¿Con qué motores de bases de datos trabaja?

Descripción del problema: Es posible que te pregunten con qué motores de bases de datos has trabajado. Esta pregunta un tanto extraña y fácil tiene el potencial de sorprenderle si nunca se lo ha planteado.

Respuesta: No todos los motores de bases de datos SQL son iguales. Sí importa qué motor o motores de bases de datos has utilizado, sobre todo si son los que vas a utilizar en un posible trabajo. Asegúrate de que conoces los motores de bases de datos más populares. Esto es importante no sólo por las diferencias técnicas entre las herramientas, sino también por las diferencias en los dialectos SQL que utilizan esos motores.

Y lo que es más importante, conoce cuáles de esos motores has utilizado en tus proyectos o funciones anteriores. El entrevistador puede estar interesado en saber con qué motores de bases de datos estás familiarizado.

¿Listo para triunfar con estas Preguntas de Pruebas de Software SQL?

Estas diez preguntas de entrevista le han dado una buena idea de como son las preguntas de entrevista SQL para probadores de software. Espere que le den una mezcla de preguntas teóricas y tareas prácticas de SQL.

Los temas que hemos tratado son conocimientos básicos de SQL. Si quieres hacer un buen papel en tu entrevista SQL, asegúrate de que te sientes cómodo con todo lo que he mencionado en el artículo. Para consolidar tus conocimientos fundamentales de SQL, te recomiendo encarecidamente que pruebes nuestros SQL para principiantes y Cómo añadir, modificar y eliminar datos con SQL y luego repasar todo lo que hay en Ejercicio de SQL.