Skip to main content

Ejemplo Adaptador API/Servicios Web

English

Descripción

¿Qué es un servicio web? Un servicio web es una API que se utiliza para la comunicación entre diferentes equipos a través de una red, originalmente con el formato de XML. Un cliente utiliza un servicio web cuando lleva a cabo una solicitud, habitualmente como un mensaje XML y el servicio web le responde en XML. Esta comunicación se lleva a cabo a través de una red, siendo el HTTP el medio de conectividad más común que utilizan los dos sistemas. Por lo tanto, necesita una web para funcionar en todos los casos.

¿Qué es una API? API (interfaz de programación de aplicaciones) es un software que permite que dos aplicaciones se comuniquen entre sí. Nunca están en la superficie de una web o aplicación, por lo tanto, no son visibles, son circuitos internos que sólo los desarrolladores ven y conectan para hacer funcionar una herramienta. Las API's son un conjunto de especificaciones y reglas que permiten que un programa se comunique con otro.

Una API, no siempre es un servicio web y por lo tanto no está limitada a un formato XML para transferencia de datos, es libre. Las API pueden funcionar en línea o sin conexión. 

En este caso el cliente no tiene la necesidad de saber a qué procedimientos llama dentro del servidor. Ambos facilitan la transferencia de información. A diferencia de los servicios web, las API's son mucho más dinámicas.

Enunciado del ejercicio

Este es un ejemplo de un caso de prueba automatizado en el que utilizamos el Adaptador API/Webservices. Para probarlo, vamos a:

Acceder manualmente a la web https://petstore.swagger.io/ y ver todas las funciones que tiene y cómo se hacen las peticiones.

Cuando hablamos de Swagger nos referimos a una serie de reglas, especificaciones y herramientas que nos ayudan a diseñar, construir y documentar nuestras API's. De esta manera, podemos realizar documentación que sea realmente útil para las personas que la necesitan. Swagger nos ayuda a crear documentación que todo el mundo en tienda.

A través de la interfaz de usuario de Swagger, Swagger UI, podremos organizar nuestros métodos (get, put, post, delete) y categorizar las operaciones. Cada uno de los métodos es expandible, y en ellos podemos encontrar un listado completo de los parámetros con sus respectivos ejemplos. Incluso podemos probar valores de llamada.

Imagen1 API-webservice.png

Imagen2 API-webservice.png

Imagen3 API-webservice.png

Crear un diagrama en TAST en el que:

  • Se cree un nuevo usuario de acceso a la api.
  • Obtener los datos del usuario creado.
  • Crear una mascota nueva en la api.
  • Obtener los datos de la nueva mascota.
  • Obtener todas las mascotas disponibles (estado “available”) y guardar los datos en una excel (solamente el id y el nombre).

Resolución del caso de prueba

Se ha resuelto de dos maneras diferentes. En los dos casos hemos trabajado con los mismos adaptadores y las PF’s utilizadas también han sido prácticamente las mismas. La diferencia más notable es que en uno de ellos se han creado tres Subtestcases:

  • Creación y obtención de datos nuevo usuario.
  • Creación y obtención de datos nueva mascota.
  • Obtención de mascotas disponibles y registro de sus nombres e ids.

A continuación, os dejamos el enlace a los dos diagramas que podéis ejecutar:

Diagrama 13298

13298_2PruebaconAdaptadorWebservice.png

Diagrama 13303

13303_3PruebaconAdaptadorWebservice.png

Hemos diseñado estos dos casos de prueba utilizando tres Adaptadores: el Adaptador de Objetos de Usuario, el Adaptador Webservice  y el Adaptador de Excel.

Adaptador Usuario

Siempre presente en todos los diagramas. Todos los mensajes definidos en el diagrama parten de este adaptador. No tiene parámetros de inicialización.

Adaptador Webservice

Este adaptador es utilizado para ejecutar pruebas de Servicios Web: REST, SOAP. Puede hacer todo tipo de llamadas y realizar comprobaciones sobre estas.

En la configuración del adaptador debemos incluir todos los datos que consideremos descriptivos del servicio en general y que se aplican a todas sus peticiones. De forma que el usuario no tenga que pasarlos en cada mensaje del diagrama. Como por ejemplo la url base del servicio, las cabeceras o el método de autenticación.

  • Keep/Session: en caso de ser marcada la sesión seguirá activa durante las diferentes llamadas.
  • Service-Charset: es el conjunto de caracteres que se utilizaran en el servicio HTTP, el más común es:
    • UTF-8
  • IsSecure: indican el tipo de protocolo (http o https).
  • Headers: podemos indicar las cabeceras comunes para todas nuestras llamadas.
  • Authentication Type:
    • NoAuth.

Imagen4 API-webservice.png


Adaptador Excel

Puede ser utilizado como una herramienta para la gestión de datos, ya sea como datos de entrada o de salida.

En este caso de prueba, una vez que hemos obtenido todas las mascotas disponibles (estado “available”), guardamos los datos en una excel (solamente el id y el nombre):

  • FilePath: especifica la ruta del archivo. Indicamos el path y el nombre del fichero que queremos que se cree.
    • En el diagrama 13298 será: #pathLog\Mascotas.xlsx
    • En el diagrama 13303 será: #pathLog\Mascotas1.xlsx
  • Sheet: es la hoja activa sobre la que trabajamos: 1

Imagen5 API-webservice.png


  • Create/Overwrite: cuando la casilla de verificación está marcada, TAST creará un nuevo archivo o lo sobrescribirá si el archivo ya existe.

Funciones y elementos relevantes

Separaremos las funciones por el adaptador al que pertenecen.

Funciones del Adaptador de Usuario

  • failTest(ErrorMsg): devuelve el error con o sin el mensaje de error que el usuario introduce como parámetro en ErrorMsg. Utilizado para hacer fallar la prueba en caso de algún error.
  • setVariable: crea una variable, cuyo nombre es introducido como parámetro:
    • La variable #numNombres cuyo valor es #TastOutputRowNombresMascotas.getLength().
    • La variable #nombreMascota cuyo valor es #TastOutputRowNombresMascotas.getCellValue(#i).
    • La variable #numIds cuyo valor es #TastOutputRowIdsMascotas.getLength().
    • La variable #IdMascota cuyo valor es #TastOutputRowIdsMascotas.getCellValue(#i).

Funciones del Adaptador Webservice

  • postRest(resource, headers, content-type, body): permite configurar una petición Http de tipo Post.

Función POST, para crear un nuevo usuario.

Imagen6 API-webservice.png


En el diagrama 13298                                                                                                     En el diagrama 13303

Imagen7 API-webservice.png                                                 Imagen8 API-webservice.png    



Función POST, para crear una nueva mascota.

Imagen9 API-webservice.png


En el diagrama 13298                                                                                             En el diagrama 13303

Imagen10 API-webservice.png                                          Imagen11 API-webservice.png 



  • getRest(resource, headers, parameters): permite configurar una petición Http del tipo Get.
Función GET, para obtener los datos del usuario creado.

Imagen12 API-webservice.png

Imagen13 API-webservice.png

  • getResponseStatus(StepResponse): permite recuperar el código de estado Http de la respuesta.
  • getElementsValueByJsonPath(JsonPath, ResponseName): devuelve todos los elementos que tienen el mismo JsonPath.

Funciones del Adaptador Excel

  • setTableValue(): genera el valor de la celda en el archivo Auxiliar Excel, basado en el valor indicado por los parámetros RowNum, ColNum y ValueCell.

Subtestcases

En este diagrama (Diagrama 13298) se han creado tres Subtestcases. La primera para crear y obtener datos del usuario creado. La segunda para crear y obtener datos de la nueva mascota y la tercera para obtener los nombres de las mascotas y sus correspondientes id. Obtendremos un resultado de cada subtestcase aparte del resultado final.

Imagen14 API-webservice.png

Fragmento Combinado: Bucle FOR

Para obtener todas las mascotas disponibles y su id, tanto en el diagrama 13298, cómo en el diagrama 13303, hemos creado dos bucles FOR. Todos los pasos incluidos en este bucle se ejecutarán varias veces, de acuerdo con los parámetros indicados en la pestaña de propiedades del fragmento.

Para obtener todas las mascotas

  • Guard: #i ⇐ #numNombres
  • Variable para iteración: i
  • Caso de inicio 1, tipo de incremento +, incremento 1

Para obtener todas los id:

  • Guard: #i ⇐ #numIds
  • Variable para iteración: i
  • Caso de inicio 1, tipo de incremento +, incremento 1

    Ejemplo del bucle FOR en el diagrama 13298

    Imagen15 API-webservice.png

    Ejemplo del bucle FOR en el diagrama 13303

    Imagen16 API-webservice.png

Ejecución del Test Set

Al abrir el Cliente de TAST, buscamos los casos de prueba y lanzamos la ejecución. Comprobamos si se ha realizado correctamente, si aparece marcada en verde la casilla de Status en los dos casos.

Imagen17 API-webservice.png

Captura de resultados

Al terminar de ejecutar este caso de prueba, tenemos como resultado la carpeta de evidencias, donde se almacena el log de la ejecución, como los ficheros que se hayan podido generar.

Abrimos el icono que está al lado de la casilla Status y nos va a mostrar la ruta donde se almacena la carpeta de evidencias:

Diagrama 13298:  a parte de generarse como veis en las imágenes los ficheros correspondientes, en este, se han creado tres carpetas, una por cada subtescase:



Imagen171 API-webservice.png

Diagrama 13303



Imagen172 API-webservice.png

Log de la ejecución   


Diagrama 13298

Imagen18 API-webservice.png

Diagrama 13303

Imagen19 API-webservice.png

A la hora de devolvernos los resultados, TAST nos devuelve un documento Word, en el que se detallan los pasos que hemos realizado, los resultados obtenidos de cada paso, los enlaces al diagrama y al conjunto de pruebas, si hemos dado a descargar documento en la casilla de Resultados.

Archivos que se generan al ejecutar el caso

Diagrama 13298:  #pathLog\Mascotas.xlsx

En este primer caso de prueba, se ha generado una Excel donde se registran todas las mascotas y sus correspondientes id.

Imagen20 API-webservice.png

Nos vamos hasta el final de la Excel para comprobar cómo se ha registrado el nombre de la mascota que hemos dado de alta nosotros y su correspondiente id.

Imagen21 API-webservice.png

Diagrama 13303:  #pathLog\Mascotas1.xlsx

 En este segundo caso de prueba igualmente se ha registrado el nombre de todas las mascotas con sus correspondientes id.

Imagen22 API-webservice.png

Al final de la Excel, aparecerá nuestra mascota y su id.

Imagen23 API-webservice.png

Os pasamos un link, para que accedáis al vídeo con la explicación del caso de prueba: Vídeo del caso de prueba