Haz tests unitarios de la lógica con ramas y casos límite: reglas de precios, parseo, máquinas de estado. Haz tests de integración de las costuras donde tus suposiciones se encuentran con la realidad: consultas a base de datos, serialización, middleware de autenticación, clientes de terceros. Si un test necesita cinco mocks para funcionar, sobre todo está probando tus mocks y el valor está en un test de integración. Apunta a muchos tests unitarios rápidos más un conjunto más pequeño de tests de integración sobre los caminos críticos.
Por qué lo preguntan los entrevistadores
Esto es en realidad una pregunta sobre de dónde vienen los bugs. El entrevistador quiere ver que pruebas comportamiento y no implementación, que sabes que unos tests unitarios llenos de mocks pueden pasar mientras producción se rompe, y que puedes articular una proporción sin recitar la pirámide de tests como dogma. El criterio sobre qué no merece la pena probar es la señal más fuerte aquí.
Cómo estructurar tu respuesta
- Divide según si el riesgo es de lógica o de integración.
- Menciona el olor del test cargado de mocks.
- Describe la forma de suite a la que apuntas.
- Di qué decides no probar a propósito.
Ejemplo de respuesta
Lo divido según dónde vive el riesgo. Si el riesgo es lógica, ramas, redondeos, casos límite en una máquina de estados, eso es un test unitario, y debería ser lo bastante rápido como para ejecutar el fichero entero al guardar. Si el riesgo está en una costura, que mi SQL devuelva de verdad lo que creo, que el JSON se serialice como espera el cliente, que el middleware rechace un token caducado, eso es un test de integración con una base de datos real en un contenedor. La heurística que uso es el número de mocks: si necesito cuatro mocks para que un test arranque, ese test afirma mi modelo mental de esas cuatro cosas, y mi modelo mental es exactamente lo que está mal cuando se rompe en producción. También intento ser honesto sobre lo que no pruebo. Un controlador fino que solo pasa datos, o un getter, queda cubierto de forma incidental y probarlo aparte es coste de mantenimiento sin señal. La suite que quiero son muchos tests unitarios rápidos y quizá veinte tests de integración sobre los caminos donde hay dinero o autenticación de por medio.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Cómo evitas que los tests de integración se vuelvan lentos e inestables?
- ¿Qué opinas de los objetivos de cobertura?
- ¿Dónde encajan los tests de contrato entre servicios?
Más preguntas para Ingeniero de software
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas