Consejos para antes de comenzar un proyecto de automatización

En el tiempo que llevo automatizando he construido varios proyectos desde cero y he tenido también que mantener o continuar varios otros. En la gran mayoría de los casos que me ha tocado mantener proyectos he notado que no están pensados como si fueran proyectos de desarrollo. Con esto me refiero a que tengan una arquitectura enfocada en lo que se va a testear (y en la metodología de trabajo), que respeten las convenciones del lenguaje, que hagan uso de librerías que nos solucionan problemas, que se implementen patrones de diseño, que exista una organización clara, que el proyecto esté documentado, etc.

En general se construye proyectos de automatización de una forma simple. Donde elegimos un lenguaje de programación por ser el que sabemos usar (en general Java), si necesitamos automatizar web le agregamos selenium, si necesitamos mobile usamos appium y listo. Si precisamos consultar algún rest service o alguna consulta a la BD usamos alguna librería que lo permita y armamos todo desde cero. Finalmente armamos las páginas como pageobjects y queda pronto.

No digo que esto no funcione ni que se haga así en todos los casos, pero en general es lo que se estila. Que ese proyecto termine funcionando no significa que esté bien armado.

En este post les voy a dar algunos tips de que cosas hay que hacer antes de armar un proyecto y cosas que tenemos que ver a la hora de mantener otros según mi experiencia.

  1. Analizar el negocio. Este es el primer paso y el más importante. Tenemos que analizar que estamos testeando, cuáles son las oportunidades de crecimiento del negocio para poder hacer un proyecto que sea adaptable a futuros cambios. Es importante para saber cómo distribuir el proyecto en distintos paquetes, módulos, librerías, etc. A su vez es necesario para todo QA para saber cómo aportar en la empresa.
  2. Analizar el proyecto de desarrollo. En este punto me refiero a ver la arquitectura de cómo está armado el proyecto, si está separado en distintas aplicaciones que se comunican entre sí. Este es un punto importante debido a que de esto podemos obtener ideas como que tal vez necesitemos más de un proyecto de automatización, o cómo vamos a organizar nuestro proyecto, o que necesitaremos “insumos” de desarrollo, es decir, alguna dependencia que nos de los servicios que ellos proveen, DTO’s, etc.
  3. Analizar metodología de trabajo. De nada nos sirve implementar un proyecto en BDD si la metodología de trabajo es en cascada. Necesitamos analizar qué metodología usa el cliente para saber cómo adaptar un proyecto de automatización ahí.
  4. Necesitamos dividir?. No es lo mismo automatizar las pruebas de una web que tenga una ABM simple de productos, que automatizar las pruebas de una web con e-commerce, procesos automaticos que se comunican con distintos proveedores, etc. Para este ultimo seguramente tengamos un equipo mas grande en cuanto a cantidad de gente, y tal vez necesitemos crear varios proyectos de automatizacion que se puedan comunicar entre si y en el cual cada uno cumpla un cometido.
  5. Definir librerías. Una vez que dispongamos de toda la información de qué es realmente lo que debemos automatizar y conozcamos del negocio, necesitamos definir que librerías necesitamos para cumplir con el trabajo. Es importante aquí realizar una pequeña investigación de lo que necesitamos y que alternativas nos da el mercado, leyendo sus pros y sus contras.
  6. Definir lenguaje. Ahora que sabemos que librerías necesitamos, busquemos un lenguaje de programación que nos otorgue todas esas librerías, y que sea cómodo para poder desarrollar pruebas de forma simple y mantenible. Un punto importante acá es que si deseamos que desarrollo en un futuro mantenga parte de las pruebas o las ejecute de forma local, necesitamos ponernos de acuerdo en el lenguaje y no darle una tarea mas que será aprender otro lenguaje. Como automatizadores es importante no “casarnos” con un solo lenguaje solo porque lo conocemos, abramos la cabeza y aprendamos otros.
  7. Definir patrones de diseño. Tratemos a nuestro proyecto como si fuera un proyecto de desarrollo que estará en producción y los clientes lo utilizarán constantemente. Si es necesario implementemos patrones de diseño, no nos limitemos a hacer un proyecto simple solo porque sea de “testing”. Que sea un proyecto de testing no significa que sea un proyecto mediocre y simple, nosotros podemos agregarle la complejidad que deseamos, recordemos que tenemos las mismas herramientas que los desarrolladores. Hay un libro muy bueno llamado “UML y Patrones”, de Craig Larman,  que nos puede ayudar con esto.
  8. Priorizar y definir casos de prueba a automatizar. Sin importar si en tu empresa te dan los casos a automatizar o no, siempre es bueno leerlos, analizarlos y ver si no faltan otros casos. Prioriza que harás primero y que harás despues, recuerda que para llegar a los casos mas complejos debes de tener una buena base y realizar los mas simples.
  9. Organización a la hora de automatizar. Debes ser organizado cuando estés automatizando, tanto con tus tests (usa frameworks que te permitan taggear y divide en clases según tu criterio) como en las clases que utilizas. Si usas PO (pageobjects) ten en cuenta que los mismos tengan siempre la misma estructura, y se encuentren en el mismo paquete o modulo, que no estén dispersos por todo el proyecto ni que encuentres WebElements en los tests. El orden es importante para el mantenimiento.

Esto no nos asegura un proyecto exitoso ni mucho menos, pero nos asegura el ser más profesionales en nuestro trabajo, tener altos estándares de calidad en nuestro código, realizar un proyecto más mantenible y una mejor organización.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

WordPress.com.

Subir ↑

A %d blogueros les gusta esto: