- Inicio
- Habilidades
- Pruebas
- Generador de Casos de Prueba
Generador de Casos de Prueba
Genera casos de prueba completos a partir de firmas de funcion — happy path, casos borde y errores.
El Problema
Escribir tests es la parte que los desarrolladores mas se saltan — no porque sea dificil, sino porque pensar en todos los escenarios es mentalmente agotador. Happy path? Facil. Pero que hay de inputs vacios, valores limite, acceso concurrente, strings Unicode, numeros negativos y casos borde de zona horaria? La IA puede generar una suite de tests completa en segundos pensando sistematicamente en cada categoria de input.
El Prompt
Genera casos de prueba completos para la siguiente funcion. Necesito tests de calidad produccion que pueda ejecutar inmediatamente.
FUNCION:
[pega tu funcion o metodo de clase aqui]
FRAMEWORK DE TESTING: [ej. Jest, Vitest, pytest, Go testing, JUnit]
LENGUAJE: [ej. TypeScript, Python, Go, Java]
Genera tests cubriendo:
1. **Happy Path** — Inputs y outputs normales esperados (3-5 casos)
2. **Casos Borde** — Valores limite, inputs vacios, colecciones de un elemento, valores maximos
3. **Casos de Error** — Inputs invalidos, null/undefined, tipos incorrectos, valores fuera de rango
4. **Caracteres Especiales** — Unicode, emojis, entidades HTML, metacaracteres SQL
5. **Comportamiento Asincrono** (si aplica) — Race conditions, timeouts, promesas rechazadas
6. **Logica de Negocio** — Reglas especificas del dominio que podrian romperse silenciosamente
Para cada test:
- Usar nombres descriptivos que expliquen el escenario ("debe retornar array vacio cuando input es null")
- Incluir estructura arrange, act, assert
- Agregar comentarios inline explicando POR QUE cada caso borde importa
Genera el archivo de tests completo listo para guardar y ejecutar.
Ejemplo de Salida
describe('calculateDiscount', () => {
// Happy path
it('debe aplicar 10% de descuento para ordenes mayores a $100', () => {
expect(calculateDiscount(150, 'AHORRA10')).toBe(135);
});
// Caso borde: limite exacto
it('debe aplicar descuento cuando la orden iguala el umbral minimo exactamente', () => {
expect(calculateDiscount(100, 'AHORRA10')).toBe(90);
});
// Caso de error: precio negativo
it('debe lanzar RangeError para montos de orden negativos', () => {
expect(() => calculateDiscount(-50, 'AHORRA10')).toThrow(RangeError);
});
// Logica de negocio: cupon expirado
it('debe retornar precio completo para codigos de cupon expirados', () => {
expect(calculateDiscount(200, 'EXPIRADO2024')).toBe(200);
});
});
Cuando Usar
Usar al escribir una nueva funcion o al refactorizar una existente. Especialmente valioso cuando necesitas alcanzar un umbral de cobertura, al probar logica de negocio compleja con muchas condiciones, o al escribir tests para codigo que no escribiste. Pega la funcion y obtendras un archivo de tests completo de un solo golpe.
Tips Pro
- Incluir los tipos/interfaces — pega los tipos TypeScript o data classes relacionados junto a la funcion para que la IA entienda el contrato completo.
- Pedir tests a prueba de mutaciones — agregar “Asegurate de que estos tests fallen si cualquier linea de la funcion original fuera eliminada o cambiada” para atrapar assertions debiles.
- Generar primero una matriz de cobertura — pedir “Antes de escribir codigo, lista cada escenario de prueba en una tabla con input, output esperado y categoria” para revisar el plan antes de generar.