Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

Tabla de contenidos
maxLevel4
indent20px

Introducción

El objetivo de este artículo es exponer una serie de directrices relacionadas con la implementación de las pruebas funcionales automatizadas. Es importante señalar que esta página es sólo una parte de la normativa que está pendiente de publicar.

...

Por tanto, se encuentran las clases Page Objects donde se ha de implementar los elementos de la interfaz de usuario que permiten interactuar con el sistema de información. Y por otro lado las clases de test con las pruebas a realizar, donde se desarrolla la lógica del test utilizando los elementos descritos en las clases Page Object. Por último, es necesario y fundamental tener presente los distintos navegadores donde se pueden ejecutar los casos de prueba.

DIRECTRIZ 9: Buenas prácticas. Implementación de la clase Page Object

Para la codificación de cada clase page object se utilizarán los métodos proporcionados por Selenium para interactuar con los diferentes elementos de la página web, como por ejemplo:

  • Para la identificación de los elementos, sobre los que se interactúa en la prueba, es necesario la utilización de un id único en la etiqueta de cada componente.

Ejemplo:

<div id="page">

<div id="full-height-container">

<div id="header-precursor">

...

  • Hacer click en un botón o enlace elemento.

...

  • click();
  • Escribir información en un campo de texto elemento.sendKeys(“Texto a introducir”);
  • Recuperar el texto de un elemento: elemento.getText();
  • Verificar si el elemento se encuentra disponible en la página inputSearch.isDisplayed();

DIRECTRIZ

...

10: Buenas prácticas. Uso de framework y librerías

Para la codificación de las pruebas automatizadas se recomienda el uso del siguiente conjunto de herramientas:

  • JUnitFramework para la ejecución de test unitarios y de integración.
  • TestNG: Framework basado en JUnit pero que cubre el espectro completo de pruebas: unitarias, integración, funcionales, end-to-end…
  • SeleniumFramework para la ejecución de scripts de pruebas sobre un navegador web.
  • LogBackFramework para la generación de trazas. Teniendo que guardar en ellas los pasos del proceso de cada prueba.
  • Librería de Utilidades: Se recomienda el uso de una librería de Utilidades que ha sido desarrollada por el equipo de la Oficina de Calidad y que contiene las acciones básicas para inicializar el driver, escribir el log, etc. A continuación se describe cómo hacer buen uso de ella, asñi como alguna de sus funcionalidades.
    •  Se tendrá que instanciar un objeto de tipo UtilSelenium y la clase que instancie el objeto UtilSelenium hereda de la clase BasePrueba de la librería. Para instanciar dicho objeto se utiliza el método getInstancia el cual recibe tres parámetros. 
      • Nombre del log
      • Navegador a utilizar en la prueba
      • Versión del Selenium WebDriver a utilizar
    • imprimirPaso: Utilizado para escribir en el log el paso X (autoincremental) y la información que se pasa como texto como resultado de la realización de dicho paso. Recibe un parámetro String con la descripción del paso a realizar.
    • getLogger: Embebe las utilidades del LogBack dentro de la librería.
    • getDriver: Embebe las utilidades del WebDriver dentro de la librería.
    • imprimirResultadoEsperado: Comprueba el parámetro que indica si la prueba ha ido bien con un Assert y escribe en el log dicho resultado. Este método recibe un parámetro Booleano que indica si la prueba ha ido bien o no.
    • cerrarDriver finaliza la instancia del objeto UtilSelenium.

Image Added

DIRECTRIZ 11: Redacción de pruebas. Uso de Gherkin

Cada caso de prueba deberá contener definido el escenario de la prueba a realizar en lenguaje GHERKIN pudiendo elegir entre los tipos “Scenario” o “Scenario outline” (caso de prueba parametrizado mediante una tabla).

Dentro de las features solo debe incluir información relativa al negocio, y nunca aspectos técnicos de configuración; estos irían dentro de profiles o directamente en los pipelines del Jenkins.

A continuación se indica un ejemplo de para la descripción de un caso de prueba utilizando Gherkin:

Scenario: descripción del escenario a ejecutar

     Given  Cumplo una precondición

     [And]

     When [Ejecuto una acción]

     Then [Observo este resultado]

     But [No debería poder observar este otro resultado]


Scenario outline: descripción del escenario parametrizable a ejecutar

Given  Cumplo una precondición con <input_1>

[And] y cumplo con <input_2>

When Ejecuto una acción sobre <button>

Then Observo este resultado <output>

But No debería poder observar este otro resultado


Examples:

input_1   | input_2   | button     | output  |

| valor1      | valor2     | etiqueta   | salida   |