X
BLOG

¿Qué es GraphQL y cómo probarlo?

¿Qué es GraphQL y cómo probarlo? Tiempo de leer: 6 minutos
Probar puntos finales GraphQL es tan necesario como cualquier otra prueba de puntos finales y las pruebas automatizadas están aquí para echar una mano. Obtenga más información sobre cómo probar los puntos finales GraphQL con la automatización de pruebas a continuación.

GraphQL es un lenguaje de consulta para API que comenzó en Facebook antes de ser de código abierto en 2016. La simplificación de las consultas y respuestas proporcionadas por GraphQL se originó en el uso dentro de aplicaciones móviles, pero tiene una utilidad general para simplificar el uso de API complejas al tiempo que reduce el cantidad de datos devueltos.

¿Qué es GraphQL?

Cuando se creó originalmente el proyecto GraphQL, se creó para resolver un problema específico. En 2011, como la mayoría de los usuarios interactuaban con aplicaciones desde sus navegadores, comenzamos a ver una fuerte migración de servidores web a dispositivos móviles. Particularmente en el caso de Facebook, esto requirió llamar a múltiples API desde múltiples ubicaciones diferentes en la aplicación. Dependiendo de lo que el escenario intentara lograr, esas API entregarían demasiada o muy poca información. Entonces, para resolver este desafío, lo siguiente que hizo Facebook fue intentar crear una forma de simplificar la entrega de información y reducir el tráfico total que se requería para lograr sus escenarios.

Esto dio origen a GraphQL. La tecnología fue utilizada originalmente en su totalidad por el equipo móvil de iOS de Facebook y luego se propagó al resto de las interfaces móviles. Pronto, la gran mayoría de todas las interacciones móviles estaban aprovechando sus API GraphQL. En 2015, Facebook anunció la implementación, el mundo vio las ventajas de usar la tecnología y se produjo una rápida adopción.

¿Cómo probar las implementaciones de la API GraphQL?

GraphQL es una capa de abstracción que existe entre los sistemas de front-end y las API de back-end, por lo que es esencial realizar pruebas. Las consultas GraphQL le permiten acceder a múltiples recursos en el backend y agregar esos datos en una única respuesta significativa.

Captura de pantalla de GraphQL que muestra ejemplos de código de datos descriptivos, pregunte qué desea y obtenga resultados predecibles.

Las API de backend suelen ser granulares porque queremos crear nuevos bloques de construcción reutilizables para nuestras aplicaciones; sin embargo, eso no se traduce directamente en nuestras historias de usuario o en las acciones que queremos poder realizar desde el front-end. GraphQL es una forma de simplificar las interacciones con sus datos de backend, mediante el uso de una interfaz cuyos esquemas describen el comportamiento del sistema para que pueda obtener datos eficientes de sus API.

Cada uno de los mapas de funciones del esquema GraphQL. Estas funciones luego realizarán llamadas posteriores al backend, de acuerdo con su lógica comercial, contra sus API REST, bases de datos y cualquier otro recurso necesario para recopilar los datos solicitados.

Luego, las funciones reunirán los datos necesarios en una respuesta que mantendrá la misma forma que la solicitud, lo que facilitará la comprensión de qué datos están asociados a qué elementos de la solicitud.

Pregunta lo que necesites,
conseguir exactamente eso - graphql.org

Además, GraphQL se puede configurar para llamar a varios servicios de backend a medida que ensambla su respuesta a la consulta. Esto reduce el tiempo total que un consumidor necesita pasar navegando por los documentos de la API para comprender y leer qué información está disponible en una llamada.

GraphQL frente a las API REST tradicionales

GraphQL puede ofrecer muchas ventajas sobre las interfaces API REST tradicionales. Como la mayoría de las implementaciones de tecnología, no existe una fórmula mágica o una pila de tecnología que sea mejor que otra. Pero una de las razones por las que GraphQL está ganando terreno es por su flexibilidad para recuperar información.

Cuando usa una API REST tradicional, generalmente la llamada que desea realizar para recuperar su información no es la única llamada que realiza en el sistema. Por ejemplo, si quiero recuperar el saldo de mi cuenta, lo primero que debo hacer es recuperar mi número de cliente y luego usar ese número de cliente para recuperar mis números de cuenta. Una vez que tenga mis números de cuenta, puedo consultar el saldo de esa cuenta:

  1. Iniciar sesión = CustomerId
  2. CustomerId = ID de cuenta
  3. AccountID = Saldo

No hay nada de malo con las API REST. Estos son simplemente ellos trabajando para permitirnos construir acciones discretas que se pueden aprovechar de muchas maneras diferentes. Pero en este caso particular, para recuperar la información que quería, tuve que hacer llamadas con una secuencia de tres API encadenadas. Además, si pensamos en el volumen de datos que se intercambiaron en esta interacción para cada una de estas llamadas a la API, tuvimos que enviar la solicitud adecuada y recibir una respuesta completa definida por el esquema. En nuestro caso, realmente solo necesitaba lidiar con los tres valores de ID de cliente, ID de cuenta y saldo.

Entonces, veamos cómo se llevaría a cabo esta transacción en el mundo GraphQL:

consulta {
Cliente (nombre: "Chris Colosimo") {
    ID de la cuenta{
        Balance
  }
 }
}

Si es un usuario veterano de GraphQL, tome esa solicitud con un grano de sal. Lo uso para ilustrar que lo que tradicionalmente se lograría con tres llamadas API se puede lograr con una usando GraphQL. La mejor parte es que no requiere la reimplementación de su funcionalidad existente.

Hay muchos adicionales pros y contras entre REST y GraphQL, pero es importante tener en cuenta que las API GraphQL y REST no son mutuamente excluyentes y la adopción de una no excluye a la otra. De hecho, los dos trabajan juntos de manera bastante armoniosa. Ya sea que esté realizando pruebas de API, GraphQL o pruebas de carga. GraphQL es algo que siempre debe tenerse en cuenta cuando se busca agregar a sus recursos de front-end.

En teoría: debe usar GraphQL cuando desee crear una interfaz simple y eficiente para los consumidores que desean aprovechar sus API. Además, es posible que desee considerar aprovechar GraphQL cuando desee reducir el tráfico total intercambiado entre su interfaz y el backend, como lo hizo Facebook para el tráfico móvil.

Pruebas automatizadas de puntos finales GraphQL

GraphQL es una tecnología muy poderosa que permitirá a los consumidores de API acceder a su información de una manera más eficiente, pero para asegurarse de que la experiencia funcione de la manera esperada, debe validar sus API GraphQL. Aquí es donde entra en juego la automatización de pruebas.

Existen muchas herramientas de automatización para decidir cómo probar sus API GraphQL. Les voy a dar un ejemplo usando Parasoft SOAtest, un Solución de prueba API eso simplifica el desafío a menudo abrumador de validar sus API críticas en múltiples tecnologías. Admite una amplia gama de formatos y protocolos de mensajes y ha tenido soporte GraphQL por un tiempo.

Vea en acción la solución líder de pruebas funcionales de API y UI con tecnología AI y ML.
Pruebe Parasoft SOAtest ahora

Los puntos finales GraphQL aceptan consultas (como cadenas) y devuelven respuestas JSON con los resultados de la consulta. Esto encaja muy bien con SOAtest, ya que los clientes REST pueden realizar consultas para enviar las consultas y las herramientas de verificación JSON existentes pueden realizar la validación.

Considere el siguiente ejemplo simple de consulta GraphQL:

consulta {
   usuarios {
      Nombre
      apellido
      }
   }

Un retorno esperado sería algo como:

{
   "datos" : {
      "Usuarios": [
         {
            "Nombre": "Juan",
            "Apellido": "Doe"
         },
         {
            "Firstname": "Alicia",
            "Apellido": "Smith"
         }
      ]
   }
}

Esta misma consulta se puede crear en Parasoft SOAtest como un cliente REST:

Captura de pantalla de la creación de una consulta en Parasoft SOAtest como cliente REST.

En SOAtest, las consultas GraphQL se envían como una cadena denominada "consulta". Las respuestas se devuelven en JSON que SOAtest puede interpretar y representar fácilmente en su visor de tráfico:

Captura de pantalla de Parasoft SOAtest Traffic Viewer.

Se esperan los valores devueltos. Obviamente, necesitamos una forma automatizada de verificar estos resultados y el asertor SOAtest JSON es útil aquí.

Verificación de las respuestas de GraphQL

SOAtest verifica las respuestas JSON mediante aserciones configuradas con su herramienta de aserción JSON. Aquí hay un ejemplo de verificación para ver si el primer nombre devuelto es una cadena "Luis" (que sabemos que no es un valor válido).

Captura de pantalla que muestra SOAtest verificando respuestas JSON mediante aserciones.

Al ejecutar la prueba nuevamente, la prueba falla:

Captura de pantalla de la pestaña Tareas de calidad que muestra la prueba fallida.

Como puede ver, es sencillo probar los puntos finales GraphQL en SOAtest utilizando capacidades ya existentes.

¿Qué pasa con la autenticación? Esto ya lo maneja SOAtest y las herramientas de autenticación de clientes existentes también funcionarán con los puntos finales GraphQL:

Captura de pantalla de opciones HTTP.

¿Por qué Parasoft SOAtest para pruebas GraphQL?

Los beneficios que SOAtest aporta a REST, SOAP y otras pruebas de API siguen siendo los mismos para GraphQL. Diseñado para encajar en una infraestructura de prueba existente, Parasoft SOAtest acelera las pruebas que permiten un desarrollo ágil al ayudar a los evaluadores a trabajar de manera más inteligente, con pruebas sin scripts que facilitan la colaboración entre los equipos de desarrollo, pruebas, rendimiento y seguridad.

Parasoft SOAtest hace que las pruebas sean fáciles de crear, administrar y orquestar, y fáciles de ejecutar, escribir y analizar. Más allá de GraphQL, el soporte de SOAtest para más de 120 formatos / protocolos de mensajes más la generación de pruebas con la ayuda de IA y aprendizaje automático está facilitando las pruebas de API.

¿Quiere ver las pruebas GraphQL en acción?

Eche un vistazo a este video, donde hacemos precisamente eso:

Vea en acción la solución líder de pruebas funcionales de API y UI con tecnología AI y ML.
Pruebe Parasoft SOAtest ahora
Escrito por

Chris Colosimo

Como Gerente de Producto en Parasoft, Chris elabora estrategias para el desarrollo de productos de las soluciones de pruebas funcionales de Parasoft. Su experiencia en la aceleración de SDLC a través de la automatización lo ha llevado a implementaciones empresariales importantes, como Capital One y CareFirst.

Reciba las últimas noticias y recursos sobre pruebas de software en su bandeja de entrada.

Prueba Parasoft