Las pruebas son una parte integral del ciclo de vida del desarrollo de software (Software Development Lifecycle) y son la forma de garantizar y asegurar, entre otras cosas, la funcionalidad, el rendimiento y la experiencia de uso. Las pruebas de software pueden ser realizadas manualmente a través de la automatización o de forma híbrida y pueden clasificarse entre funcionales y no funcionales.
Mike Cohn creó una estructura en forma de pirámide para permitir a los equipos que trabajan con metodologías ágiles organizar las pruebas. Así nacía el concepto de la “Pirámide de Cohn”, que fue publicada en 2009 en su libro ‘Succeeding with Agile’ y presenta la siguiente estructura:
Tipos de pruebas de software
A continuación, te presentamos los tipos de pruebas de software relacionados con la Pirámide de Cohn y otros adicionales, clasificados en funcionales y no funcionales.
Pruebas funcionales
Las pruebas funcionales son aquellas que garantizan que las características y las funcionalidades del software se comportan según lo esperado. A su vez, las podemos subclasificar en las siguientes:
Pruebas unitarias
Están centradas en la parte más pequeña del diseño del software. Se trata de probar una unidad individual o bien un grupo de unidades relacionadas entre sí. Se hace utilizando una entrada de muestra y observando las salidas correspondientes.
Pruebas de integración
Este tipo de pruebas tiene como objetivo tomar componentes probados por unidad y construir una estructura de programa que haya sido previamente diseñada. Son pruebas en las que un grupo de componentes se combinan para producir unos resultados.
Pruebas de interfaz
Tienen como objetivo validar la interfaz gráfica de usuario conforme a los requisitos. Esta prueba incluye comprobaciones como el tamaño de los botones, la alineación del texto, las tablas y su contenido, y el menú de la aplicación, entre otras.
Pruebas de regresión
Consisten en probar una aplicación que ha sido modificada previamente para comprobar que no se han introducido defectos nuevos en ninguna otra parte.
Pruebas de humo (Smoke Testing)
Esta prueba es realizada para asegurarse de que el software que se está probando esté listo o estable para continuar realizando más pruebas. Comprueba que no existe ningún «defecto de tapón» o show stopper en la construcción.
Pruebas No Funcionales
Son aquellas pruebas que verifican los requisitos basados en la operación de un software, no en la funcionalidad en sí. Dichas pruebas pueden ayudarnos a determinar, entre otras cosas, la carga que soporta el producto, si su rendimiento es el correcto o si está estable a nivel de contacto con el servidor. A su vez, las podemos subclasificar en las siguientes:
Pruebas de rendimiento
Sirven para probar el rendimiento en tiempo de ejecución del software dentro del contexto de un sistema integrado y se utilizan para probar la velocidad y la eficacia del programa. También se emplean para saber qué carga se usa o qué carga de trabajo máxima puede manejar un sistema.
Pruebas de estrés
Se realizan cuando un sistema se pretende forzar más allá de sus especificaciones para verificar cómo y cuándo falla. Se le dan condiciones desfavorables al sistema y se comprueba cómo funciona bajo una carga pesada. Por ejemplo, una prueba de este tipo sería el múltiple logueo de usuarios en un pequeño espacio de tiempo
Pruebas de volumen
Consisten en someter al software o a la aplicación a una gran cantidad de datos para verificar el comportamiento y el tiempo de respuesta en ese tipo de situaciones. Grandes volúmenes de datos pueden afectar al rendimiento del sistema y a la velocidad del tiempo de procesamiento.
Pruebas de robustez
Las pruebas de robustez son realizadas para comprobar si el software, la aplicación o el sitio web están protegidos frente a amenazas internas y externas. Ayudan a determinar en qué medida está protegido de programas maliciosos y virus el software, la aplicación o el site y cómo de seguros y sólidos son los procesos de autorización y autenticación. También verifican cómo se comporta el software ante cualquier ataque de piratas informáticos y cómo se mantiene el software para la seguridad de los datos después de dicho ataque.
Pruebas de escalabilidad
Son un tipo de pruebas que validan el comportamiento y ejecución del software en un entorno, servidores web, hardware y entorno de red diferentes. Las pruebas de compatibilidad aseguran la ejecución del software en una configuración diferente, una base de datos diferente, distintos navegadores y sus versiones.
Pruebas de recuperación
Otro de los tipos de pruebas de software son las pruebas de recuperación, que validan cómo de rápido la aplicación o el sistema se recupera de fallas o desastres. Determina si el sistema puede continuar con la operación después de un desastre o inconveniente.
Pruebas de usabilidad
Las pruebas de usabilidad verifican la facilidad de uso para saber si un nuevo usuario puede entender o usar la aplicación intuitivamente. Si un usuario encuentra dificultades o no entiende cómo realizar una acción en algún momento, se debe documentar.
En Hiberus somos expertos en QA Services y Testing. Configuramos tu ecosistema de herramientas QA en función de tu proyecto para asegurar la calidad del software, reducir el tiempo en validación de releases y el time-to-market, prevenir los defectos de alta gravedad, minimizar las incidencias y reducir el coste total de pruebas.
¿Quieres más información sobre nuestros servicios de QA?
Contacta con nuestro equipo de expertos en QA y Testing
The blog discusses the types of software testing according to Cohn’s Pyramid. This model emphasizes the importance of a testing strategy that includes unit tests, integration tests, system tests, and acceptance tests, with a focus on the balance between the levels. It highlights how unit tests are crucial for early detection of defects, while higher-level tests ensure the software meets user requirements and integrates well with other systems.
This blog on «Types of Software Testing According to Cohn’s Pyramid» is exceptionally well-written and informative. It provides a clear and insightful breakdown of the different levels of testing as outlined in Cohn’s Pyramid, making complex concepts accessible and understandable. The detailed explanations and practical examples offered enhance the reader’s comprehension of each testing type’s role and importance. Kudos for delivering such a valuable resource that effectively illuminates the nuances of software testing!