Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Gradualmente, el análisis y el diseño fueron teniendo mayor énfasis hasta emerger como una fase
distinta en el ciclo de vida del software. Hoy, ya se considera fundamental en el proceso de
desarrollo que el análisis se encuentre completo y revisado antes de iniciar con la actividad de
diseño y que el diseño se encuentre completo y revisado antes de comenzar con la
programación.
Con las pruebas de sistemas vemos la misma evolución del pensamiento, pero con 15 o 20 años
de retraso. Inicialmente, las pruebas solo significaban ejecución, refiriéndose a pruebas dentro del
enfoque dinámico. Esto no quiere decir que una buena prueba no enfatizara en el análisis y diseño
de las pruebas, sino que simplemente no eran actividades reconocidas como fases con sus
entregables propios. Hoy, se reconoce que se necesitan construir casos de pruebas antes de
correrlos y que la planificación y análisis de los objetivos, así como los requerimientos de pruebas
tienen que ser realizados antes de diseñar y construir los casos de pruebas.
Lo que surge aquí es un modelo de ciclo de vida de las pruebas que se parece a la metodología
de desarrollo a la que estamos acostumbrados.
¿Para qué definir una metodología?
La idea es establecer una disciplina o un modo de trabajo de cómo llevar adelante cada actividad
y que cada paso requerido es completo en una secuencia apropiada. Está totalmente aceptado
que definir una metodología de desarrollo sobre la cual podamos tener control y que sea una
buena metodología va a llevar a construir un buen software.
Lo que sí tiene que quedar en claro es que es justificadamente necesario tener una metodología
de pruebas bien integrada con el proceso de desarrollo. ¿Y cómo se integra?
“Más allá del modelo de ciclo de vida que adopte el proyecto para el desarrollo del sistema, las
pruebas deben adaptarse e integrarse al modelo de [CVD] (Ciclo de vida de desarrollo) adoptado
por desarrollo”. (Uninotas, 2017, https://bit.ly/2PmQswL)
“Considerando un proceso de desarrollo en términos generales, se puede decir que éste contiene
las etapas de Análisis, Diseño, Implementación o Desarrollo propiamente dicho y Mantenimiento”
(Uninotas, 2017, https://bit.ly/2PmQswL)
Pueden llevar otros nombres, pero sencillamente son las etapas principales.
“También llamado modelo en cascada. En este CVD las actividades de desarrollo se llevan una
después de la otra, es decir secuencialmente” (Uninotas, 2017, https://bit.ly/2PmQswL).
Se consideran las etapas principales como antes se indicó, pero “la etapa de pruebas se la separa
de la etapa de Implementación, siendo que es la materia de estudios o lo que se desea destacar”
(Uninotas, 2017, https://bit.ly/2PmQswL).
Como se puede apreciar en la gráfica, “el control de la calidad y las pruebas llegan
tarde al proyecto. Y eso genera que se realicen sólo si resta tiempo. Cuando las
pruebas se hacen tan tarde, cada error encontrado tiene un alto costo”. (Uninotas,
2017, https://bit.ly/2PmQswL)
3. Modelo V
Es uno de los más usados en interacción con pruebas, ya que organiza las actividades
de pruebas en sus diferentes niveles.
Figura 2: Modelo V
Fuente: elaboración propia.
Ahora, las preguntas que se responderán son:
Si bien en la representación gráfica existe una correspondencia entre cada actividad de desarrollo
con cada nivel de pruebas, el momento de ejecución es el indicado en el eje x, que representa a t.
Partiendo con los requerimientos, ni bien se cumple con esta etapa de desarrollo, se
sigue con la siguiente que es diseño. Respecto de pruebas, se puede ver una
correspondencia con las pruebas de aceptación. Lo que se puede adelantar de este
nivel, no es la ejecución, ya que el producto todavía no fue programado, ni siquiera fue
diseñado. Lo que se puede adelantar es la especificación de los casos de pruebas
para el nivel de aceptación. (Uninotas, 2017, https://bit.ly/2PmQswL)
Se basa en la premisa que establece que si con la definición que se haga de los requerimientos el
diseñador va a poder llevar adelante el diseño de este, los probadores tendrán todo lo necesario
para poder hacer la especificación de los casos.
Lo mismo para todas las etapas siguientes. Ni bien se termina con el diseño funcional,
se cuenta con todo para poder hacer la especificación de los casos de pruebas de
sistemas, y otros.
Es por ello que la ejecución de las pruebas sigue la recta de tiempo x (t1, t2, t3… t6).
Figura 3: Modelo V en el tiempo
Fuente: elaboración propia.
“Al adelantar la especificación, ni bien se cuenta con los primeros componentes, se puede
comenzar con la ejecución” (Uninotas, 2017, https://bit.ly/2PmQswL). En un modelo secuencial, se
estaría comenzando, en ese punto, con la especificación de los casos de pruebas. Esta es una
primera ventaja explicada.
“La otra es que, cuando se están especificando los casos de pruebas, por ejemplo, con el
documento de requerimientos listo, necesariamente se están revisando esos documentos,
eliminando ambigüedades, supuestos y puntos que pudieran estar faltando” (Uninotas, 2017,
https://bit.ly/2PmQswL). De alguna manera se está forzando la corrección, de haber alguna
deficiencia.
“Es verificación porque cada nivel de desarrollo, verifica respecto de los contenidos del nivel que
le precede. Recordar que verificar significa comprobar si los requisitos y definiciones de niveles
previos han sido implementados correctamente” (Uninotas, 2017, https://bit.ly/2PmQswL).
La flecha gruesa coloreada de azul abarca todas las actividades de calidad que llevan a controlar
la calidad. La flecha gruesa coloreada de verde es la que abarca las actividades de calidad que
llevan a asegurarla.
“Es validación porque se refiere a la corrección de cada nivel de desarrollo. Validar significa
comprobar lo adecuado de los resultados de un nivel de desarrollo” (Uninotas, 2017,
https://bit.ly/2PmQswL).
Figura 4: Verificación y validación en el modelo V
4. Modelo incremental
Este modelo responde al proceso de establecer requerimientos, diseñar, construir y
probar un sistema en ciclos de desarrollos más cortos. Estas actividades se segmentan
en pasos reducidos y se ejecutan de forma continua, constituyendo una iteración. Tras
cada iteración se debe alcanzar la aprobación del cliente con el objetivo de poder
modificar el rumbo del proyecto si fuera necesario. (Uninotas, 2017,
https://bit.ly/2PmQswL)
Representa un proceso que evoluciona. Debe contar con personal entrenado, ya que la calidad
que obtenga va a depender de la calidad del equipo.
En este modelo la gestión de la configuración es importante porque se debe tener un claro control
de lo que se tiene ya en producción respecto del siguiente paquete para entregar y del resto que
falta. Sin una adecuada gestión de la configuración, probablemente un nuevo paquete de entrega
puede volver atrás funciones o generar fallos sobre funcionalidades que estaban correctas.
Figura 5: Modelo incremental
Fuente: elaboración propia.
Cada iteración contribuye con una funcionalidad a desarrollar, y puede ser probada por
separado. En cada iteración, la verificación (relación con el nivel precedente) y la
validación (grado de corrección del producto dentro del nivel actual) se pueden
efectuar por separado. (Uninotas, 2017, https://bit.ly/2PmQswL)
La automatización de pruebas está más que justificada en este modelo de desarrollo, “ya que, por
cada iteración, es necesario probar las funcionalidades nuevas y a su vez volver a probar el
sistema completo para asegurar que lo que antes funcionaba, sigue funcionando” (Uninotas, 2017,
https://bit.ly/2PmQswL).
5. Proceso de pruebas
Una metodología define los pasos y las actividades, por lo que define los procedimientos para
cada fase de trabajo. “Los procedimientos especifican lo que debería hacerse durante cada fase y
cada subfase de trabajo, y tareas son detalladas suficientemente” (Uninotas, 2017,
https://bit.ly/2PmQswL).
Como las pruebas constituyen un proceso en sí mismas, partiendo del proceso básico
(Planificación, Especificación, Desarrollo de la prueba, Ejecución, Evaluación y
Seguimiento). (Uninotas, 2017, https://bit.ly/2PmQswL)
Es una actividad de pensar y establecer, y que requiere de una buena inversión de esfuerzo.
Incluye la definición del alcance y de los riegos, la identificación de los objetivos de las
pruebas y los criterios de salida de pruebas, la determinación del enfoque de las
pruebas y en función del enfoque las técnicas, los niveles de cobertura y criterios de
satisfacción. Implica, como en todo proyecto, establecer el equipo de pruebas
requerido y su programación. Se deben explicitar los detalles del nivel de recursos y si
es necesario o no formación adicional. (Uninotas, 2017, https://bit.ly/2PmQswL)
“Todo esto que se defina, debe quedar contenido en un documento denominado plan de pruebas.
El mismo puede ser un documento de 20 o más hojas, o sólo un par de hojas” (Uninotas, 2017,
https://bit.ly/2PmQswL). Puede ser un documento separado o contenido en el documento del plan
de proyecto. Eso dependerá de la madurez de la organización en cuanto a esta fase o de lo que la
organización desee adoptar como procedimiento para llevarlo a cabo.
Análisis y diseño de pruebas
Revisando la arquitectura del sistema y el diseño, incluyendo las interfaces entre los objetos de
prueba, se debe analizar la testeabilidad definida como la capacidad del sistema, componente u
objeto, a ser probado.
Esta etapa es el proceso de definir los casos de pruebas que mejor permitan verificar
que se cumplan los requerimientos de prueba.
Dentro del diseño de los casos de pruebas, está el diseñar el entorno de prueba, con la
carga de los conjuntos de datos y las conexiones con los sistemas adyacentes. Dentro
de esta etapa se debe establecer la trazabilidad bidireccional entre requerimientos,
casos de pruebas y bases de las pruebas. (Uninotas, 2017, https://bit.ly/2PmQswL)
Si se van a emplear herramientas de prueba, se debe dejar lista la herramienta e incluso probada
la infraestructura si fuera necesario.
Como salida de esta etapa se tiene a los casos de pruebas diseñados en la forma documental que
la organización adopte. Los procedimientos de ejecución pueden hacerse aquí en la etapa
siguiente.
Implementación y ejecución de las pruebas
“A medida que se realiza la ejecución de las pruebas, se deben registrar los resultados obtenidos.
Como resultado de la comparación con los resultados esperados, se determinan las fallas”
(Uninotas, 2017, https://bit.ly/2PmQswL). Se deben registrar los incidentes, con todos los datos
que permitan establecer sus causas, la identificación del defecto y su remoción (entidad afectada,
versión, secuencia de pasos, efecto que se produce, entre otros datos).
“La salida de la implementación y ejecución de las pruebas son los registros de pruebas, que
pueden ser: listas de chequeo de sets de pruebas corridos y registros de defectos” (Uninotas,
2017, https://bit.ly/2PmQswL).
Estas actividades de prueba se repiten según como se mostró en la gráfica del ciclo de vida de las
pruebas, ya sea por ciclos de pruebas o para demostrar la corrección de los defectos. “Dentro de
la ejecución también quedan descriptas las pruebas de regresión (asegurar que los cambios no
han revelado otros defectos o introducido nuevos defectos)” (Uninotas, 2017,
https://bit.ly/2PmQswL) que se explicarán más adelante.
Evaluación del criterio de salida
Es una etapa importante en comunicación, ya que debe dar a conocer los criterios alcanzados,
permitiendo volver en el proceso para repetir fases hasta alcanzar los resultados esperados.
Cierre de las pruebas
A juicio de la experiencia de Bill Hetzel (1988), esta es una de las fases más importantes, ya que
muchos de los inconvenientes que puede traer la instalación del sistema, viene por no hacerse o
no hacerse formalmente el cierre de las pruebas.
Implica:
Esta actividad es una actividad continua que influye en todas las etapas anteriores.
Figura 6: Control de las pruebas
Fuente: elaboración propia.
“Dentro del control de pruebas, además de lo anterior, se miden y analizan resultados, se diseñan
e inician las medidas correctivas y se preparan y toman decisiones”. (Uninotas, 2017,
https://bit.ly/2PmQswL)
Referencias
Hetzel, B. (1988). An introduction. The complete guide to software testing (2.da ed.).
Massachusetts, USA: QED Information Science.
Uninotas. (2017). Las pruebas que comprueban la corrección del código fuente de una aplicación
son. Recuperado de: https://www.uninotas.net/las-pruebas-que-comprueban-la-correccion-del-
codigo-fuente-de-una-aplicacion-son-2/