Agile testing

15 febrero 2018

Agile testing

by Francisco Moreno

AGILE TESTING

La calidad es una de las principales señas de identidad de nuestro software. Es por ello que el modelo de aseguramiento de calidad que propone Sngular se basa en involucrar en el equipo de desarrollo a profesionales de testing durante la definición y construcción del proyecto y no únicamente a su finalización.

Tradicionalmente el testing está asociado a ser un proceso rígido, pesado y repetitivo, donde se genera gran cantidad de documentación y que se ejecuta en las fases finales de los proyectos.

En Sngular creemos firmemente que este enfoque sobre el testing no es adecuado para el momento actual que vive la industria del software ya que presenta importantes inconvenientes:

  • El coste de corrección de bugs aumenta a medida que nos alejamos del momento en que se generan, es decir, cuando el desarrollador escribe el código.
  • La documentación pesada aporta poco valor a la solución final.
  • No es adecuado para entregas o despliegues rápidos ya que, en muchas ocasiones, no hay tiempo material para ejecutar todas las pruebas necesarias.
  • La responsabilidad sobre la calidad del sistema queda diluida entre el equipo de desarrollo y QA.
  • En fases finales los testers pueden no tener información suficiente sobre las decisiones tomadas, cambios realizados en los requisitos o detalles de la arquitectura del sistema. Esto hace que haya pruebas importantes que no se realicen de manera adecuada.

En Sngular apostamos por un modelo de testing ágil basándonos principalmente en dos conceptos claves:

  • Shift-Left Testing: llevar el testing a fases tempranas del proyecto.
  • Context-Driven Testing: conjunto de principios básicos sobre los cuales se construye un modelo de testing adecuado al proyecto. La idea esencial detrás de este conjunto de reglas es hacer que el testing no sea un proceso rígido sino que se adapte en todo momento a las circunstancias del proyecto para aportar el máximo valor posible. Es decir, no todos los proyectos son iguales, ni siquiera todas las fases del mismo proyecto lo son, por lo que en cada momento será necesario tomar las decisiones adecuadas sobre la manera más eficiente de asegurar la calidad del sistema.

De manera esquemática, proponemos pasar del sistema tradicional de aseguramiento de calidad

a un modelo de agile testing, siguiendo los principios anteriormente descritos

El modelo de trabajo y mentalidad de Sngular implica las siguientes ventajas:

  • QA no es el único responsable de la calidad, todo el equipo lo es.
  • Al pertenecer al equipo de desarrollo, los QAs pasan de tener un papel puro de Quality Assurance a Quality Assistance. Es decir, colaboran codo con codo con el equipo en implementar buenas prácticas de testing desde el primer momento.
  • Se pasa de un modelo de detección de bugs a otro de prevención de problemas.
  • QA pasa de intentar romper el sistema a ayudar en la construcción del sistema, detectando inconsistencias en los requisitos, alertando sobre posibles riesgos, dando su punto de vista sobre posibles problemas que afecten a la experiencia del usuario, etc.
  • El plan de pruebas se mantiene alineado con el sistema en todo momento. El plan de pruebas también se construye y mantiene de manera iterativa.
  • Permite que los QAs desarrollen o guíen a los desarrolladores sobre cuestiones relativas a la automatización de pruebas.

El flujo de trabajo durante cada sprint podría ser el siguiente:

Como puede verse, se vela por la calidad durante todo el ciclo de desarrollo. Desde la captura y definición de requisitos hasta la puesta en producción final.

En cada sprint desarrolladores y QAs trabajan conjuntamente y en paralelo para dotar al sistema de la mayor calidad y robustez posible. Las tareas que llevarían a cabo cada parte podrían ser las siguientes:

Desarrolladores

  • Programación de funcionalidad siguiendo buenas prácticas
  • Pruebas unitarias / TDD
  • Análisis estático de código
  • Code Reviews entre pares o pull request
  • Testing manual y pruebas cruzadas de desarrollos
  • Automatización de pruebas funcionales
  • Pair programming

QAs

  • Revisión de criterios de aceptación de las historias de usuario
  • Añadir casos de pruebas específicos a las historias de usuario
  • Análisis riesgos
  • Análisis de usabilidad / UX del sistema
  • Apoyo a desarrolladores en la elaboración de pruebas automáticas
  • Automatización de pruebas funcionales e integración
  • Pruebas exploratorias y manuales del sistema
  • Adecuación de entornos de pruebas y juegos de datos adecuado
  • Pair testing

Automatización de pruebas

En entornos ágiles la automatización de pruebas se convierte en una herramienta imprescindible y en Sngular nos lo tomamos muy en serio. Para ser lo más eficientes posibles aseguramos la calidad automatizando las pruebas desde la base, es decir, el código programado, siguiendo por la integración de todos los componentes y terminando por la interfaz de usuario.

Debido a su coste de ejecución y mantenimiento, el número de pruebas automatizadas debería seguir aproximadamente una distribución piramidal.

De esta manera conseguimos liberar a los testers de las pruebas manuales repetitivas, dejando así el tiempo suficiente para que las pruebas exploratorias puedan ejercitar de manera exhaustiva el sistema. Esta es, sin duda, la mejor manera de evitar que los usuarios finales detecten errores graves en producción.

Volver a la listaSiguiente artículo
arrow

Titulo

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.