09/19/2022

¿Qué es un Framework de Automatización de Pruebas? Todo lo que debes saber

COMPARTIR EN:

  • Linkedin Logo
  • Twitter Logo
  • Facebook Logo
  • Mail Logo

Todo software debe ser sometido a algún tipo de prueba antes de que llegue a manos de los usuarios finales. Es por este motivo que las pruebas de software son una parte esencial del proceso de desarrollo de cualquier software. Garantizan que se entreguen productos de software sin defectos y de alta calidad.

Si el software es crítico para el negocio, es necesario que sea sometido a pruebas rigurosas antes de que se entregue. A menudo, estas pruebas se automatizan con la ayuda de frameworks de automatización de pruebas. Estos frameworks tienen un rol esencial en las pruebas automatizadas.


Esta guía te dará información detallada sobre frameworks de automatización de pruebas, e
incluirá información sobre distintos tipos de frameworks, la importancia que tienen para las pruebas de software y los componentes, entre otros. También incluirá información sobre Selenium, un framework de automatización de pruebas muy conocido, y su framework Híbrido.

Antes de ahondar en los frameworks de automatización de pruebas, sin embargo, comencemos con el concepto de framework.

¿Qué es un Framework?

Un framework es un conjunto de directrices y mejores prácticas bien definidas que se deberían seguir para lograr los resultados esperados. Por ende, debemos seguir estas directrices y prácticas fijadas por los frameworks de automatización para cumplir con nuestros objetivos de automatización.

¿Qué es un framework de automatización de pruebas?

Un framework de automatización de pruebas es una colección de herramientas y directrices que resultan útiles a la hora de diseñar, crear y ejecutar casos de prueba. Estas directrices incluyen normas de codificación, prácticas y procesos para el manejo de datos de prueba y de repositorios, entre otros, las cuales son de vital importancia para las pruebas automatizadas.

El desarrollo de software es un ciclo continuo en el cual una etapa ocurre varias veces. Las pruebas, por ende, también ocurren varias veces. Por ejemplo, si los desarrolladores van a lanzar una nueva versión o arreglan defectos que se encontraron en producción, el software debe someterse a pruebas de nuevo. En estas situaciones, ejecutar toda la suite de pruebas o los mismos conjuntos de casos de forma manual puede resultar tedioso.

Los frameworks de automatización de pruebas incluyen un conjunto de herramientas que le facilitarán la codificación de pruebas manuales en un programa. Es decir, siempre que deba probar una función específica, sólo deberá ejecutar el programa. Es por ello que los frameworks de automatización de pruebas tienen beneficios muy significativos para los usuarios, entre ellos el alto grado de reutilización de código y de portabilidad, y la reducción en la cantidad de esfuerzo y costo asociados con el mantenimiento de los scripts.

La importancia de los frameworks de automatización para las pruebas de software

Un framework actúa como una guía técnica para la implementación de pruebas automatizadas. Si se utiliza un framework, sin duda que se aumentará la rapidez y la eficiencia de las pruebas y de su equipo de testing. Asimismo, se mejorará la eficacia de las pruebas y se minimizarán
los riesgos.

Otra gran ventaja de los frameworks de automatización de pruebas es la reutilización de código. No sólo permitirán que los testers reutilicen código en distintos escenarios, sino que los ayudará a crear casos de prueba con un formato estándar.

La siguiente es una lista de los beneficios de los frameworks de automatización de pruebas:

Instauran una estrategia bien definida para las distintas suites de pruebas.
Mejoran la velocidad de las pruebas.
Permiten la reutilización de código.
Brindan la capacidad de probar URLs o aplicaciones de forma precisa.
Brindan la capacidad de mantener el código de pruebas de forma fácil.
Reducen los costos asociados al mantenimiento de las pruebas.
Brindan un alto grado de cobertura de pruebas.
Requieren muy poca intervención manual.
Brindan la capacidad de lograr pruebas y lanzamientos de software constantes.

Tipos de frameworks de automatización de pruebas

Ya que hemos logrado un entendimiento básico sobre frameworks de automatización de
pruebas, sigamos con los distintos tipos de frameworks de automatización de pruebas que
existen en el mercado. Básicamente, hay siete tipos de frameworks de automatización de
pruebas. Cada uno de ellos tiene sus propias arquitecturas, ventanas y desventajas.

1. Frameworks de automatización lineales.
2. Frameworks basados en datos.
3. Frameworks modulares de pruebas.
4. Frameworks de pruebas con librerías de arquitectura.
5. Frameworks de prueba basados en palabras clave.
6. Frameworks híbridos de prueba.
7. Frameworks de desarrollo basados en comportamiento.

Frameworks de automatización lineales

Estos tipos de frameworks son los más simples y los más comunes para pruebas sobre aplicaciones pequeñas. Son también conocidos como frameworks de Grabación y Reproducción. Los frameworks lineales le permiten crear y ejecutar scripts de prueba de forma individual para cada caso de prueba. El tester graba cada paso del comportamiento del usuario de forma manual, incluyendo navegaciones y datos de entrada, y agrega puntos de verificación en la primera vuelta. Luego, vuelve a reproducir el script grabado en las siguientes próximas vueltas.

Para los frameworks de automatización lineales, no es necesario que los testers escriban código personalizado. Es por ello que pueden ser utilizados por cualquier persona, por más que no tengan mucha experiencia automatizando pruebas. Estos frameworks son una forma fácil de crear scripts de prueba, y permiten que los testers los graben de forma rápida. Además, el flujo de trabajo de pruebas es fácil de entender para cualquier persona que esté involucrada en las pruebas, ya que los scripts de prueba están ordenados de forma secuencial.

La mayor desventaja de los frameworks lineales es que los datos de prueba están guardados de forma fija en el script, lo cual impide que se corran esos casos con otros datos. Es también difícil mantener los scripts de prueba ya que, a medida que las aplicaciones cambian, también los scripts deberán cambiar.

Frameworks modulares de pruebas

Estos frameworks permiten que los testers creen casos de pruebas a nivel de módulos, lo cual permite desglosar la aplicación en módulos más pequeños. Esta segregación de los scripts de pruebas en módulos hace que su mantenimiento sea más fácil y que el código de pruebas se pueda escalar.

Además, permite que los testers escriban scripts de prueba individuales independientemente de otros módulos. Sin embargo, los usuarios deberán pasar más tiempo analizando los casos de prueba para
encontrar flujos de trabajo que se puedan reutilizar si usan frameworks modulares de pruebas.

Además, el hecho de que los datos sean fijos imposibilita la reutilización de scripts de pruebas para otros conjuntos de datos de prueba. Estos frameworks también requieren que la persona que los vaya a configurar sepa de programación.

Frameworks basados en datos

El objetivo de estos frameworks es desvincular la lógica de los scripts de pruebas de los datos de prueba. De este modo, los usuarios pueden crear y ejecutar scripts de prueba automatizados utilizando distintos conjuntos de datos prueba. Estos datos de prueba se pueden almacenar en archivos externos y otros recursos como planillas, archivos XML, MS Access, y bases de datos SQL. Los testers pueden obtener los datos de prueba conectando los scripts de prueba con recursos externos.

Los frameworks basados en datos reducen de forma significativa la cantidad de scripts de prueba en comparación con frameworks modulares. Además, el hecho de poder reutilizar casos de prueba ofrece una mayor cobertura de pruebas y una mayor flexibilidad. Los usuarios pueden ejecutar las pruebas sólo cuando sea necesario y pueden cambiar los datos de prueba. Por ende, estos frameworks hacen que las pruebas sean más rápidas, y ahorran tiempo.

Sin embargo, una de las desventajas más grandes es la necesidad de tener un profundo conocimiento de programación a la hora de escribir casos de prueba si se utilizan estos frameworks. Asimismo, configurar estos frameworks lleva una gran cantidad de tiempo.

Frameworks de prueba basados en palabras clave

Estos frameworks también se llaman pruebas basadas en tablas. En ellas, se definen palabras clave o palabras de acción para cada método que se vaya a ejecutar en una planilla utilizando un formato de tabla. Luego se corren los scripts de pruebas automatizaos basándose en las palabras clave que se han definido en la planilla. La lógica que se necesita para leer las palabras clave y para llamar a los métodos que se necesitan se incluye en la clase principal.

Estos frameworks permiten que se reutilice código ya que permiten que una sola palabra clave sea utilizada en varios scripts de prueba. Para utilizar el framework, sólo se precisa un poco de conocimiento de programación. También permiten crear scripts de prueba más allá de la aplicación que se esté probando.

Sin embargo, implementar estos frameworks es muy complejo y lleva mucho tiempo, por lo que tienen un alto costo inicial. Estos frameworks son apropiados sólo para pruebas con aplicación o proyectos de menor escala.

Frameworks híbridos de prueba

Tal como lo dice el nombre, los frameworks híbridos son una combinación de dos o más tipos de frameworks de los que ya fueron mencionados. Ayudan a potenciar las fortalezas de cada tipo de framework específico y de mitigar sus desventajas.

Los testers también utilizan estos frameworks híbridos si no tienen mucha experiencia de programación. Pueden consultar las palabras clave, los datos de prueba o los repositorios de objetos para crear casos de prueba sin tener que escribir código.

Frameworks de desarrollo basados en comportamiento

El objetivo de los frameworks de desarrollo basados en comportamiento es crear una plataforma que permita que cualquier persona, ya sean desarrolladores, analistas de negocio, o testers, se involucre de forma activa en el proceso de pruebas. Por ende, favorecen la colaboración entre desarrolladores y testers en su equipo. La mayor ventaja de este tipo de framework es la capacidad de utilizar lenguaje natural, no técnico, para escribir especificaciones de prueba.

Sin embargo, los usuarios deben tener una buena aptitud técnica y experiencia previa con desarrollo basado en pruebas para utilizar este tipo de framework.

Como se puede ver, cada framework de automatización de pruebas que se ha mencionado tiene sus propias fortalezas y debilidades. Por lo tanto, elegir el tipo de framework correcto es esencial para preparar un plan de pruebas para su proyecto de automatización.

¿Qué es el Framework de Selenium?

Selenium es el principal framework de automatización de pruebas de código abierto para las pruebas sobre aplicaciones web. Este framework es un conjunto de herramientas de pruebas basadas en el framework de JavaScript.

Selenium permite que los testers aceleren sus pruebas dándoles una interfaz en la que pueden escribir las pruebas. Estos scripts se pueden escribir utilizando varios lenguajes de programación, tales como C#, PHP, Python, Ruby y JavaScript. Los usuarios crean sus propias pruebas automatizadas para cada combinación de browser y SO utilizando Selenium.

El ecosistema de Selenium tiene cuatros componentes principales:

1. Web Driver

El Web Driver de Selenium es una herramienta de automatización para browsers que permite que crear pruebas compatibles con distintos navegadores. Es el componente más importante de la suite de pruebas de Selenium.

El web driver acepta solicitudes y las manda al browser utilizando un protocolo que se adhiere al estándar W3C. Esta comunicación ocurre mediante un driver específico para cada navegador, que luego se comunica directamente con el browser y lo gestiona.

El web driver de Selenium es compatible con varios lenguajes de programación tales como C#, Python, Java, PHP, JavaScript, Perl y Ruby. Los testers pueden utilizar Webdriver con Selenium gran para correr pruebas en sistemas remotos.

2. Selenium IDE

Es una de las versiones de Selenium más antiguas y simples; es, en resumen, un plugin para Firefox. Proporciona un ambiente de desarrollo completo e integrado para pruebas de Selenium. El IDE incluye una función de grabación y reproducción que facilita las pruebas funcionales. Se debe integrar el IDE con Selenium Web driver o RC para crear un framework más sofisticado.

Este web driver funciona más rápido que Selenium RC ya que se comunica de forma directa
con el navegador.

3. Selenium Grid

Selenium Grid es una herramienta que se usa junto con Selenium RC. Consiste en ejecutar pruebas en distintas combinaciones de navegadores y sistemas operativos de forma paralela. Encamina los comandos que los clientes mandan a instancias remota de navegadores y, por ende, permite ejecutar scripts de web driver en máquinas remotas.

4. Selenium RC

Selenium RC es otro componente esencial de la suite de pruebas de Selenium. Es un servidor basado en Java que acepta comandos de los navegadores a través de HTTP. Selenium RC permite que los testers escriban casos de pruebas utilizando distintos lenguajes de programación.

Selenium RC ayuda a lidiar con algunas de las desventajas de Selenium IDE y Selenium Core.
Sin embargo, es más lento que el Web Driver ya que se comunica con el navegador a través de
una capa adicional de JavaScript llamada Selenium Core.

Ventajas de Selenium

Este framework se puede personalizar mucho, se puede adaptar, y es compatible con todos los
navegadores, sistemas operativos y frameworks de prueba más importantes. Selenium se ha
convertido en la opción por defecto cuando se trata de pruebas automatizadas, incluso 16 años
después de que fue creado.

La estructura del código del framework de Selenium permite que se reutilice código y proporciona código muy legible, por lo que es muy fácil mantener el código. También permite que varios usuarios trabajen en el mismo módulo de software.

Por otra parte, Selenium tiene una interfaz muy intuitiva para el usuario, lo cual facilita la creación y ejecución de pruebas. Su carácter de código abierto permite que los usuarios creen sus propias extensiones que permiten la integración de acciones personalizadas y permiten manipularlas a un alto nivel. Las pruebas de Selenium se ejecutan directamente en los navegadores, y los usuarios pueden observarlas mientras se ejecutan.

Funciones del framework de automatización de Selenium

Las siguientes son algunas de las funciones más importantes del framework de Selenium:

1. Compatibilidad entre navegadores
Selenium soporta casi todos los navegadores más importantes, tales como Google Chrome,
Firefox, Safari y Opera. Se puede iniciar cualquier navegador utilizando comandos simples.

2. Soporte para varios lenguajes de programación
Selenium permite que los usuarios escriban casos de prueba utilizando varios lenguajes de
programación, tales como C#, Java, Python, PHP y Perl.

3. Alta velocidad y ejecución rápida
Selenium se comunica directamente con el navegador sin necesidad de un servidor
intermediario. Por ende, proporciona un excelente rendimiento para las pruebas automatizadas.

4. Compatibilidad con distintos Sistemas Operativos
Los scripts de prueba creados con el web driver de Selenium se pueden ejecutar en varios sistemas operativos, tales como Windows, Linux o macOS.

5. Soporte para pruebas paralelas
La capacidad de ejecutar pruebas paralelas no sólo reduce el tiempo que se gasta en las
pruebas sino que también mejora la eficiencia de las pruebas.

6. La capacidad de llevar a cabo varios tipos de pruebas
Selenium permite automatizar varios tipos de prueba, tales como pruebas de regresión pruebas
unitarias, y pruebas automatizadas para navegadores.

7. Portabilidad y código abierto
El carácter de código abierto de Selenium es una de sus mayores ventajas. Se puede
descargar Selenium sin costo en su página oficial.

8. No requiere instalación de un servidor
El web driver se Selenium elimina la necesidad de instalar un servidor ya que se comunica de forma directa con el navegador.

9. Soporte para CI/CD
Los usuarios se pueden integrar a flujos de trabajo de Integración Continua y Entrega Continua
con Selenium para adoptar prácticas DevOps en las pruebas automatizadas.

10. Poco uso de recursos de hardware
Selenium usa considerablemente menos recursos de hardware que otros frameworks de automatización tales como QTP, SilkTest y UFT.

Selenium tiene funcionalidades incluso más geniales con su última versión, Selenium 4.
Selenium también es el framework base para varios otros frameworks populares tales como
TestNG, WebDriver.IO, Nightwatch y Junit.

Limitaciones de Selenium

1. La necesidad de tener experiencia y los recursos
Los usuarios deben tener muchos conocimientos, competencias técnicas y experiencia para trabajar con Selenium y sus sub frameworks. Asimismo, los testers deberían estar familiarizados con la arquitectura del framework de Selenium para utilizar todas sus funcionalidades.

2. No hay soporte para aplicaciones de escritorio
Selenium funciona más que nada con el dominio web y no soporta la automatización de aplicaciones para Escritorio.

3. No hay soporte integrado para automatización en dispositivos móviles
El propio Selenium no soporta la automatización para aplicaciones móviles. Los testers dependen de Appium para automatizar aplicaciones para Android o iOS con Selenium mediante el protocolo de WebDriver.

4. No hay una herramienta para la gestión de pruebas
Las herramientas de gestión de pruebas son muy útiles para monitorear la ejecución de los casos de prueba y para guardar datos para aplicaciones web complejas. Por ello, varias herramientas de automatización tienen herramientas de gestión de pruebas integradas para simplificar las pruebas para aplicaciones complejas. Sin embargo, Selenium no tiene una herramienta para la gestión de pruebas.

5. Se necesitan testers con muchas competencias técnicas
Selenium require ingenieros con muchas competencias técnicas para ejecutar pruebas automatizadas de forma efectiva y utilizar todas las capacidades del framework.

6. No tiene una infraestructura integrada para reportes
Los reportes son una funcionalidad imprescindible para cualquier framework de automatización de pruebas. Sin embargo, Selenium aún no tiene su propia herramienta de reportes y depende de frameworks de terceros tales como Cucumber y TestNG para la generación de reportes.

7. No es posible tener resultados precisos con elementos web dinámicos
Hay algunos elementos web dinámicos que no son inmediatamente visibles cuando la página web carga. Selenium tiene problemas con el manejo de este tipo de elementos.

8. Selenium tiene problemas para manejar frames y popups
Selenium no tiene soporte nativo para las ventanas popup que se generan en el sistema operativo Windows.

9. No se puede automatizar captchas o códigos de barra
Selenium no puede trabajar con captchas y códigos de barra. A pesar de que hay algunas herramientas de terceros que se pueden integrar con Selenium para automatizar captchas, no garantizan resultados precisos.

10. Soporte limitado para pruebas con imágenes

Componentes de los Frameworks de Automatización de Pruebas

Crear y mantener un framework de automatización de pruebas efectivo es clave para el éxito de cualquier proyecto de automatización de pruebas. Un framework de automatización de pruebas tiene seis componentes principales si se quiere ejecutar pruebas automatizadas de forma exitosa. Veamos cuales son a continuación:

1. Un sistema bajo prueba
El sistema objetivo es el componente inicial de un framework de pruebas. Sin embargo, los subsistemas del sistema deben ser estables para obtener los resultados deseados de las pruebas automatizadas. Además, estos subsistemas deben funcionar bien como un conjunto
antes de comenzar las pruebas automatizadas.

2. Plataforma de pruebas
La plataforma de pruebas es la infraestructura de red en la cual se va a probar la aplicación. La
configuración de red debería estar adecuadamente implementada para llevar a cabo pruebas
automatizadas. Debería incluir elementos tales como servidores, enrutadores, interruptores, nodos, y configuración servicios de gestión, los cuales son esenciales para configurar el
ambiente de pruebas y para ejecutar los casos de prueba.

3. Librerías con casos de pruebas
Se requieren varias herramientas para crear casos de pruebas. Algunos ejemplos de herramientas son herramientas de automatización de pruebas, herramientas de soporte, de generación de tráfico, y de monitoreo, entre otras. Es crucial integrar las herramientas de automatización de pruebas con las herramientas de soporte para reportar de forma automática cualquier defecto o caso de prueba que falle. Una aplicación de soporte llamada Test Factory es capaz de proporcionar tendencias y patrones en los resultados de las pruebas
automatizadas.

4. Prácticas para las pruebas automatizadas
Es de vital importancia documentar cómo automatizar casos de pruebas utilizando librerías y
herramientas de casos de pruebas. También se recomienda mantener una plantilla estandarizada para casos de prueba automatizados. Dicha planilla asegurara que los casos de prueba automatizados creados por distintos testers serán consistentes. Se debe preparar una lista con todos los servicios y con directrices de cómo utilizarlos, ya que mejorará la eficiencia de las pruebas. Además, se debe documentar el procedimiento para mantener librerías de casos de prueba.

5. Herramientas de prueba
Se requieren varias herramientas para crear casos de pruebas. Algunos ejemplos de herramientas son herramientas de automatización de pruebas, herramientas de soporte, de generación de tráfico, y de monitoreo, entre otras. Es crucial integrar las herramientas de automatización de pruebas con las herramientas de soporte para reportar de forma automática cualquier defecto o caso de prueba que falle. Una aplicación de soporte llamada Test Factory es capaz de proporcionar tendencias y patrones en los resultados de las pruebas automatizadas.

6. Gestor de Pruebas
El gestor de pruebas es la persona responsable de llevar a cabo las pruebas automatizadas. Es
el responsable de las siguientes tareas:

Gestionar las plataformas de prueba, las herramientas y las liberarías de casos de
prueba.
Proporcionar directrices para las pruebas.
Mantener una colección de plantillas.
Ayudar a los testers a escribir scripts de prueba utilizando librerías de casos de prueba.
Proporcionar guías de documentación a los usuarios que están comenzando a utilizar
las herramientas y colaborar con proveedores y usuarios de la herramienta.

¿Qué es el Framework Híbrido en Selenium?

Selenium tiene varios tipos de frameworks para satisfacer las necesidades de los distintos proyectos de automatización.
El web driver de Selenium tiene tres tipos de framworks para

automatizar casos de prueba:
Frameworks de prueba basados en palabras clave
Frameworks de prueba basados en datos
Frameworks híbridos de prueba

En esta sección, sólo se presentará información sobre el framework Híbrido en Selenium.

El framework Híbrido es una combinación del framework basado en datos y el framework
basado en palabras clave, y puede incluir también los otros tipos de frameworks que ya se han mencionado. Utiliza distintas estructuras de estos frameworks individuales y los integra para construir un framework más efectivo

En este framework, las palabras clave y los datos de prueba se extraen de recursos externos. Los usuarios mantienen las palabras clave en un archivo de clase de Java separado, y utilizan hojas de cálculo para mantener los casos de prueba. Pueden usar el framework de TestNG como proveedor de datos para los datos de prueba.

Este framework híbrido de Selenium es muy similar al framework basado en palabras clave. No
hay más nada que reemplazar además del archivo ExecuteTest.java, que debe reemplazarse con el archivo HybridExecuteTest.java. El archivo HybridExecuteTest.java tiene todo el código para las palabras clave además del concepto del proveedor de datos.

Conclusión

En los ciclos acelerados de desarrollo de software actuales, la automatización de pruebas tiene
un rol indispensable ya que mantiene la velocidad y la productividad de las pruebas de
software.

Los frameworks de automatización simplifican el trabajo aún más, ya que proporcionan un ambiente ideal para desarrollar y ejecutar casos de prueba. Cuando seleccione un framework de automatización para su proyecto, debería elegir uno con una muy buena flexibilidad y con soporte para una amplia gama de aplicaciones y lenguajes. Esto permitirá que los miembros de su equipo puedan contribuir de forma efectiva al proceso de pruebas, más allá de su formación o sus habilidades.