- Inicio
- Habilidades
- Pruebas
- Buscador de Casos Borde
Buscador de Casos Borde
Descubre los casos borde ocultos que tus tests no cubren — valores limite, race conditions y combinaciones inesperadas.
El Problema
Tus tests pasan, tu cobertura se ve decente, pero los bugs siguen llegando a produccion. El problema no son los tests que escribiste, sino los escenarios en los que nunca pensaste. Valores limite, estados vacios, modificaciones concurrentes, formatos dependientes del locale y trampas de coercion de tipos se esconden a plena vista. Pensar manualmente en casos borde para cada funcion es lento y esta sesgado por tus propias suposiciones.
El Prompt
Analiza el siguiente codigo e identifica cada caso borde que NO esta actualmente testeado. Piensa como un ingeniero del caos — que inputs, estados o condiciones de timing podrian romper este codigo?
CODIGO:
[pega tu funcion, modulo o endpoint de API]
TESTS EXISTENTES (si los hay):
[pega el archivo de tests actual o describe que esta cubierto]
Para cada caso borde encontrado:
1. **Escenario** — descripcion en una linea de que podria fallar
2. **Por que importa** — la situacion real que lo dispara
3. **Nivel de riesgo** — alto / medio / bajo
4. **Codigo de test** — un test listo para ejecutar en [Jest/Vitest/pytest/tu framework]
Categorias a explorar:
- Valores limite (0, -1, MAX_INT, string vacio, un solo caracter)
- Trampas de coercion de tipos (null vs undefined, "0" vs 0, NaN)
- Concurrencia (llamadas paralelas, closures obsoletos, race conditions)
- Locale/codificacion (Unicode, texto RTL, emojis, caracteres multi-byte)
- Transiciones de estado (sin inicializar, parcialmente cargado, expirado)
- Limites de recursos (memoria, timeout, rate limits, tamano de archivo)
Ordenar resultados por nivel de riesgo, el mas alto primero.
Ejemplo de Salida
// RIESGO ALTO: Array.sort() con tipos mixtos causa corrupcion silenciosa
it('debe manejar array con numeros y strings numericos', () => {
expect(sortProducts([{price: 10}, {price: '9'}, {price: 100}]))
.toEqual([{price: '9'}, {price: 10}, {price: 100}]);
});
// RIESGO MEDIO: Limite de zona horaria a medianoche UTC
it('debe asignar fecha correctamente cuando el timestamp es exactamente medianoche UTC', () => {
expect(getBusinessDay(new Date('2026-01-01T00:00:00.000Z'), 'America/Mexico_City'))
.toBe('2025-12-31');
});
Cuando Usar
Ejecutar despues de tener una suite de tests inicial y querer fortalecerla antes de un release. Es especialmente poderoso para logica de pagos, manejo de fechas/horas, procesamiento de input de usuario y cualquier funcion que interactue con datos externos. Combinalo con tests de mutacion para verificar que tus nuevos casos borde realmente detectan bugs reales.
Tips Pro
- Alimentalo con tu bug tracker — pega bugs recientes de produccion y pregunta “Que categorias de casos borde sugieren estos bugs que estoy perdiendo sistematicamente?”
- Combinar con fuzzing — usar los casos borde generados por IA como inputs semilla para bibliotecas de property-based testing como fast-check o Hypothesis.
- Ejecutar sobre interfaces, no implementaciones — pegar tipos TypeScript o schemas de API para encontrar casos borde a nivel de contrato antes de que exista codigo.
- Iterar con “que mas” — despues del primer lote, preguntar “Que 5 casos borde adicionales no listaste porque parecian improbables pero serian catastroficos?”