Todos los que estamos cercanos al mundo del desarrollo de software hemos oído hablar del testing. ¿Pero qué es realmente el testing y dónde se aplica?

En metodologías tradicionales, el  testing como el análisis, es una fase más del desarrollo de software y como toda fase tiene un fin que según Wikipedia es proporcionar información objetiva e independiente sobre la calidad del producto a la parte interesada o stakeholder”.

El testing en los modelos tradicionales de desarrollo de software como el modelo en cascada se aplica en las fases finales del proyecto, pero…¿es lo correcto?

testing1

Todos los que desarrollamos o hemos desarrollado alguna vez sabemos que muchas veces por plazos de entrega o miles de razones más, no le podemos dedicar el tiempo necesario al testing. Esto implica que surjan consecuencias, todas ellas negativas, como el enfado del cliente (y con razón) por la calidad, que la finalización del proyecto se alargue más de lo previsto, que los costes del proyecto se incrementen, etc,…

Para evitar este tipo de situaciones, existen otro tipo metodologías de desarrollo de software denominadas ágiles, donde se le presta más importancia a esta fase y no se deja al final como una fase separada, sino como parte integral del Desarrollo de software al igual que la programación.

agile methodology

Las metodologías denominas ágiles se basan en los 12 principios que a continuación se indican:

  • Principio 1: Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continuada de software con valor.
  • Principio 2: Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente.
  • Principio 3: Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia por periodos de tiempo lo más cortos posibles.
  • Principio 4: Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.
  • Principio 5: Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan y confiarles la ejecución del trabajo.
  • Principio 6: El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara.
  • Principio 7: El software funcionando es la principal medida progreso.
  • Principio 8: Los procesos ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.
  • Principio 9: La atención contínua a la excelencia técnica y al buen diseño mejora la agilidad.
  • Principio 10: La simplicidad o el arte de maximizar la cantidad de trabajo no realizado, es esencial.
  • Principio 11: Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.
  • Principio 12: A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia.

Este tipo de metodologías divide el proyecto en varias entregas (sprints), haciendo que el testing se realice durante más veces durante el ciclo de desarrollo de software.

Este tipo de metodologías permite aplicar prácticas cómo el Agile Testing….¿en qué consiste el Agile Testing?

Al igual que las metodologías agiles, el agile testing también se basa en sus 12 principios que son:

  • El Testing no es una fase: el testing contínuo es la única forma de garantizar avance contínuo, por esto, el testing se realiza junto con el desarrollo de software y demás actividades.
  • El Testing hace avanzar el proyecto: bajo métodos convencionales, el testing es una alcabala, en cambio en Agile Testing se proporciona retroalimentación contínua, permitiendo corregir el rumbo durante el desarrollo de software.
  • Todo el equipo realiza pruebas: en Agile Testing, los Analistas de negocio y Desarrolladores de software también ejecutan pruebas, no sólo los testers como en métodos convencionales.
  • Reducir el tiempo para recibir retroalimentación: en Agile Testing, los equipos del área de negocio (el cliente) están involucrados en cada iteración, no solo al final durante la fase de aceptación, como resultado, el tiempo de retroalimentación se reduce y el costo de correcciones también es menor.
  • Código limpio: los defectos en el código se corrigen en la misma iteración, por lo que se mantiene el código limpio.
  • Reducir la documentación de pruebas: los Agile Testers usan listas de chequeo reusables en lugar de documentación extensa, se enfocan en la esencia de la prueba en lugar de detalles. Siguiendo principios ágiles estas listas de chequeo son el inicio de las definiciones de las pruebas y no el final y el tester cuenta con libertad para aportar valor.
  • Guiado por pruebas: el Agile Testing, las pruebas se hacen “durante” el desarrollo y no después del desarrollo como en métodos convencionales.

Con este tipo de metodologías y enfoques diferentes de abordar un proyecto, se le da la importancia que tiene una de las tareas más importantes en el desarrollo del software que es el testing.

testing2

Leave a Reply