RPA y la automatización de pruebas funcionales

, , ,

En este artículo se tratará de introducir tanto el concepto como la forma de trabajar de la automatización robótica de procesos o RPA (Robotic process automation), aclarando conceptos y como pueden ayudar a los procesos de pruebas y a la empresa en su conjunto a optimizar procesos repetitivos.

Podríamos resumir las soluciones RPA como una serie herramientas especializadas para solucionar problemas concretos con la Interfaz de usuario, dotando bien a un equipo de IT o de QA de una alternativa a procesos de pruebas y/o automatización que no se pueden solucionar mediante métodos tradicionales de scripting, bien por escalado, por tiempo de desarrollo/mantenimiento o porque directamente la tecnología no lo permite (sistemas Citrix o ‘virtualizados’, gráficos, aplicaciones SAP, consolas Cobol, etc.).

Conceptos previos

  • Robótica: es la ciencia que involucrar a la mecánica o la electrónica, entre otros; para crear un robot (normalmente en el entorno industrial) para sustituir mano de obra humana.
  • Automatización de procesos de negocio: la automatización de los procesos de negocio, conocido como transformación digital, es la automatización industrial de los procesos de negocio complicados a través de la habilitación de tecnología.
  • BPO (Business Process Outsourcing ): es la subcontratación de los proceso de negocios.
  • Bot: en contraposición a un Robot, un bot es un robot software o, en inglés, “metaphorical software robots”.
  • Digital Worker: también llamado “software robotic” (software robótico), que hace referencia a Bot con Inteligencia artificial. Por lo tanto, RPA se puede definir como:

Una automatización robótica de procesos es una forma naciente de automatización de proceso de negocio que replica las acciones de un ser humano interactuando con la interfaz de usuario de un sistema informático. […]. El robot de software opera en la interfaz de usuario (IU) de la misma manera que un ser humano. Esto es una diferencia significativa con respecto a las formas tradicionales de integración de TI que históricamente se han basado en Interfaces de Programación de Aplicación (API), es decir, formas de comunicación máquina a máquina basadas en capas de datos que operan en una capa arquitectónica debajo de la IU. Wikipedia.

RPA vs Automatización Tradicional

Las herramientas tradicionales de automatización son un proceso de desarrollo donde se automatiza o se crea una serie de tareas, bien sobre backend directamente (web services, lanzando scripts, etc.), o bien sobre la parte de Interfaz de usuario o GUI (Graphical user interface) usando métodos de bajo nivel o FMWs especializados que son capaces de entenderse de manera ordenada con estas.

En contraste, un RPA desarrolla de la misma manera que una persona usando el GUI. Se configuran (o entrenan) usando pasos demostrativos, en lugar de ser programados usando instrucciones basadas en código.

El paradigma, en resumen, es que un robot de software debe ser un Bot virtual o incluso un digital worker que puede ser rápidamente “entrenado” (o configurado) por un usuario de negocios de una manera intuitiva, que es similar a como un usuario operativo entrenaría a un colega humano.

El beneficio de este enfoque:

  • Permite que los departamentos que quieran estas soluciones con una curva de aprendizaje no muy grande puedan desarrollar Bots ellos mismos.
  • Libera a los equipos de IT de este tipo de automatizaciones, pudiéndose centrar en temas más estratégicos. Por lo tanto, RPA se considera una solución complementaria de las iniciativas de automatización existentes.

¿Qué hace a los RPA una buena solución para la automatización?

Este tipo de herramientas han evolucionado bastante, y no es solo su arquitectura o su filosofía (que tiende a no tener código o usar la UI como el humano) lo que le has hacen útiles, sino su capacidad de resolver problemas con el UI usando técnicas e integrándolas todas en una sola solución como:

  • Visión por computador: habilidad para reconocer imágenes en la pantalla por varios métodos, incluidos avanzados de Inteligencia artificial, para automatizar sistemas ‘virtualizados’ u obsoletos.
  • Avanzados OCR: reconocedor de caracteres en documentos, clic a caracteres, extraer textos de PDFs, imágenes, etc.
  • Integración de herramientas de Inteligencia artificial como procesamiento del lenguaje o machine learning, entre otros.
  • Desktop, Mobile, API and Web Automation, todo bajo la misma herramienta es una gran ventaja para automatizaciones e2e (End to End)
  • Integración de aplicaciones/plataformas como CITRIX, SAP, Excel, Outlook, etc.; para automatizar tareas.
  • Normalmente tienen un Entorno Integrado para grabar, organizar el código en Librerías, un explorador de objetos para identificar/resaltar en tiempo real, Integración con gestores de código como Git, un depurador, etc.

El mercado de RPA es amplio y vamos a nombrar (nos dejaremos muchos en esta lista) a los cinco principales:

RPAWEB
uiPathhttps://www.uipath.com/es/
Blue Prismhttps://www.blueprism.com/es/
Automotion AnyWherehttps://www.automationanywhere.com/la/
Kryonhttps://www.kryonsystems.com/
EggPlant RPAhttps://www.eggplantsoftware.com/eggplant-robotic-process-automation

uiPath es una buena opción para comenzar con este tipo de herramientas debido a su versión community sin coste para un número limitado de Bots, y con una buena comunidad y tutoriales detrás.

No obstante, tenemos otras opciones también muy buenas como Automation AnyWhere, Kryon, Blue Prism o, incluso, EggPlant, que tienen soluciones muy orientadas a Testing funcional y performance que no son nada despreciables.

Arquitectura de un RPA

Una ventaja que diferencia a este paradigma a la ejecución de clásica de Bots aislados ( que también podría ejecutarse así pero pierde potencialidad) es su arquitectura basada en la orquestación y orientada a Cloud, donde teóricamente se podría diferenciar tres partes:

  1. La grabación y desarrollo del script (RPA Workflow designer & RPA Recorder): su objetivo desarrollar/diseñar los pasos del Bot.
  2. La ejecución del Bot autónomo (RPA Robot): el Bot puede ser ejecutado o visto incluso como un servicio que puede estar 24 horas, o bien trabajando o siendo accionado por un trigger o evento de usuario/máquina.
  3. Orquestación: será la encargada a demanda, planificado o siendo accionado por un disparador/evento o acción sobre un entorno de administrar 1 a N bots para realizar tareas de negocio concretas. Lo importante es que los procesos robóticos pueden ser administrados por una central/orquestador para añadir máquinas objetivos, controlar ejecuciones, sacar estadísticas, etc. (RPA Self-Service & RPA Central).

RPA y Testing

Hay que diferenciar entre hacer testing y verificar la validez de un proceso RPA en sí mismo, el cual solucionará una tarea de fuerza de trabajo en un entorno normalmente productivo usando el RPA para automatizar pruebas funcionales imitando el uso del humano de la aplicación para encontrar fallos durante el desarrollo de software.

Para la automatización de pruebas funcionales, las herramientas de RPA nos pueden ayudar a solucionar problemas que con método tradicionales no podríamos, o podríamos pero integrando varias herramientas haciendo el mantenimiento de nuestro código costoso.

A continuación, vemos una solución de una marca concreta como es uiPath (anteriormente nombrado en este artículo), que nos proporcionaría una solución con una arquitectura que combina Integración continúa, testing y RPA:

  1. Los sistemas de integración continúa ( Bamboo, Jenkins, GitLab .. ) se conectan con el orquestador y crean entornos para el testing.
  2. Los bots realizan el testing y actualizan el Test manager Hub que actualiza los gestores de pruebas como ALM, TestRail, etc.
  3. Test manager App donde se pueden realizar reporting, registrar pruebas, etc.

Conclusiones

Hemos visto cómo durante estos años ha surgido un nuevo paradigma para la automatización de procesos imitando al humano complementando los sistemas de automatización existentes en el mercado, además de una arquitectura orientada a la orquestación.

Los RPA nos proporcionan diversas herramientas que solucionan infinidad de problemas de interacción con las diferentes interfaces: UI, Desktop, Mobile, sistemas virtualizados, etc, y con técnicas avanzadas como la visión de computador, OCR, distintas métodos de Inteligencia artificial, etc.

Para el testing no solo existen arquitecturas que nos permiten un gran escalado de RPA como uiPath, sino que podemos usarlo como una herramienta más incluyéndolo en nuestro proceso de pruebas, solucionando o aumentando nuestro número de funcionalidades que de otra manera no se podrían automatizar o garantizar el retorno de la inversión.

Jaime Rodríguez,
QA Service Manager