Confianza en el comportamiento

Testing

Pirámide, unitarias, integración, mocks y E2E con criterios de mantenibilidad.

5 temas claveJunior → SeniorVersión 1
Progreso0%
0 de 5 dominados
★★★★★Junior → Senior🔥 Fundamental

Pirámide de pruebas y estrategia

Una estrategia combina muchas pruebas rápidas, integración enfocada y pocos E2E críticos. La forma exacta depende del producto.

10–15 min
🟢 Base🟡 Entrevista🔴 Senior

Qué debes entender

Una estrategia combina muchas pruebas rápidas, integración enfocada y pocos E2E críticos. La forma exacta depende del producto.

Cómo funciona

El costo de ejecución y mantenimiento crece al incluir más sistemas. La confianza crece cuando se prueban contratos y flujos reales.

Ejemplo

unit → integration → e2e

Pregunta típica

¿Qué probarías en E2E?

Respuesta Senior

Flujos de negocio críticos y puntos de integración que no pueden validarse con menor costo, evitando duplicar todos los casos unitarios.

Repasar

Volver arriba ↑
★★★★★Mid🔥 Muy preguntado

React Testing Library y queries

RTL favorece pruebas parecidas al uso real. getByRole con nombre accesible suele ser la primera opción.

10–15 min
🟢 Base🟡 Entrevista🔴 Senior

Qué debes entender

RTL favorece pruebas parecidas al uso real. getByRole con nombre accesible suele ser la primera opción.

Cómo funciona

Queries accesibles detectan problemas de semántica. findBy espera asincronía; queryBy comprueba ausencia.

Ejemplo

screen.getByRole("button", { name: /guardar/i })

Pregunta típica

¿Cuándo usarías data-testid?

Respuesta Senior

Como último recurso cuando no existe una consulta semántica razonable, no como selector por defecto.

Repasar

Volver arriba ↑
★★★★★Mid → Senior🔥 Frecuente

Mocks, spies y fakes

Un mock controla una dependencia; un spy observa llamadas; un fake implementa una versión simplificada pero funcional.

10–15 min
🟢 Base🟡 Entrevista🔴 Senior

Qué debes entender

Un mock controla una dependencia; un spy observa llamadas; un fake implementa una versión simplificada pero funcional.

Cómo funciona

Sobre-mockear acopla pruebas a implementación. Es mejor simular límites externos que cada función interna.

Ejemplo

vi.spyOn(api, "save").mockResolvedValue({ ok: true });

Pregunta típica

¿Qué no mockearías?

Respuesta Senior

Lógica interna que forma parte de la unidad bajo prueba. Mockearía red, reloj o APIs difíciles, manteniendo integración entre componentes propios.

Repasar

Volver arriba ↑
★★★★★Mid🔥 Uso diario

Pruebas asíncronas y timers

Las pruebas deben esperar una condición observable, no dormir un tiempo arbitrario.

10–15 min
🟢 Base🟡 Entrevista🔴 Senior

Qué debes entender

Las pruebas deben esperar una condición observable, no dormir un tiempo arbitrario.

Cómo funciona

findBy y waitFor reintentan; fake timers controlan reloj, pero pueden interactuar con promesas y user-event.

Ejemplo

await screen.findByText(/guardado/i);

Pregunta típica

¿Por qué evitarías waitFor con muchas aserciones?

Respuesta Senior

Dificulta diagnóstico y puede reejecutar efectos. Esperaría una condición específica y después haría aserciones normales.

Repasar

Volver arriba ↑
★★★★★Mid → Senior🔥 Común

Cypress y Playwright

E2E valida la aplicación desplegada a través del navegador. Playwright destaca en múltiples contextos/navegadores; Cypress ofrece una experiencia integrada y depuración amigable.

10–15 min
🟢 Base🟡 Entrevista🔴 Senior

Qué debes entender

E2E valida la aplicación desplegada a través del navegador. Playwright destaca en múltiples contextos/navegadores; Cypress ofrece una experiencia integrada y depuración amigable.

Cómo funciona

Los tests deben controlar datos y aislarse. Esperas por estado son más estables que tiempos fijos.

Ejemplo

await page.getByRole("button", { name: "Comprar" }).click();

Pregunta típica

¿Cómo reducirías flaky tests?

Respuesta Senior

Datos deterministas, aislamiento, locators estables, esperar estados de negocio y eliminar sleeps; además observar traces y retries solo como diagnóstico.

Repasar

Volver arriba ↑