Las pruebas de software, como su nombre indica, son pruebas que se realizan a todo o a parte de un programa o aplicación. Este proceso tiene el objetivo de búsqueda de errores. Es decir, se utilizan básicamente para buscar errores ocultos que no salieron a la luz durante el diseño y desarrollo de la aplicación, y al mismo tiempo asegurar la calidad y reducir el mantenimiento. Son pruebas automáticas pero que requieren tiempo para crearlas, pero una vez creadas pueden ser lanzadas tantas veces como queremos de forma totalmente automática. Por tanto, se pueden definir un conjunto de pruebas, las cuales se planifican por adelantado y ejecutar una vez construido el código, o durante su construcción, para comprobar tanto su funcionamiento y sus posibles aciertos o errores de otras etapas, sobre todo la etapa de diseño.
Por otra parte siempre debemos tener en cuenta que las pruebas de software son distintas a las pruebas de calidad y nunca las sustituyen, es decir, se utilizan para validar que el software sea de calidad. No debemos olvidar que cubrir la totalidad de los posibles casos de ejecución de una aplicación es muy complicado, por lo que la prueba o test sólo garantiza que los escenarios probados funcionan correctamente.
En todas las aplicaciones o software de cualquier ámbito, se pueden realizar una serie de pruebas que se pueden clasificar en distintos niveles de profundidad. A continuación, os muestro los tipos de pruebas ordenadas, desde el más bajo nivel a más alto nivel:
Las pruebas unitarias de software o pruebas de unidad se encargan de probar el funcionamiento de cada unidad de código que compone el software. Estas unidades mínimas de código son las funciones en programación estructurada, métodos en clases en metodologías orientadas a objetos y otros módulos o archivos de pequeña longitud de código. El porqué de utilizar bloques pequeños de código es que permiten ver como actúan por separado y permiten comprobar su efectivo funcionamiento de forma separada del resto del código de la aplicación.
Vamos a analizar algunas de las herramientas disponibles para realizar pruebas de software a diferentes niveles. Para pruebas unitarias, podemos encontrar:
En una etapa más tardía se utilizan otro tipo de pruebas de software, exactamente las pruebas de integración. Estas pruebas comprueban que la combinación de los diferentes elementos unitarios del programa (funciones y/o clases) responde al funcionamiento esperado. En este ámbito, también se puede hablar de pruebas de regresión, cuando se introduce un nuevo elemento o una modificación y se quiere comprobar su integración con lo que ya había anteriormente.
En cuanto a las herramientas disponibles para realizar pruebas de integración, encontramos varias soluciones:
Casi todas estas herramientas incluyen un mecanismo de comunicación con sistemas de control de versiones, como son Git, Mercurial o Subversion, de forma que podemos lanzar automáticamente las pruebas en cuanto subamos los cambios al repositorio en cuestión.
En la siguiente etapa se realizan las pruebas de aceptación o validación determinan si se cumplen los requisitos del sistema establecidos en la etapa de análisis, y por lo tanto, si la aplicación cumple con lo que el usuario encomendó en su momento.
Para realizar pruebas de validación, además de que el propio usuario final pruebe la aplicación y determine posibles errores o inconsistencias con los requisitos planteados, podemos emplear algunas herramientas que ayuden a automatizar.
Las pruebas de sistema son pruebas de software que comprueban que la implantación de la aplicación en su entorno real de producción es acorde a lo previsto, y su comportamiento es el esperado.