En un proyecto de desarrollo de software pueden aparecer errores en cualquiera de las etapas del ciclo de vida, algunos de ellos incluso permanecen sin ser descubiertos, de ahí la importancia de las pruebas en desarrollo de software.
Hay una gran probabilidad de que el código final tenga errores tanto de requerimientos, como de diseño o de funcionalidad. Para identificar estos problemas antes de que ocurran en un entorno crítico, es necesario realizar pruebas de software, una parte muy importante del proceso pero también muy costosa; sin embargo, debemos en tener en cuenta que el coste debido a un fallo mientras está el software en funcionamiento puede llegar a ser mucho mayor.
Objetivos y atributos de las pruebas
De este modo, los objetivos principales al realizar pruebas serán los siguientes:
- Detectar un error específico.
- Descubrir errores no descubiertos antes.
- Tener un buen caso de prueba.
Además, los atributos que debería tener una buena prueba son:
- Intentar obtener la más alta probabilidad de encontrar un error.
- No debe ser redundante.
- No debe ser ni demasiado sencilla ni demasiado compleja.
Tipos de pruebas
La clasificación de las pruebas según la forma en que se ejecutan se clasifican en:
- Pruebas manuales: las que ejecuta el usuario paso a paso.
- Pruebas automáticas: consiste en el uso de otro software y la comparación de los resultados obtenidos y los esperados. Permite adicionar pruebas cuya ejecución manual sería tediosa y/o difícil.
También las pruebas se dividen en distintos niveles, que van desde probar módulos individuales hasta pruebas de todo el sistema en su conjunto. Los distintos niveles de pruebas son los siguientes:
- Pruebas unitarias: una prueba unitaria es la manera de comprobar el correcto funcionamiento de un módulo de código. Esto nos permite asegurar que todos los módulos del sistema desarrollado funcionen correctamente por separado.
- Pruebas de integración: Si hemos visto que todo individualmente funciona correctamente, ¿por qué debería fallar cuando se une? Pues sí, puede fallar al unir módulo que por separado funcionan correctamente. Para evitar esto, existen las pruebas de integración, cuyo objetivo es coger módulos, a los que se aplicó las pruebas de unidad, y construir una estructura de programa que determine el diseño.
- Pruebas de validación: Se realizan al acabar las pruebas de integración, cuando ya se ha compuesto el software como sistema y se han corregido los errores de interfaz. Estas pruebas se concentran en las acciones visibles para el usuario.
- Pruebas de sistema: Estas pruebas están mas allá del alcance del proceso del software y no las realizan únicamente los ingenieros de software. Se comprueba también el nivel de seguridad del sistema, se hacen pruebas de resistencia que permiten saber como responderá el sistema a situaciones anormales de recursos y pruebas de recuperación y de rendimiento.
- Pruebas de aceptación: El usuario lo prueba en su propio entorno y nos dice si lo acepta tal y como está o no.
Como conclusión podemos decir que las pruebas de software permiten la ejecución de un sistema con el objetivo principal de encontrar errores presentes en el mismo; así conseguimos reducirlos y mejorar la calidad del sistema, haciéndolo más robusto frente a fallos.
Tomado de YunBitSoftware