pruebas funcionales

Qué Son las Pruebas Funcionales y Cómo Ejecutarlas: Guía Práctica para QA 2026

Las pruebas funcionales verifican que tu aplicación hace exactamente lo que debe hacer. Si eres nuevo en QA, dominar este tipo de testing es tu primer paso hacia una carrera exitosa. Esta guía te enseñará qué son, cómo ejecutarlas y te dará ejemplos prácticos que podrás aplicar inmediatamente.

Definición de Pruebas Funcionales

Las pruebas funcionales validan que cada función de tu software opera conforme a los requisitos especificados. Se enfocan en el “qué hace” la aplicación, no en “cómo lo hace” internamente. Introduces un input, ejecutas una acción y verificas que el output sea el esperado.

Por ejemplo: en un formulario de login, ingresas usuario y contraseña correctos, haces clic en “Iniciar Sesión” y verificas que el sistema te redirija al dashboard. Eso es una prueba funcional básica.

Diferencia con Otros Tipos de Pruebas

Las pruebas funcionales se diferencian de:

Pruebas no funcionales: Evalúan rendimiento, seguridad, usabilidad. No verifican funcionalidad específica.

Pruebas unitarias: Los desarrolladores las ejecutan sobre fragmentos pequeños de código. Las funcionales prueban el sistema completo o módulos enteros.

Pruebas de integración: Verifican que diferentes módulos trabajen juntos correctamente. Las funcionales pueden incluir esto pero se enfocan en validar requisitos del usuario.

Tipos de Pruebas Funcionales

Pruebas de Humo (Smoke Testing)

Verifican funcionalidades críticas básicas después de un nuevo build. Son rápidas y superficiales: ¿la aplicación arranca? ¿puedes hacer login? ¿las páginas principales cargan?

Ejemplo práctico: Acabas de recibir una nueva versión de tu app de e-commerce. Verificas:

  • La página de inicio carga
  • Puedes buscar un producto
  • Agregar al carrito funciona
  • El proceso de checkout inicia

Si cualquiera falla, rechazas el build sin pruebas exhaustivas.

Pruebas de Sanidad (Sanity Testing)

Más enfocadas que las de humo. Verificas que una función específica o bug corregido funciona tras cambios menores.

Ejemplo práctico: Los desarrolladores corrigieron un bug donde el botón “Aplicar cupón” no funcionaba. Tu prueba de sanidad verifica únicamente:

  • El botón aparece
  • Responde al clic
  • Aplica el descuento correctamente
  • Muestra mensaje de confirmación

Pruebas de Regresión

Confirman que nuevos cambios no rompieron funcionalidades existentes. Se ejecutan después de cada actualización significativa.

Ejemplo práctico: Agregaron un nuevo método de pago. Ejecutas tus casos de prueba completos para verificar que pagos existentes (tarjeta, PayPal, transferencia) siguen funcionando perfectamente.

Pruebas End-to-End

Simulan escenarios completos de usuario desde inicio hasta fin, atravesando múltiples funcionalidades.

Ejemplo práctico: Flujo completo de compra:

  1. Usuario se registra
  2. Busca un producto
  3. Agrega tres artículos al carrito
  4. Aplica un cupón de descuento
  5. Completa el checkout
  6. Recibe email de confirmación

Verificas cada paso y la interacción entre todos los módulos involucrados.

Cómo Diseñar Casos de Prueba Funcionales

Estructura Básica de un Caso de Prueba

Todo caso de prueba funcional necesita:

ID del Caso: Identificador único (TC001, TC002)

Título: Descripción breve y clara

Precondiciones: Estado necesario antes de ejecutar

Pasos de Ejecución: Acciones específicas a realizar

Datos de Entrada: Información que ingresarás

Resultado Esperado: Qué debe suceder

Resultado Real: Qué sucedió efectivamente

Estado: Pasó/Falló

Ejemplo Real: Caso de Prueba de Login

ID: TC-LOGIN-001
Título: Verificar login con credenciales válidas

Precondiciones:
- Usuario registrado existe en el sistema
- Usuario: testuser@example.com
- Contraseña: Test1234!

Pasos:
1. Abrir la página de login
2. Ingresar email en campo "Correo electrónico"
3. Ingresar contraseña en campo "Contraseña"
4. Hacer clic en botón "Iniciar Sesión"

Datos de Entrada:
Email: testuser@example.com
Password: Test1234!

Resultado Esperado:
- Usuario es redirigido al dashboard
- Mensaje de bienvenida aparece: "Hola, Test User"
- Sesión activa por 30 minutos

Resultado Real: (completas después de ejecutar)
Estado: (Pass/Fail)

Técnicas para Diseñar Buenos Casos

Partición de equivalencia: Divide inputs en grupos válidos e inválidos. Prueba un representante de cada grupo.

Ejemplo para campo “Edad”:

  • Válido: 18-100 años (prueba con 25)
  • Inválido bajo: menos de 18 (prueba con 15)
  • Inválido alto: más de 100 (prueba con 105)

Análisis de valores límite: Prueba los bordes de rangos válidos.

Para el mismo campo edad:

  • 17 (justo antes del mínimo)
  • 18 (mínimo válido)
  • 19 (justo después del mínimo)
  • 99 (justo antes del máximo)
  • 100 (máximo válido)
  • 101 (justo después del máximo)

Pruebas de flujo de trabajo: Sigue secuencias lógicas de usuario real.

Proceso de Ejecución Paso a Paso

Fase 1: Preparación

Entender requisitos: Lee la documentación, historias de usuario y criterios de aceptación. Si algo no está claro, pregunta antes de diseñar pruebas.

Configurar ambiente de pruebas: Asegúrate de tener acceso al ambiente correcto con datos de prueba adecuados. No pruebes en producción.

Preparar datos: Crea usuarios de prueba, productos ficticios, datos de tarjetas de prueba. Herramientas como Mockaroo generan datos realistas rápidamente.

Fase 2: Ejecución

Ejecuta metódicamente: Sigue cada paso exactamente como está escrito. No improvises ni saltes pasos.

Documenta mientras pruebas: Registra resultados inmediatamente. Capturas de pantalla son invaluables cuando encuentras bugs.

Varía datos de entrada: No uses siempre los mismos valores. Cambia nombres, números, fechas para descubrir bugs ocultos.

Prueba en diferentes navegadores: Chrome, Firefox, Safari, Edge. Las funcionalidades pueden comportarse diferente.

Fase 3: Reportar Resultados

Bugs encontrados: Repórtalos inmediatamente con información completa:

  • Pasos exactos para reproducir
  • Resultado esperado vs actual
  • Capturas de pantalla o video
  • Ambiente (navegador, OS, versión)
  • Severidad y prioridad

Casos que pasaron: Márcalos como exitosos pero mantén evidencia (screenshots de confirmación).

Métricas útiles:

  • Total de casos ejecutados
  • Casos pasados/fallados
  • Porcentaje de éxito
  • Bugs encontrados por severidad

Ejemplo Completo: Probando Funcionalidad de Búsqueda

Vamos a probar la función de búsqueda de un e-commerce paso a paso.

Caso 1: Búsqueda Exitosa

ID: TC-SEARCH-001
Título: Búsqueda con término válido retorna resultados

Pasos:
1. Ir a página principal
2. Localizar barra de búsqueda
3. Ingresar "laptop"
4. Presionar Enter o clic en lupa

Resultado Esperado:
- Página de resultados carga en menos de 3 segundos
- Muestra al menos 1 producto
- Cada producto contiene "laptop" en título o descripción
- Contador muestra número total de resultados

Ejecutando:
- Ingreso "laptop" → 47 resultados aparecen
- Tiempo de carga: 1.2 segundos
- Todos contienen la palabra "laptop"
- Contador: "47 resultados para 'laptop'"

Estado: PASS ✓

Caso 2: Búsqueda Sin Resultados

ID: TC-SEARCH-002
Título: Búsqueda sin resultados muestra mensaje apropiado

Pasos:
1. En barra de búsqueda ingresar "xyzabc123"
2. Presionar Enter

Resultado Esperado:
- Mensaje: "No encontramos productos para 'xyzabc123'"
- Sugerencias de búsquedas populares aparecen
- No muestra productos irrelevantes

Ejecutando:
- Ingreso término inexistente
- Aparece mensaje correcto
- 5 sugerencias de categorías populares
- Página limpia sin productos

Estado: PASS ✓

Caso 3: Búsqueda con Caracteres Especiales

ID: TC-SEARCH-003
Título: Búsqueda con caracteres especiales no genera error

Pasos:
1. Ingresar en búsqueda: "laptop <script>alert('test')</script>"
2. Ejecutar búsqueda

Resultado Esperado:
- Sistema sanitiza input correctamente
- No ejecuta scripts maliciosos
- Muestra resultados válidos o mensaje "sin resultados"
- No genera error 500

Ejecutando:
- Sistema procesa búsqueda normalmente
- No ejecuta JavaScript
- Muestra resultados para "laptop script alert test"
- Todo funciona correctamente

Estado: PASS ✓

Caso 4: Bug Encontrado

ID: TC-SEARCH-004
Título: Filtros mantienen estado después de búsqueda

Pasos:
1. Buscar "laptop"
2. Aplicar filtro "Precio: $500-$1000"
3. Aplicar filtro "Marca: Dell"
4. Hacer nueva búsqueda: "mouse"

Resultado Esperado:
- Filtros se resetean para nueva búsqueda
- Muestra todos los mouse sin filtros previos

Resultado Real:
- Filtros de precio y marca permanecen aplicados
- Muestra solo mouse Dell entre $500-$1000
- Esto confunde al usuario

Estado: FAIL ✗

Bug reportado: BUG-237

Herramientas para Pruebas Funcionales

Herramientas de Gestión

Jira: Gestión de proyectos donde documentas casos de prueba en tickets y reportas bugs.

TestRail: Específica para testing. Organiza casos, ejecuta test runs, genera reportes automáticos.

Zephyr: Plugin de Jira para gestión completa de pruebas integrada.

Herramientas de Ejecución

Navegadores: Chrome DevTools para inspeccionar elementos, Network tab para ver requests.

Postman: Probar APIs funcionales antes de que exista interfaz gráfica.

BrowserStack: Ejecutar pruebas funcionales en múltiples navegadores y dispositivos reales.

Herramientas de Captura

Loom: Graba video de pantalla mostrando bugs en acción.

Snagit: Capturas de pantalla anotadas profesionalmente.

Chrome Extensions: Nimbus Screenshot, Awesome Screenshot para capturas rápidas.

Mejores Prácticas

Mantén casos simples: Un caso prueba una funcionalidad. No combines múltiples validaciones en un caso enorme.

Usa datos realistas: Nombres como “Test User” y emails “test@test.com” pueden no revelar problemas con caracteres especiales o nombres largos.

Prueba el camino feliz primero: Verifica que el flujo ideal funciona antes de buscar casos edge.

No asumas nada: Si el requisito no lo especifica, pregunta. “El botón debe ser azul” vs “El botón debe ser visible” son cosas diferentes.

Actualiza casos regularmente: Cuando cambian requisitos, actualiza tus casos. Casos desactualizados son peores que no tener casos.

Colabora con desarrollo: Entiende cómo funciona técnicamente. Esto te ayuda diseñar mejores pruebas.

Errores Comunes de Principiantes

Probar demasiado rápido: Tómate tiempo. Las pruebas apresuradas pierden bugs.

No verificar mensajes: Valida que mensajes de error/éxito sean correctos, claros y útiles.

Ignorar casos negativos: Probar solo inputs válidos no es suficiente. Intenta romper la aplicación.

No documentar pasos exactos: “Hice login y falló” no ayuda. Necesitas cada paso detallado.

Asumir que funcionará en todos los navegadores: Siempre prueba cross-browser para funcionalidades críticas.

Conclusión

Las pruebas funcionales son el fundamento del QA. Verifican que tu aplicación cumple su propósito básico: funcionar correctamente según requisitos. Dominar este tipo de testing te abre puertas a roles más avanzados.

Empieza simple: elige una funcionalidad pequeña, diseña 3-5 casos de prueba básicos y ejecútalos metódicamente. Documenta todo. Con práctica constante, desarrollarás el ojo crítico que distingue a un QA excelente.

Las pruebas funcionales nunca pasarán de moda. Son tu primera línea de defensa contra bugs que afectan usuarios reales.

JEscorcia
JEscorcia