¿Sabía que hoy las API son críticas en el desarrollo de aplicaciones? Conozca qué son, tipos, beneficios y algunas buenas prácticas para iniciarse en el mundo de las Pruebas API.

Gracias a la evolución de las aplicaciones que hoy en día se integran con APIs, se hace indispensable realizar API Testing para obtener una mayor cobertura de las pruebas y aportar mayor calidad al producto final.

Entonces, partamos definiendo: ¿Qué es una API? ¿Por qué se habla tanto de ellas y por qué vino a solucionar grandes problemas del desarrollo?

¿Cómo funciona una API?

Las API (Application Programming Interfaces) son un conjunto de comandos, funciones y protocolos que permiten la comunicación entre softwares.

Por ejemplo, cuando un desarrollador está trabajando en una aplicación o en la web de una tienda online, no necesita crear desde cero el sistema de pago y control de stock, ya que esto le llevaría demasiado tiempo. En cambio, es posible que pueda conectar el sistema a una API de terceros que cumple dicha función de sistema de pago y control de stock.

¿Qué es y cómo funciona una API?

Ahora bien, ¿qué ventajas tiene esto? Básicamente, el proceso de desarrollo va a ser mucho más rápido y menos costoso, al aprovechar la infraestructura ya existente.

¿Qué son los Web Services?

De esta forma, adentrados en qué es una API, hablaremos de una parte de ellas: los Web Services o Servicios Web.

Los Web Services son un conjunto de estándares y protocolos para intercambiar datos entre aplicaciones. Esto suena muy similar a la definición de API, ¿verdad? Y es que efectivamente un Servicio Web es una API que se conecta a la aplicación pero a través de internet.

Entonces, ¿cuál es la diferencia entre una API y un Web Services? Como mencionamos en líneas anteriores, un Web Service es una API pero que se ofrece solamente a través de internet, o sea de HTTP; en cambio las API pueden utilizar cualquier otro protocolo de comunicación.

¿Qué es y cómo funcionan los Web Services?
 Aplicación web conectada a un sistema externo a través de HTTP.

¿Cómo integrarse con un Web Service?

Basándonos en la gráfica anterior, en donde por un lado se encuentra la aplicación web y por otro el sistema externo al que se conectará, se presenta el siguiente escenario: ¿Qué sucede si la aplicación está desarrollada con un lenguaje de programación en específico, y el otro sistema está desarrollado con un lenguaje diferente? ¿Cómo va a ser posible la comunicación entre sí?

Pongamos un ejemplo simple, una persona que habla solamente español que trata de comunicarse con otra persona que solo habla inglés, la comunicación va a ser imposible, en este caso lo mejor es tener un lenguaje intermedio, un lenguaje que ambas partes puedan entender.

En los Web Services, el lenguaje intermedio sería a través de XML con el protocolo SOAP. Otra forma de comunicación posible es a través de la arquitectura REST, aplicando el lenguaje XML o JSON. En este contexto, ¿de qué va a depender si la comunicación se hará a través de SOAP o REST? La respuesta es que dependerá de cómo esté desarrollado el Web Service.

SOAP y REST

SOAP es un protocolo diseñado para poder facilitar la comunicación entre plataformas, basado en XML y en otro lenguaje denominado WSDL. Del mismo modo, REST es una arquitectura más moderna y liviana, y es la más común en la que se prueba actualmente.

El hecho de que la arquitectura REST utilicé lenguaje JSON la hace más reducida y fácil de utilizar. Una gran ventaja de REST es que tiene operaciones bien definidas como son GET, POST, PUT, PATH y DELETE, siendo estas las más comunes y que detallamos a continuación.

Métodos HTTP

Métodos HTTP más utilizados en las pruebas de API REST.
Métodos HTTP más utilizados en las pruebas de API REST.

Debemos utilizar GET para leer la información de la API, POST en el caso que debamos crear información nueva, utilizar PUT y PATCH para modificar y actualizar información y DELETE en el caso que debamos eliminar información.

¿Qué es el API Testing?

Ya vimos bastante teoría sobre las API y los Web Services, ahora entra en juego el rol del tester para explicar en detalle en qué consiste el tema central de este post: API testing.

Pirámide de Automatización - Pruebas API

De acuerdo a la Pirámide de Automatización, API Testing es un tipo de prueba de software que está dentro de los tipos de pruebas de integración.

Lo que hace API Testing es validar y verificar que las funcionalidades responden correctamente, por lo que se considera un tipo de prueba a bajo nivel, es decir, que no interactúa directamente con la interfaz de usuario.

En el caso de que estemos probando una API REST, cuando interactuamos con un Web Services por HTTP, ¿cómo sabemos que los resultados son correctos? Básicamente, por las respuestas de los códigos de estado cuando consultan información a la API.

El flujo consiste en enviar los datos de entrada, la API REST la procesa y se obtiene como resultado la salida con los siguientes códigos de respuesta:

  • Códigos 200: cuando son respuestas exitosas
  • Códigos 300: cuando son mensajes de redirección
  • Códigos 400: cuando son errores del cliente
  • Códigos 500: cuando existen problemas con el servidor

Para resumir, ¿por qué hacer API testing? ¿Cuáles son los beneficios de probar esto? Veamos sus principales ventajas a continuación.

Beneficios de API Testing

Promueve el Shift Left Testing

No es necesario contar con el producto totalmente terminado para comenzar a probar, basta con tener conexión a las API para ir probando sus funcionalidades.

Mantenimiento sencillo

Al ser más sencillo que las pruebas de interfaz de usuario, lo ideal es tener pruebas de API robustas para que las pruebas de interfaz de usuario sean solamente preventivas.

Sabemos que las pruebas de interfaz de usuario son cambiantes y hay que re-escribirlas y mantenerlas constantemente. En cambio, con las pruebas de API es poco frecuente que se produzcan cambios y en caos que haya algún cambio es más fácil poder controlarlo.

Mayor velocidad de ejecución

¿Sabía que es posible probar 300 pruebas de APIs en tres minutos aproximadamente? Eso significa que existe más tiempo para corregir y más tiempo para probar.

Reducción de errores

Al estar probando y corrigiendo en una capa intermedia, van a mejorar los resultados de las pruebas en general.

Integración del trabajo

Foto de Fauxels en Pexels

Como testers, al probar una API se necesitará mucho apoyo de parte del equipo de desarrollo, y por consiguiente, podrá conocer la parte más técnica del proyecto.

Tipos de Pruebas API

En las API no solamente podemos ejecutar pruebas funcionales, también es posible ejecutar otro tipo de pruebas que nos van a ser útiles para potenciar la calidad de las pruebas. A continuación, voy a comentar alguna de ellas. Es importante tener presente que siempre el tipo de prueba que vamos a utilizar va a depender del tipo de API que estemos probando.

Pruebas Funcionales

En este tipo de pruebas vamos a validar las funcionalidades de la API, por ejemplo al contar con una API REST, primero se validan los códigos de estado para saber que la API se encuentra disponible. También es posible validar las operaciones dependiendo de los casos de prueba, aunque no siempre es recomendable confiar en las pruebas de interfaz de usuario, por lo que realizar uno que otro flujo a nivel de API permite validar el correcto funcionamiento.

Pruebas de Seguridad

Para estas pruebas es posible probar la autenticación, si utiliza algún tipo de key o token, verificar que no cualquiera pueda utilizar la API, verificar si hay datos sensibles encriptados, entre otras aspectos. Lo anterior es lo más básico que se debe verificar en cuanto a seguridad. 

Si queremos ser un poco más exhaustivos y tener un tipo de checklist de seguridad, podemos aplicar el Top 10 API Security de OWASP. Es recomendable que la aplicación de estos criterios deba realizarse en conjunto con el área de desarrollo o seguridad, al ser pruebas mucho más técnicas.

Pruebas de Rendimiento

En este punto aparecen distintos tipos de pruebas de rendimiento, tales como: pruebas de carga, pruebas de estrés, pruebas de escalabilidad, pruebas de volumen, etc. Estas pruebas sirven para validar la carga de usuarios y que la API pueda responder correctamente a dicha carga.

Pruebas de Integración

Para validar la integración, podemos hacerlo verificando la integración con otras API integradas en un mismo proyecto.

Documentación

La documentación es muy importante al momento de probar; no podemos comenzar a probar APIs si no tenemos documentación asociada a ella. Contar con documentación representa un significativo ahorro de tiempo y esfuerzo, tanto para el tester como para el desarrollador.

Tipos de Pruebas API

Herramientas para API Testing

Cuando hablamos de herramientas para probar, siempre vienen a la cabeza las más populares: SoapUI y Postman.

SoapUI

Primero hablemos de SoapUI, una herramienta desarrollada en Java que inicialmente se utilizaba para probar servicios SOAP pero que luego se extendió para los servicios REST. Si bien SoapUI cuenta con una versión pagada, la versión gratuita contiene todo lo necesario para probar, se puede integrar con scripts de pruebas con lenguaje Groovy, y en definitiva es una de las herramientas más poderosas en el mercado.

Sin embargo, no es una herramienta muy intuitiva, en especial para aquellos que están iniciándose en el mundo del API testing, por lo que va a ser necesario requerir algún curso o tutorial guiado sobre cómo utilizarla.

Postman

Por otro lado tenemos Postman, una herramienta que principalmente se utiliza para probar API de tipo REST. Postman es una herramienta muy completa que además de probar, documentar y ayudar incluso en el proceso de desarrollo de APIs, sirve para automatizar: se pueden agregar scripts de prueba en lenguaje JavaScript.

Una de las ventajas de Postman frente a SoapUI, es que su interfaz de usuario es mucho más amigable e intuitiva, dispone de colecciones y agrupaciones de peticiones, lo que la hacen más simple de entender, incluso para aquellos que están recién comenzando.

JMeter

Igualmente contamos con JMeter, la herramienta líder para probar performance, y que es ampliamente utilizada para probar API REST. JMeter emplea múltiples lenguajes de programación y es de código abierto, por lo que se puede integrar con otras plataformas para hacer las pruebas de performance mucho más robustas.

Rest Assured

Finalmente, tenemos a Rest Assured, un framework escrito en Java que se utiliza principalmente para probar servicios REST escritos en Json o XML. La mayor ventaja que tiene Rest Assured es que al ser un framework se puede integrar con las librerías de pruebas más utilizadas, tales como JUnit, TestNG o maven. Para quienes cuentan con mayores conocimientos en programación, es una herramienta sencilla de usar y en la web hay bastante documentación.

En este video, Renzo Parente, Test Automation Engineer en Abstracta, explica conceptos introductorios a Rest Assured en un pequeño proyecto Maven con algunos ejemplos y utilizando una API pública.

Tips para iniciarse en API Testing

Hacerse amigo del Código

En un trabajo de testing que requiere de ciertas habilidades (independiente de que estemos utilizando JavaScript, Groovy o Java), es recomendable contar con algunos conocimientos de programación para ir interiorizándonos en como probar todo.

Aprender del equipo de Desarrollo del proyecto

Esta práctica es muy importante ya que el equipo de desarrollo maneja la información contundente de la integración con API. Por lo tanto, toda la información que se maneja, en especial la documentación, es importante conocerla y apoyarnos como testers en quienes las crearon.

Comenzar con Postman

En caso que no haya que crear un proyecto robusto en donde tengamos que ocupar herramientas más integradoras como Rest Assured, Postman es la mejor alternativa para iniciarse en el mundo del API Testing.

Continua investigación de herramientas

Existe un sin fin de herramientas que no fueron mencionadas en este post que también son ampliamente utilizadas.


API Testing desde cero: Charla en Testing Day Chile, 5.ª Edición

Como vimos en este post, las API se están volviendo cada vez más críticas en el desarrollo de aplicaciones, al ayudar a los sistemas a comunicarse entre sí. Gracias a la evolución de las apps que hoy se integran con APIs, se hace indispensable realizar API testing para obtener una mayor cobertura de las pruebas y aportar mayor calidad al producto final.

En esta charla impartida en la quinta edición de Testing Day Chile, además de abordar algunos conceptos básicos teóricos e introductorios al API testing, se realizó una demo en la que se presentó la herramienta Postman utilizando una API de Prueba, realizando una automatización de una petición con método GET. Asimismo, se presentó la herramienta Newman utilizando la misma colección automatizada en Postman,  pero a través de líneas de comandos.


¡Esperamos que haya encontrado interesante esta guía para iniciarse en API Testing! Si conoce alguna otra práctica o herramienta para empezar desde cero con las pruebas API, ¡déjenos su aporte en los comentarios!


Otros contenidos relacionados

Postman: Explorando una herramienta para Automatizar Pruebas de API

Tips para ser un experto en Pruebas APIs

API testing con Postman y SoapUI