Skip to main content

Inicia sesión en CleanKata

Sigue tu progreso, gana XP y desbloquea todas las lecciones.

Al iniciar sesión aceptas nuestros Términos de uso y Política de privacidad.

Código Limpio70 XP7 min

Concurrencia: Pruebas con Jiggle

Las condiciones de carrera se esconden en brechas de tiempo — agitar el orden de ejecución con yields aleatorios y ejecuciones multiplataforma las expone.

Por Qué las Condiciones de Carrera Son Difíciles de Detectar

Los bugs de concurrencia dependen del tiempo: la ventana de carrera puede tener nanosegundos de ancho. Desaparecen bajo un depurador (la observación cambia el tiempo), pasan en tu máquina de desarrollo y explotan en producción bajo carga. Una prueba que pasa 1000 veces consecutivas en una máquina no demuestra seguridad de hilos — demuestra que ese patrón de tiempo particular no activó la carrera. La carrera sigue ahí; simplemente no la agitaste.

La Técnica del Jiggle

Las pruebas con jiggle desestabilizan deliberadamente el orden de ejecución para ampliar las ventanas de carrera: (1) inserta llamadas random.sleep() o thread.yield() en los puntos de cambio de hilo; (2) ejecuta la prueba miles de veces con diferentes semillas; (3) ejecuta en múltiples combinaciones de SO y hardware; (4) varía el número de hilos; (5) usa herramientas de pruebas de estrés. Jiggle automatizado + bucle de aserciones = una prueba de regresión de concurrencia.

Desafío de Código

Añade un arnés de jiggle para exponer la carrera, luego corrígela con un bloqueo.

💡Conclusión clave

Las pruebas con jiggle amplían las ventanas de carrera aleatorizando la planificación de hilos. Combínalas con muchas ejecuciones repetidas y ejecución multiplataforma para detectar bugs de concurrencia que las pruebas determinísticas pierden.

🔧 Algunos ejercicios pueden tener errores. Si algo parece incorrecto, usa el botón Feedback (abajo a la derecha) para reportarlo — nos ayuda a corregirlo rápido.

Pista: El jiggle no encuentra todos los bugs — aumenta la probabilidad de exponer los que existen. Ejecuta pruebas con jiggle miles de veces en diferentes plataformas.

✗ Tu versión

Concurrencia: Pruebas con Jiggle — CleanKata — CleanKata