¿Qué son las pruebas de software?
Las pruebas están destinadas a mostrar que el software cumpla con los requerimientos establecidos y descubrir posibles defectos antes de ponerlo en uso. Hacer pruebas no demuestra en su totalidad que el software está libre de defectos o que su comportamiento es especificado en cada circunstancia. Cuando se prueba software se intentan hacer dos cosas:
- Pruebas de validación (validation testing): demostrar al desarrollador y al cliente que el software conoce sus requerimientos.
- Pruebas de defectos (defect testing): encontrar entradas donde el comportamiento del software es incorrecto, no deseado o no conforme a sus especificaciones. Estos son causados por defectos en el software.
La siguiente figura muestra el proceso tradicional para probar software; los casos de prueba son especificaciones de las entradas a la prueba y la salida esperada del sistema (los resultados de la prueba), más una declaración de lo que se está probando. Los datos de prueba son las entradas que han sido aconsejadas para probar el sistema. Los datos a veces pueden ser generados automáticamente. Las personas que entienden lo que se supone que debe hacer el sistema deben participar para especificar los resultados esperados de la prueba. Sin embargo, la ejecución de las pruebas puede ser automatizada. Los resultados de las pruebas son automáticamente comparados con los resultados predecidos. Por lo tanto, no es necesario que una persona busque errores y anomalías en la ejecución de la prueba.
Por lo general, un sistema de software comercial tiene que pasar por tres etapas de prueba:
- Pruebas de desarrollo (development testing), donde el sistema es probado durante el desarrollo para descubrir bugs o defectos. Comúnmente los diseñadores y programadores participan en este proceso de prueba; hay tres etapas de pruebas de desarrollo:
- Pruebas unitarias (unit testing): donde unidades del programa individual o clases de objeto son probadas. Se enfoca en probar la funcionalidad de objetos o métodos.
- Pruebas de componente (component testing): donde varias unidades individuales son integradas para crear componentes compuestos. Se enfoca en probar las interfaces del componente que provee acceso a las funciones del componente.
- Pruebas de sistema (system testing): donde algunos o todos los componentes en un sistema son integrados y el sistema se prueba como un todo. Se enfoca en probar la interacción entre componentes.
- Pruebas de lanzamiento (release testing), donde un equipo de pruebas separado prueba una versión completa del sistema antes de que sea lanzado a los usuarios. El objetivo de estas pruebas es revisar que el sistema conoce los requerimientos de los stakeholders del sistema.
- Pruebas de usuario (user testing), donde los usuarios o usuarios potenciales del sistema prueban el sistema en sus propios ambientes. El “usuario” puede ser un grupo interno que decide si el software puede lanzarse.
Bibliografía: Sommerville, Ian, Software Engineering, (10th edition). Addison Wesley, 2016.
Comentarios
Publicar un comentario