Pabot : el executor paralelo para robot framework

hace 2 años

Valoración: 4.45 (4236 votos)

En el entorno del desarrollo de software, las pruebas de automatización son cruciales para garantizar la calidad y el funcionamiento correcto de las aplicaciones. Robot Framework es una herramienta popular y robusta para la creación de pruebas automatizadas, pero cuando se trata de grandes conjuntos de pruebas, la ejecución secuencial puede volverse muy lenta. Aquí es donde entra en juego Pabot, un executor paralelo que permite ejecutar pruebas Robot Framework de forma concurrente, reduciendo significativamente el tiempo de ejecución.

Índice

¿Qué es Pabot ?

Pabot es un ejecutor paralelo para Robot Framework. Su principal función es dividir una ejecución de pruebas en varias ejecuciones más pequeñas, que se pueden ejecutar en paralelo, utilizando múltiples procesadores o máquinas. Esto acelera el proceso de testing, especialmente en proyectos grandes con muchos casos de prueba. Su sintaxis de línea de comandos es flexible y permite un control preciso sobre la ejecución paralela.

La herramienta admite todas las opciones de línea de comandos de Robot Framework y añade otras opciones específicas para gestionar la ejecución en paralelo. Algunas de las opciones más importantes incluyen:

  • --verbose : Aumenta la cantidad de información mostrada durante la ejecución.
  • --testlevelsplit : Divide la ejecución a nivel de prueba en lugar de a nivel de suite. Esto permite un paralelismo más granular.
  • --command y --end-command : Permite especificar comandos personalizados para iniciar el ejecutor Robot Framework , útil en entornos no estándar.
  • --processes : Define el número de ejecutores paralelos que se utilizarán. El valor predeterminado es el máximo entre 2 y la cantidad de núcleos de CPU.
  • --pabotlib : Inicia el servidor remoto PabotLib , el cual habilita el bloqueo y la distribución de recursos entre las ejecuciones paralelas de las pruebas.
  • --pabotlibhost y --pabotlibport : Especifican el host y el puerto del servidor remoto PabotLib .
  • --resourcefile : Indica un archivo que contiene variables compartidas para la distribución de recursos.
  • --artifacts : Define las extensiones de los archivos (capturas de pantalla, videos, etc.) que se copiarán al informe final.
  • --artifactsinsubfolders : Copia los archivos de la carpeta de salida y de sus subcarpetas.
  • --argumentfile : Permite ejecutar las mismas suites con múltiples archivos de argumentos.
  • --suitesfrom : Lee las suites desde un archivo output.xml . Esto permite ejecutar primero las suites fallidas.
  • --shard : Divide la ejecución en partes más pequeñas, útil para la distribución en varias máquinas.
  • --chunk : Agrupa las pruebas en el número de ejecuciones de Robot Framework definido por la opción --processes . Esto puede ahorrar tiempo al compartir las configuraciones y las finalizaciones.

Instalación de Pabot

La instalación de Pabot es sencilla a través de pip:

pip install -U robotframework-pabot

Alternativamente, se puede clonar el repositorio y ejecutar setup.py install.

Uso Básico de Pabot

El uso básico de Pabot es simple. Para dividir la ejecución en archivos de suite:

pabot [ruta a las pruebas]

Para dividir la ejecución a nivel de prueba:

pabot --testlevelsplit [ruta a las pruebas]

Para ejecutar las mismas pruebas con diferentes configuraciones:

pabot --argumentfile1 primero.args --argumentfile2 segundo.args [ruta a las pruebas]

PabotLib : Compartiendo Recursos entre Procesos

PabotLib es una librería que proporciona keywords para facilitar la comunicación y el intercambio de datos entre los procesos del ejecutor. Esto es útil cuando se necesita asegurar que solo un proceso accede a un recurso específico en un momento dado. PabotLib permite la creación de secciones críticas y la gestión de recursos compartidos, mejorando la robustez de las pruebas paralelas.

Control del Orden de Ejecución y Nivel de Paralelismo

El archivo .pabotsuitenamescontiene una lista de las suites que se ejecutarán. Este archivo se crea durante la ejecución de Pabot si no existe. Se puede usar la opción --ordering FILENAMEpara controlar el orden de ejecución de las suites y definir dependencias entre ellas.

Uso Programático

Pabot ofrece un punto final main_programque no llama a sys.exit, lo que permite integrarlo en otros scripts de Python.

Variables Globales

Pabot inserta variables globales en el espacio de nombres de Robot Framework para facilitar la funcionalidad de PabotLib y la creación de listeners personalizados.

Tabla Comparativa de Ejecución Secuencial vs. Paralela con Pabot

Característica Ejecución Secuencial Ejecución Paralela con Pabot
Tiempo de Ejecución Alto, proporcional al número de pruebas Bajo, reducido gracias al paralelismo
Recursos de Sistema Uso moderado Uso más intensivo, especialmente de CPU y memoria
Escalabilidad Limitada Alta, permite ejecutar pruebas en múltiples máquinas
Complejidad Simple de implementar Mayor complejidad de configuración, pero con mayor retorno

Consultas Habituales sobre Pabot

  • ¿Cómo manejar errores en la ejecución paralela? Pabot proporciona informes detallados de cada ejecución paralela, facilitando la identificación y depuración de errores.
  • ¿Cómo aumentar el rendimiento? Ajustando el número de procesos ( --processes ) y utilizando la opción --chunk se puede optimizar el rendimiento.
  • ¿Es compatible con todos los frameworks de testing? Pabot está diseñado específicamente para Robot Framework .
  • ¿Cómo distribuir la ejecución en múltiples máquinas? La opción --shard permite dividir la ejecución en partes, que pueden ser ejecutadas en diferentes máquinas.

En resumen, Pabot es una herramienta poderosa que mejora significativamente la eficiencia de las pruebas de automatización con Robot Framework. Su capacidad para ejecutar pruebas en paralelo reduce drásticamente el tiempo de ejecución y permite una mejor utilización de los recursos del sistema. Aunque requiere una configuración inicial, los beneficios en términos de tiempo y eficiencia justifican su uso en proyectos de automatización de pruebas de cualquier tamaño.

Subir