Ciclos de Vida y Niveles de Pruebas en el Desarrollo de Software
La Armonía entre Desarrollo y Pruebas de Software
Las actividades de construcción de software y las de pruebas deben convivir armoniosamente. Una concepción aislada del testing no es productiva. Por lo tanto, se requieren planteamientos de pruebas acordes a los diversos ciclos de vida del desarrollo.
Modelos de Ciclo de Vida y Niveles de Pruebas
Así, en un ciclo de vida del tipo modelo en V o secuencial, típicamente buscaremos relacionar los niveles de construcción con los niveles de pruebas: componentes, integración, sistema y aceptación.
Relación entre el Modelo en V de Software y los Niveles de Pruebas ISTQB
(Este apartado hace referencia a un diagrama conceptual que ilustra la correspondencia entre las fases del Modelo en V de desarrollo de software y los niveles de pruebas definidos por ISTQB.)
Si, por el contrario, optamos por modelos de construcción iterativos (o incrementales), como los modelos de desarrollo ágil, por ejemplo, aplicaremos al resultado de cada iteración niveles de pruebas (componentes, integración, sistema y aceptación) acordes a su tamaño y alcance. La naturaleza incremental del proceso nos llevará de forma natural a potenciar aspectos como la regresión o la automatización a todos los niveles (¡por pura supervivencia!).
Niveles de Pruebas de Software: Un Recorrido Detallado
Pruebas Unitarias
La capa más externa nos presenta las Pruebas Unitarias. Suelen ser pruebas relativamente pequeñas y numerosas. Se tiende a envolver con ellas buena parte de los objetos, clases o módulos construidos. Se pueden incluir pruebas funcionales y no funcionales, lanzándose típicamente con acceso al código en construcción y con el apoyo de entornos de desarrollo. Suelen dar lugar a la detección de defectos que son corregidos rápidamente por el desarrollador.
Pruebas de Componentes
El siguiente nivel, Pruebas de Componentes, es muy similar al de Pruebas Unitarias. La complejidad de los elementos a probar nos marca si existe diferencia entre ellas y el aislamiento del resto de elementos a probar nos marca la frontera con la siguiente capa.
Pruebas de Integración
Llegamos a una capa más «sabrosa», el nivel de Pruebas de Integración. Estas pruebas suelen ser realizadas por el equipo de desarrollo y permiten comprobar que los componentes del software interactúan correctamente, entre sí y con otras partes del sistema (como sistemas operativos, sistemas de archivos o hardware). El foco de las pruebas es la interacción. ¡Saltan las primeras chispas!
Pruebas de Sistema
Avanzamos, el nivel de Pruebas de Sistema es la siguiente capa de nuestra «cebolla». ¡Cosa seria, algunas lágrimas están casi garantizadas! El comportamiento global del producto construido hasta el momento será la referencia, que concretaremos en un Plan de Pruebas para este nivel (si queremos acabar las pruebas algún día). Cualquier aspecto de interés deberá ser retado:
- Riesgos
- Requisitos
- Casos de uso
- Interacciones
- Configuraciones
- Rendimientos
- Comentarios del cliente (incluso en WhatsApp)
Además, esta actividad la suele realizar un equipo de pruebas independiente que, típicamente, utiliza un entorno de pruebas que sea lo más similar posible al entorno de producción.
Pruebas de Aceptación
Llega el momento de la verdad. Estamos en el corazón de nuestro modelo y aquí nos esperan las experiencias más intensas. Toca mirar cara a cara a los usuarios del sistema, buscamos su confianza. El nivel de Pruebas de Aceptación nos revelará si cumplimos con sus expectativas. ¿Será dulce o amargo este último bocado?
Las habituales implicaciones contractuales derivadas del resultado de las Pruebas de Aceptación han dado lugar a una amplia variedad de matices en la forma de materializarlas:
- Pruebas de aceptación de usuario (UAT)
- Pruebas de aceptación operativa (OAT)
- Pruebas de cumplimiento regulatorio
Es más, si se realizan en casa del fabricante se denominan pruebas Alpha (todavía queda un atisbo de sospecha) mientras que, si son en casa del comprador, se denominan pruebas Beta (¡por fin!).
Tipos de Pruebas: ¿Construyendo Correctamente o Satisfaciendo al Cliente?
En todo caso, quizás os hayáis preguntado: ¿Pero, cómo se sabe si estamos construyendo el producto correctamente (es decir, conforme a sus especificaciones) o si estamos satisfaciendo las expectativas del cliente? Estas inquietudes, que nos acompañan durante todo el ciclo de vida, nos permiten introducir un último concepto:
Los Tipos de Pruebas. ¿Los conocéis?
Referencias y Recursos Adicionales
Algunas referencias interesantes sobre este tema, que hemos consultado, son:
- Descarga del Syllabus del ISTQB (2011, International Software Testing Qualifications Board).
- Espacio web para estudio de la certificación ISTQB.
- Blog Pruebas del Software, por Javier Zapata S.
- Herramientas para pruebas software (entre otros) en el blog de Javier Garzás.
- Creating the onion model, artículo de Mike Clayton.