Pruebas a lo largo del ciclo de vida del desarrollo de software

Esteban Airaldo Clivati
8 min readSep 3, 2022

--

El ciclo de vida del desarrollo del software comprende las etapas por las cuales un proyecto de software avanza, desde el análisis de los requerimientos del cliente, hasta el despliegue de la solución final.

Definición de Proyecto de Software

Un proyecto es un esfuerzo temporal que se lleva a cabo para crear un producto, servicio o resultado único.

Características de un Proyecto de Software:

Únicos: todos los proyectos por similares que sean, tienen características que los hacen únicos.

No ambiguos: deben ser claros, dado que son los responsables de guiar el desarrollo del proyecto.

Medibles: a fin de poder determinar el avance sobre el proyecto.

Alcanzables: es decir que los mismos puedan ser realizados por el equipo.

Ciclos de vida del desarrollo del software

Existen varios modelos o paradigmas de desarrollo, en los cuales nos podemos apoyar para la realización de software. Los ciclos de vida sirven como guía para llevar adelante un proyecto y nos ayudan a responder las siguientes preguntas:

  • ¿Cuáles de las tareas deben ser rastreadas?
  • ¿Que tipo de progreso se ha realizado?

¿Cuáles son las caracteristicas que deberia tener en cuenta a la hora de elegir un ciclo de vida para mi Proyecto?

El modelo de desarrollo a escoger o el ciclo de vida va a depender de los objetivos del proyecto. Si tengo un tiempo limitado debería elegir una metodología ágil, si la calidad y confianza del producto es el objetivo principal, debería elegir una metodología que ofrezca más soporte a la documentación etc…

Desarrollo y pruebas de Software

Como tester es importante conocer la metodología aplicada al proyecto, ya que es el marco de trabajo que te indicará qué tareas de pruebas se deben ejecutar y cuales técnicas de prueba utilizar.

Modelos y Metodologías de desarrollo

Los modelos y metodologías de desarrollo de software son un conjunto de técnicas y métodos organizativos que se aplican para diseñar soluciones de software informático.

Una metodología de desarrollo de software brinda al equipo de trabajo un marco para construir aplicaciones de manera eficiente y rigurosa, garantizando un producto cercano al esperado. Si no se desarrolla a partir de una metodología, el resultado final será impredecible y no se podrá controlar el avance del proyecto. Estos modelos se clasifican en Modelos de desarrollo secuenciales y Modelos de desarrollos iterativos e incrementales

Modelos de desarrollo secuenciales

Son aquellos donde cualquier fase del proceso de desarrollo comienza una vez que la anterior finalizó. Por ejemplo el modelo en cascada.

Satisfacen la totalidad de los requerimientos del cliente, sin embargo esto puede llevar meses incluso años para su entrega final.

Ejemplo del modelo de desarrollo secuencial

  • En este modelo, las pruebas comienzan una vez que el desarrollo termina

Modelos de desarrollos iterativos e incrementales

Son aquellos que comienzan desarrollando una especie de versión “ligth” de los requerimientos del sistema, y en cada iteración, se agregan nuevas funcionalidades. Por lo tanto, las etapas de Requerimientos, Análisis, Diseño, Implementación y Prueba se realizan en pequeñas partes agrupando funcionalidades, y cada vez que terminemos una iteración, se entrega una versión funcional del sistema.

Modelo en V

Modelo en V (incremental)

Es una evolución del modelo en cascada. Al final de cada iteración, se obtiene un producto funcional. En este modelo, se integra el proceso de pruebas al proceso de desarrollo, es decir, para cada etapa de desarrollo tenemos una etapa de pruebas asociada.

Por ejemplo, en la etapa de análisis de requerimientos del proyecto, la Validación de los requerimientos documentados permite garantizar que se va a construir el software idóneo para satisfacer la necesidad del cliente y a su vez diseñar las pruebas de aceptación.

Y del mismo modo, cada fase de desarrollo tiene su respectiva fase de pruebas asociadas, a fin de encontrar defectos y evitar que se propaguen a etapas posteriores donde es más costoso repararlos.

Metodología SCRUM (incremental)

Es otro modelo Iterativo e incremental, tiene como objetivo hacer entregas de funcionalidades terminadas en periodos cortos de tiempo.

Cada iteración tiende a ser relativamente corta, estamos hablando de horas, días, o un par de semanas .

En la forma tradicional (pirámide de la izquierda), la gran mayoría de las pruebas son manuales y funcionales, pudiendo existir algún pequeño grado de automatización y de pruebas unitarias por parte de los desarrolladores.

La pirámide de la derecha representa cómo se ejecuta el Software Testing en Agile, donde la gran mayoría de las pruebas son unitarias automatizadas, de aceptación automatizadas y de interfaz gráfica automatizadas, buscando reducir al mínimo las pruebas funcionales manuales.

Buenas prácticas en la ejecución de las pruebas

El modelo escogido debe corresponder a los objetivos del proyecto, pero hay ciertas características que debemos tener en cuenta al momento de elegirlo, ya que definen las buenas prácticas en la ejecución de las pruebas.

1- Ciclos con pruebas de Validacion y Verificacion: cada ciclo de desarrollo debe contar con pruebas de validacion y verificacion

2- Actividades de desarrollo con actividades de pruebas: cada actividad de desarrollo tiene una actividad de pruebas relacionada. No importa que modelo se elija para el proyecto, las etapas de pruebas deben comenzar en las etapas tempranas del ciclo de vida, respetando el principio de pruebas tempranas.

3- Cada nivel de pruebas tiene objetivos específicos: por ejemplo, las pruebas de componentes tienen como objetivo identificar posibles defectos, mientras que las pruebas de aceptación buscan crear confianza en el usuario sobre el uso del software.

4- Análisis y diseño de niveles de pruebas sincronizado a las actividades de desarrollo: el análisis y diseño de cada nivel de prueba debe comenzar durante la actividad de desarrollo que corresponda. Esto quiere decir que las actividades relacionadas con las pruebas de componentes deben iniciarse durante la etapa de desarrollo de componentes, y así cada prueba cuando corresponda.

5- Participar en la definición de requerimientos y diseño: los testers deben participar en la definición y refinamiento de requerimientos y diseño.

Metodologías ágiles

1.Planificación: es la etapa inicial de planificación en donde todas las partes involucradas en la metodología ágil, deben trabajar en conjunto. Una vez realizado el análisis de los requisitos, el siguiente paso es definir y documentar claramente los requisitos del producto y obtener la aprobación del cliente o de los analistas.

2.Diseño: otra de las fases más importantes que servirán para definir la arquitectura y tecnologías que se utilizarán como también el diseño de interfaz de usuario del software a construir.

3.Desarrollo: En esta etapa comienza el desarrollo real y se construye el producto. Si el diseño se realiza de forma detallada y organizada, la generación de código puede llevarse a cabo sin demasiados problemas.

4.Testing: esta etapa se refiere a la fase de prueba del producto, en la que se informa de los defectos del producto, se rastrean, se arreglan y se vuelven a probar, hasta que el producto alcanza los estándares de calidad definidos.

5. Release (Lanzamiento): En esta etapa del Agile Testing, el equipo va a revisar las características de todo aquello que se haya desarrollado e implementado hasta el momento. Y se evaluará si ya se encuentra listo para el cliente o no.

6.Feedback: Finalmente, la metodología ágil se encargará de reunir las aportaciones de las partes interesadas y los usuarios, y de esta forma se obtendrá una retroalimentación general para el próximo ciclo de implementación.

Herramientas de gestión y trabajo

JIRA

Es un software que ayuda al equipo a gestionar sus tareas y actividades.

Es una herramienta muy completa que permite la gestión y organización de proyectos, a fin de optimizar muchas de las tareas que la construcción de un producto implica. Su mayor atractivo radica en la adaptación que proporciona a proyectos ágiles, pero este potente software ofrece mucho más.

Puede adaptarse a empresas que no tienen nada que ver con el mundo del desarrollo de software, ya que su flujo de procesos también permite adecuarse a diferentes industrias y necesidades.

Podemos ver el backlog (debajo) y el sprint en curso (el que se llama “New Sprint” suele llamarse por el número de sprint o la fecha)

Elementos en JIRA

Podemos ver BUGS (el cuadro rojo con círculo blanco)

Se pueden definir user stories, tareas específicas -suelen ser un check azul- (como por ejemplo un reporte de cantidad de usuarios), epicas — violetas con un rayo blanco-

Trello

Es una herramienta para gestión de tareas online fácil de usar, visual e intuitivo. Permite organizar las diferentes tareas a realizar en un único espacio, un tablero. Permite dejar de lado los post-its acumulados por tu mesa de trabajo, las listas de tareas pendientes y los recordatorios en mil lugares diferentes.

¿Qué puedo hacer con Trello?

  • Crear diferentes proyectos (tableros), independientes entre ellos.
  • Crear proyectos públicos, privados o cooperativos.
  • Crear columnas para cada grupo de tareas que debas realizar.
  • Incluir archivos adjuntos en las tareas que así lo requieran.
  • Realizar comentarios en algunas tareas, sin que eso influya en la visualización de tu tablero.
  • Temporalizar tus tareas y visualizarlas en un calendario.
  • Etiquetar las tareas por categorías.
  • Trabajar en equipo en tiempo real.

GLOSARIO

Prueba estática: consiste en la revisión de productos de trabajo como documentos de requerimientos, casos de prueba, planes de prueba, código, guías de usuario etc.

Prueba dinámica: es la acción de probar

Ciclo de vida: es una secuencia estructurada y bien definida de las etapas en ingeniería de software para desarrollar el software deseado.

Backend: El backend es la parte del desarrollo web que se encarga de que toda la lógica de una página web funcione. Se trata del conjunto de acciones que pasan en una web pero que no vemos como, por ejemplo, la comunicación con el servidor

Interfaz de usuario: La interfaz de usuario (UI) es el conjunto de los controles y canales sensoriales mediante los cuales un usuario puede comunicarse con una máquina

Jira: es una herramienta de gestión de proyectos que sirve para gestionar tareas

--

--

Esteban Airaldo Clivati
Esteban Airaldo Clivati

Written by Esteban Airaldo Clivati

0 Followers

Apasionado de la tecnología #Python #AI #DataScience #MachineLearning🚀 La máquina la hace el hombre y es lo que el hombre hace con ella.

No responses yet