Proyecto de Continuous Integration como tarea final de asignatura de testing

El año pasado en la asignatura de testing donde doy clases en la UCU, si bien el foco de la asignatura está en el testing de software, me pareció interesante combinar todo lo que vimos en clase con una tarea integradora, en la que se debía poner en práctica lo visto en el curso, funcionando en un pipeline de Continuous Integration. Esto lo hice con dos objetivos: que vean el valor que tienen las distintas actividades de testing ya seas o no tester (probablemente cualquier desarrollador le vea más valor si está en un pipeline), y por otro lado, para que aprendan de CI/CD, que estoy convencido que hoy día toda universidad debería incluir en sus programas.

Enfoque de la tarea

La tarea final consistió en configurar Travis para que obtenga el código de un sistema opensource, le haga deploy en alguna infraestructura, y a continuación le ejecute diversas pruebas, pasando por un chequeo estático de código, pruebas unitarias con análisis de cobertura, pruebas automáticas con Selenium en SauceLabs, pruebas de performance con BlazeMeter, seguridad, usabilidad, accesibilidad, etc. Todo debía lograrse con herramientas en la nube y gratuitas (muchas herramientas son gratis para proyectos abiertos).

Otra parte que era bien desafiante, es que toda la clase debía trabajar en forma coordinada, logrando un único entregable donde estuvieran todas las herramientas integradas. Se formaron sub-equipos para cada parte, por ejemplo, había un equipo encargado de Travis, un equipo encargado de la infraestructura en Heroku, había un equipo encargado de automatizar en Selenium, etc.

Por último, la entrega consistía en un informe armado en forma colaborativa entre todos (en un Google Doc) y en una presentación, donde cada sub-equipo presentaba su parte, beneficios, desafíos, resultados, etc.

Resultados

Desde mi punto de vista, salió genial:

  • Aprendí muchísimo sobre herramientas, sobre cómo se pueden integrar, etc.
  • El grupo llegó al objetivo. Si bien alguna de las herramientas planteó algún problema, en genera se alcanzó el objetivo.
  • Se visualizó muy bien el ciclo de Continuous Integration y sus beneficios de feedback continuo.
  • Cada equipo se especializó en una herramienta, pero aprendió de las demás en la clase final.
  • Todos pudieron presentar su trabajo y realizar preguntas sobre los trabajos de los demás.
  • Se generó un informe final el cual voy a ir compartiendo de a partes con los aprendizajes de cada herramienta utilizada (bajo consentimiento de los alumnos).
  • Para la coordinación los estudiantes se auto-organizaron bastante bien. Armaron un grupo de Slack y estaban comunicados por ese medio, pudiendo hacer consultas o pedidos de ayuda a otros grupos para resolver las integraciones de herramientas.

Dificultades

Como también hay que aprender de las cosas que no salen tan bien, acá puntualizo:

  • Para la próxima tengo que encontrar alguna aplicación mejor para utilizarla como sistema bajo pruebas. Me recomendaron una que se utiliza para práctica en OWASP llamada Juice Shop. Lo bueno es que ya existe documentación de cómo levantarla en Heroku fácilmente, y como eso tampoco es el foco del curso, si sale fácil ¡mejor!
  • La coordinación entre tantos equipos resultó muy compleja. Esto ya decidí no volver a repetirlo. Creo que estuvo bueno, pero tal vez generó un poco de ansiedad, más cuando no todos tiran con la misma fuerza.
  • Voy a evitar las tareas tan largas sin entregas intermedias, porque muchos dejan para último momento y ahí las cosas no salen tan bien. Ya este año cambié mucho esto, pautando entregas más pequeñas y periódicas.

Cerrando

Les voy a ir compartiendo las distintas partes que creo que son interesantes como para tener de material de referencia en base a la experiencia que tuvieron los alumnos. De mi parte agradecerles a todos los que cursaron Testing de Software el año pasado en la UCU de Montevideo, ya que siento que aprendimos mucho juntos, y el proceso estuvo muy bueno.

One thought on “Proyecto de Continuous Integration como tarea final de asignatura de testing

Leave a Reply

Your email address will not be published. Required fields are marked *