Desarrollador Go: pregunta de entrevista
¿Cuál es tu estrategia de testing en Go?
Las pruebas Go deben cubrir comportamiento en el límite útil más pequeño: pruebas unitarias table-driven para lógica pura, integración para dependencias reales y detección de carreras para código concurrente.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
Una estrategia de testing en Go apila pruebas baratas y rápidas bajo unas pocas caras. Pruebas unitarias con tablas cubren lógica pura y casos límite; las pruebas que tocan base de datos o red corren contra una dependencia real en un entorno aislado en lugar de un mock de SQL escrito a mano; el detector de carreras corre en cada paquete con goroutines. Las pruebas usan la API pública del paquete cuando es posible para que un refactor no reescriba la suite, y los helpers se marcan con t.Helper para que los fallos señalen la línea correcta.
Ejemplo
Ejecuta go test -race para paquetes que comparten estado entre goroutines y usa t.TempDir o contenedores de prueba para aislar estado de integración. Un paquete repositorio se prueba contra un esquema PostgreSQL desechable creado en TestMain, mientras la capa HTTP encima se prueba con httptest.NewServer y un repositorio falso que implementa la misma interfaz pequeña.
Errores frecuentes
- Hacer mock del driver de base de datos en lugar de ejecutar la consulta contra un motor real.
- Compartir fixtures mutables entre pruebas, de modo que el orden empieza a importar.
- Saltarse -race en local y descubrir carreras de datos solo en logs de producción.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.