¿Qué tecnología aprender para la automatización de pruebas desde GUI?

No hay texto alternativo para esta imagen

Muchos colegas que trabajan en QA, y algunos otros desarrolladores quienes ahora deben desarrollar habilidades para llegar a Full Stack, me preguntan frecuentemente respecto de que herramienta aprender y que cursos tomar.  Si estás en esa situación, este artículo es para ti.

El infierno de las herramientas de pruebas

Con toda sinceridad, seleccionar herramientas no es sencillo, hay miles de ellas, todas clamando ser las mejores.  Las primeras datan de la época de los ochenta y se orientaban a las pruebas unitarias y de Bases de datos.  En el camino, y con la predominancia de las aplicaciones web en los 90, los esfuerzos se orientaron al problema de las pruebas multi-browser, performance y seguridad, desatando una guerra de nuevas herramientas. Con la aparición de las aplicaciones para móviles, el problema creció aún más, pues el objetivo de multi-plataforma multiplicó el esfuerzo de prueba, generando con las interfaces adaptivas nuevos problemas de prueba aparte de los anteriores como son las pruebas de imágenes y layout.  Así pues, en cada aplicativo, es necesario diseñar y definir herramientas adecuadas a la aplicación y el negocio.  

El valor de los estándares nos viene a salvar

Como resultado de esta historia, en que la industria ha enfrentado esta vorágine de cambios dónde la necesidad de responder rápido, nos llevó a esta jungla de herramientas con enfoques parecidos pero no necesariamente congruentes o completos. Esto ha conspirado a la formación de recursos humanos calificados competentes disponibles, pues para los profesionales invertir en capacitación de herramientas es caro, y con este nivel de cambios poco rentable.

En este mundo, un aporte significativo para la industria lo ha logrado el grupo W3C que ha liderado la estandarización de las tecnologías que habilitan a la Internet, y potencian su desarrollo futuro.

En lo que a herramientas de pruebas nos atañe aquí, desde los años 90 comienza a destacar un esfuerzo open source llamado proyecto Selenium liderado por ThoughtWorks.  Este proyecto logró una alta tasa de adopción, y de él se desprende un protocolo para el manejo de múltiples browsers que se conoce como WebDriver, y que aparte de ser propuesto por W3C como estándar para el desarrollo de herramientas de pruebas web automáticas, ha sido adoptado por prácticamente todos los fabricantes de herramientas, quienes han reemplazado sus propias herramientas (caso Microsoft) o lo usan como la capa de comunicación con sus IDEs de prueba.   

Otro aspecto remarcable de WebDriver es que otros proyectos han hecho implementaciones y extensiones del mismo para aplicaciones móviles o nativas (Appium o WinAppDriver).

¿Cómo aprender WebDriver?

Supongo que al lector a esta altura, le debe quedar claro que “la tecnología a aprender” es WebDriver que es la base conceptual de casi todas las herramientas relevantes en el mercado de las pruebas de usuario o de GUI.

Dicho lo anterior mi sugerencia de camino de aprendizaje para un programador es la siguiente:

1.      Aprenda primero Selenium IDE.

  • No requiere conocimientos de programación en lenguajes como Java o C#.
  • Lo enfoca en aprender en el contexto de las pruebas web los comandos de webdriver y su uso sin distraerse con otras complejidades.
  • Le permitirá resolver muchos problemas repetitivos simples, y proveer los scripts base para iniciar una automatización profesional masiva.

2.      Aprenda a escalar su automatización con un lenguaje de programación

  • Las técnicas de programación le ayudarán a estructurar su código para hacerlo mantenible ante cambios frecuentes.

3.      Aprenda a programar pruebas de móviles con Appium

  • Escale el poder de sus pruebas a plataformas Android e iOS.

4.      Aprenda arquitectura de software de automatización

  • Aprenda sobre patrones y anti-patrones de programación que lo lleven a escalar a un nivel profesional sus automatizaciones.
  • Aprenda como dotar de una estructura en capas que simplifique la mantención y aumente la seguridad y la velocidad.
  • Agregue capas de abstracción de objetos de GUI y workflows de negocio, para que usuarios no técnicos puedan agregar casos de prueba nuevos.

5.      Aprenda los temas de DevOps e infraestructura necesaria para ejecutar

  • Una suite de pruebas que corre por días u horas no aporta mucho en el mundo de la agilidad.  Por ello, es necesario aprender a crear granjas de ejecución físicas o de nube.
  • La confiabilidad y la velocidad son temas que requerirán de aprender a ejecutar en contextos de CI/CD, Selenium grid, Dockers y Kubernetes.

Este camino no es corto, no crea en ofertones, para lograr excelencia se requiere trabajo, y entrenamiento “con las manos en la masa”, no les recomiendo ir por el camino de lo gratuito que ofrece poco y nada.

Otra tema a conversar son las certificaciones, pero dejaré esa discusión para un próximo artículo.  

Espero que les sirva!!!!!

Un abrazo!!!

Patricio Abello

Senior QA | Automatización #Selenium #Cypress #Liderazgo

4 años

El viejo y confiable seleniumWD sigue liderando, buen articulo Marcos Guerrero.

Solange Fune Severino

Product Owner Salesforce en ACHS | Salesforce Associate | ISTQB

4 años

Muy interesante, gracias por tu publicación 👍🏽

Muy clarificador el artículo Marcos, gracias

Claudia Albornoz

Gestor de Procesos en Entel

4 años

Muy bueno ...gracias

Carmen Chávez Gómez

Jefe de Riesgo Ciberseguridad| IT Risk| Ciberseguridad | Project Manager | Technical Project Manager | Cybersecurity | Seguridad de la información

4 años

Inicia sesión para ver o añadir un comentario.

Más artículos de Marcos Guerrero

Otros usuarios han visto

Ver temas