Tipos de pruebas en desarrollo de software
Las pruebas de software se pueden clasificar de muchas formas. Dependiendo de la pregunta, la fase y el objetivo, se distinguen según el objeto de prueba, el nivel de prueba, el objetivo o la forma de ejecución. Este artículo ofrece una visión estructurada de los principales tipos de pruebas y muestra cuándo debes usar cada uno.
En resumen
- Los tipos de pruebas se distinguen por nivel, objetivo y ejecución.
- Los niveles principales son unitarias, integración, sistema y aceptación.
- Las pruebas funcionales verifican el qué, las no funcionales verifican el cómo.
- Las pruebas manuales y automatizadas se complementan, pero no se reemplazan mutuamente.
Clasificación por nivel de prueba
Prueba unitaria
Verifica la unidad más pequeña posible de forma aislada. Rápida, económica y con retroalimentación inmediata.
Prueba de integración
Verifica la interacción entre varios componentes o sistemas. Detecta errores en las interfaces.
Prueba de sistema
Verifica el sistema completo contra los requisitos definidos.
Prueba de aceptación
Verifica que el sistema sea aceptable desde el punto de vista del cliente o del usuario final.
Clasificación por objetivo de prueba
Pruebas funcionales
Verifican que el software cumple correctamente con las funciones requeridas.
- Pruebas unitarias: Verificación de funciones de forma aislada.
- Pruebas de integración: Verificación de la interacción entre componentes.
- Pruebas de sistema: Validación del sistema completo.
- Pruebas de regresión: Aseguran que los cambios no rompan funcionalidad existente.
- Pruebas de humo: Verificación mínima de que el sistema funciona básicamente.
Pruebas no funcionales
Verifican propiedades como rendimiento, seguridad, usabilidad o fiabilidad.
- Pruebas de rendimiento: Tiempo de respuesta, velocidad de procesamiento, escalabilidad.
- Pruebas de carga: Comportamiento bajo la carga esperada.
- Pruebas de estrés: Comportamiento bajo carga excesiva.
- Pruebas de seguridad: Identificación de vulnerabilidades.
- Pruebas de usabilidad: Verificación de la facilidad de uso.
- Pruebas de accesibilidad: Validación de la accesibilidad.
- Pruebas de fiabilidad: Verificación de la confiabilidad y disponibilidad.
Clasificación por forma de ejecución
Pruebas manuales
Una persona ejecuta las pruebas según casos de prueba definidos. Flexible, pero lenta y difícil de reproducir.
Pruebas automatizadas
Las herramientas ejecutan las pruebas. Rápidas, repetibles y escalables, pero requieren inversión inicial.
Pruebas exploratorias
El tester explora el software sin casos de prueba predefinidos para encontrar errores inesperados.
Ejemplo práctico: Tipos de pruebas para un sistema de comercio electrónico
Pruebas funcionales:
- Prueba unitaria: Cálculo de precio con descuento
- Prueba de integración: Carrito con base de datos y API de pago
- Prueba E2E: Proceso de compra desde login hasta confirmación de pedido
- Prueba de regresión: Repetición de pruebas críticas después de cada release
Pruebas no funcionales:
- Prueba de rendimiento: Llamada a checkout en menos de 500 milisegundos
- Prueba de carga: 1.000 usuarios simultáneos
- Prueba de seguridad: Intento de inyección SQL en el campo de búsqueda
- Prueba de accesibilidad: Operabilidad con lector de pantalla
Ejecución:
- Automatizadas: Unitarias, integración, E2E, rendimiento, regresión
- Manuales: Pruebas exploratorias, pruebas de usabilidad
Ventajas e inconvenientes
Ventajas
- Estructura: Las categorías claras ayudan a planificar estrategias de prueba.
- Enfoque en riesgos: Cada tipo de prueba cubre riesgos diferentes.
- Comunicación: Los stakeholders hablan con términos precisos.
- Eficiencia: La mezcla adecuada reduce esfuerzo y maximiza cobertura.
Inconvenientes
- Complejidad: Muchas categorías pueden resultar abrumadoras.
- Solapamientos: Una prueba puede asignarse a varias categorías.
- Esfuerzo: La cobertura exhaustiva requiere muchos tipos diferentes.
- Balance incorrecto: Demasiado enfoque en un tipo deja otros riesgos sin cubrir.
Puntos clave para examen
- Distinción por niveles: Unitarias, integración, sistema, aceptación.
- Distinción por objetivo: Funcionales, no funcionales.
- Distinción por ejecución: Manuales, automatizadas, exploratorias.
- Ejemplos de pruebas no funcionales.
- Importancia de las pruebas de regresión.
Preguntas típicas de examen (con respuesta corta)
-
¿Cuáles son los cuatro niveles de prueba habituales? Unitarias, integración, sistema, aceptación.
-
¿Cuál es la diferencia entre pruebas funcionales y no funcionales? Las pruebas funcionales verifican el comportamiento, las no funcionales verifican propiedades como rendimiento o seguridad.
-
¿Qué es una prueba de regresión? Una prueba que asegura que los cambios nuevos no han roto funcionalidad existente.
-
Menciona un tipo de prueba no funcional. Pruebas de rendimiento, carga, estrés, seguridad o usabilidad.
-
¿Qué son las pruebas exploratorias? Exploración libre del software sin casos de prueba predefinidos para encontrar errores.
Continúa en la ruta de aprendizaje de Testing
El siguiente artículo en la ruta de aprendizaje de Software Testing trata sobre Mock, Stub, Fake y Test Doubles — los diferentes tipos de Test Doubles y cuándo usarlos.
Fuentes principales
- https://iso25000.com
- https://martinfowler.com/testing/
- https://en.wikipedia.org/wiki/Software_testing



