Genera casos de prueba exhaustivos para cualquier función con este Prompt de IA

Why this prompt matters
Functions that handle money, authentication, or user permissions fail in production in exactly the ways a rushed happy-path test misses: a null price, an unknown user tier, a floating-point rounding edge case on a $0.01 item. A typical code review surfaces 3-5 test cases; this prompt generates 15-25 in 30 seconds, including the boundary conditions responsible for most 2am incidents.
What we use it for
You are reviewing a pull request that modifies billing calculation logic 20 minutes before standup. You need to confirm the tests cover all the critical cases — null inputs, boundary values, invalid user tiers — but writing them from scratch would take 45 minutes you do not have.
Prompt
Act as a senior QA engineer and software testing expert with 10+ years of experience in unit testing, integration testing, and test-driven development across multiple programming languages. I need comprehensive test coverage for the following function or feature: [PASTE YOUR FUNCTION DESCRIPTION OR CODE HERE] Language and framework: [e.g., Python with pytest, JavaScript with Jest, Java with JUnit 5, Go with the testing package, TypeScript with Vitest] Additional context (optional): - External dependencies: [e.g., PostgreSQL database, Stripe API, Redis cache] - Related functions: [describe any functions this calls or that call it] - Business rules: [any domain-specific constraints, e.g., "price can never be negative", "user tier must be one of: free, pro, enterprise"] Generate a complete test suite covering: 1. Happy path — all expected inputs producing correct outputs, including the most common real-world inputs 2. Edge cases — boundary values, empty strings, zero, negative numbers, null/undefined/None, maximum/minimum values, single-element lists, very long strings 3. Error scenarios — invalid types, out-of-range values, missing required parameters, exception-triggering inputs 4. Integration considerations — how this function interacts with any listed external dependencies; flag what would need mocking Constraints: - Use descriptive test names following this pattern: test_[scenario]_[expected_result] (or the equivalent convention for [LANGUAGE]) - Keep each test focused on ONE behavior — no multi-assertion mega-tests - Flag any test that requires mocking or a test fixture with a [REQUIRES MOCK] tag - Do not generate tests for implementation details — test behavior, not internals Output Format: Organize the output into four sections: ### Happy Path Tests ### Edge Case Tests ### Error Scenario Tests ### Integration Tests For each test, provide: - Test name - Input values - Expected output or behavior - One-sentence rationale (why this case matters) End with a Coverage Summary listing: total test count, which scenarios are covered, and any gaps that require additional context or manual testing.
Result
Happy Path Tests
test_calculate_discount_pro_user_returns_20_percent
Input: price=100.00, user_tier="pro", coupon_code=None
Expected: 80.00
Why: Validates the standard pro-tier discount (20%) on a round number.
test_calculate_discount_enterprise_user_with_coupon_stacks_discounts
Input: price=200.00, user_tier="enterprise", coupon_code="SAVE10"
Expected: 144.00 (40% enterprise + 10% coupon applied sequentially)
Why: Confirms discount stacking for enterprise users with valid coupons.
test_calculate_discount_free_user_no_discount
Input: price=49.99, user_tier="free", coupon_code=None
Expected: 49.99
Why: Free-tier users receive no discount; price must pass through unchanged.
Edge Case Tests
test_calculate_discount_zero_price_returns_zero
Input: price=0.00, user_tier="pro", coupon_code=None
Expected: 0.00
Why: Discounting a free item must never produce a negative price.
test_calculate_discount_very_small_price_rounds_correctly
Input: price=0.01, user_tier="enterprise", coupon_code=None
Expected: 0.01 (rounds up, never $0.00)
Why: Floating-point math on tiny prices often produces $0.006.
test_calculate_discount_price_at_max_float_boundary
Input: price=999999.99, user_tier="enterprise", coupon_code="SAVE10"
Expected: 539999.99 (within float tolerance plus or minus 0.01)
Why: Large prices expose floating-point precision errors at billing scale.
test_calculate_discount_expired_coupon_silently_ignored
Input: price=100.00, user_tier="pro", coupon_code="EXPIRED2023"
Expected: 80.00 (only tier discount; expired coupon ignored gracefully)
Why: Expired coupons must fail gracefully without surfacing exceptions to users.
Error Scenario Tests
test_calculate_discount_negative_price_raises_value_error
Input: price=-50.00, user_tier="pro", coupon_code=None
Expected: raises ValueError("Price cannot be negative")
Why: Negative prices signal upstream data corruption and must be caught at the boundary.
test_calculate_discount_unknown_tier_raises_value_error
Input: price=100.00, user_tier="vip", coupon_code=None
Expected: raises ValueError("Unknown user tier: vip")
Why: Unknown tiers should fail loudly, not silently default to free and deny earned discounts.
test_calculate_discount_none_price_raises_type_error
Input: price=None, user_tier="pro", coupon_code=None
Expected: raises TypeError
Why: None prices originate from missing database fields and cause arithmetic errors downstream.
Integration Tests
test_calculate_discount_coupon_lookup_calls_db_once [REQUIRES MOCK: CouponRepository]
Input: price=100.00, user_tier="pro", coupon_code="SAVE10"
Expected: CouponRepository.find called exactly once with "SAVE10"; result=81.00
Why: Ensures no redundant database calls when validating a single coupon.
test_calculate_discount_audit_log_created_on_success [REQUIRES MOCK: AuditLogger]
Input: price=100.00, user_tier="enterprise", coupon_code=None
Expected: AuditLogger.log called once with {original: 100.00, final: 60.00, tier: "enterprise"}
Why: Discount events must be auditable for finance reconciliation.
Coverage Summary
Total tests: 12 | Happy path: 3 | Edge cases: 4 | Error scenarios: 3 | Integration: 2
Gaps requiring additional context: concurrent coupon redemption (race condition, needs load-test harness); locale-specific rounding (JPY has no cents); single-use coupon redemption limits (needs business rule clarification).
Escribir casos de prueba exhaustivos es una de las tareas que más tiempo consume en el desarrollo de software, y también una de las primeras en recortarse cuando se acercan los plazos de entrega. La mayoría de los ingenieros cubren el camino feliz y unos pocos casos límite, dejando sin probar una larga cola de condiciones de error y valores frontera. Este Prompt soluciona eso generando un conjunto de pruebas completo y organizado a partir de una simple descripción de función.
Qué genera este Prompt
Proporciónale una descripción de función, tu lenguaje y Framework, y cualquier contexto relevante sobre dependencias o reglas de negocio. Devuelve cuatro categorías de pruebas organizadas: pruebas del camino feliz con las entradas reales más comunes, pruebas de casos límite que cubren valores frontera y entradas nulas/vacías, pruebas de escenarios de error para tipos inválidos y entradas que disparan excepciones, y pruebas de integración que indican exactamente qué necesitaría un Mock.
Cada prueba incluye un nombre descriptivo que sigue las convenciones de tu lenguaje, valores de entrada, comportamiento esperado y una justificación de una oración. Al final, un resumen de cobertura enumera las carencias que requieren contexto adicional, que es la parte más difícil de lograr en el control de calidad.
Por qué el Prompt está estructurado así
La sección de Rol configura a la IA como un experto en QA, no como un asistente genérico. Esto orienta el resultado hacia convenciones profesionales de pruebas —pruebas de responsabilidad única, aserciones de comportamiento y nombres descriptivos— en lugar de ejemplos improvisados.
Los campos de contexto entre [corchetes] son la parte más importante. El lenguaje y el Framework determinan las convenciones de nomenclatura y la sintaxis de las aserciones. Las dependencias externas determinan qué necesita un Mock. Las reglas de negocio determinan qué casos de error son críticos frente a los cosméticos. Omitir estos campos produce pruebas genéricas que no coinciden con tu código real.
La etiqueta [REQUIRES MOCK] evita el modo de fallo más común en las pruebas generadas por IA: omitir silenciosamente las pruebas de integración porque son más difíciles de escribir. La etiqueta las saca a la luz explícitamente para que sepas exactamente qué falta en la ejecución de pruebas.
El Resumen de Cobertura es lo que diferencia esto de una simple solicitud. Enumera las carencias —acceso concurrente, redondeo específico de la configuración regional, aplicación de cupones de un solo uso— que son precisamente los casos que los ingenieros olvidan preguntar hasta que fallan en producción.
Modelos compatibles
Este Prompt funciona mejor con Claude Sonnet 4.6, que maneja de forma fiable el formato de salida estructurada y genera resúmenes de cobertura precisos. GPT-4o y Gemini 1.5 Pro también producen resultados de alta calidad. Gemini 2.5 Flash es suficiente para pruebas simples de una sola función. Evita los modelos más pequeños o destilados para funciones con múltiples dependencias externas, ya que tienden a pasar por alto casos límite de integración.
Cuándo usar este Prompt
Acude a él cuando revises un Pull Request y necesites un análisis rápido pero completo de las carencias en las pruebas, cuando empieces TDD en una nueva función y quieras un andamio completo antes de escribir la implementación, o cuando audites código heredado con una cobertura de pruebas mínima. Atrapa el 80% de los casos que un ingeniero apurado pasaría por alto, en una fracción del tiempo.