Las API ¿Qué son y por qué es necesario probarlas?

Por Martha Lizeth Luna Velasco, Praxis, Testing. México, Ciudad de México.

RESUMEN

La prueba API (Interfaz de Programación de Aplicaciones) es un tipo de pruebas de software, y se considera uno de los más importantes, ya que forma parte de las pruebas de integración (cuando validan la interacción entre dos módulos diferentes), y sus resultados son utilizados principalmente para definir y valorar los atributos de fiabilidad, funcionalidad, rendimiento, carga, etc., en correlación con las expectativas iniciales de un sistema/aplicación.

En este sentido, el API Testing tiene la finalidad de probar las API a profundidad. Para ello existen diferentes herramientas como SoapUI, JMeter, Postman, entre otras. Una característica de estas herramientas es que se pueden automatizar las pruebas, logrando una mejor cobertura de prueba, resultados de prueba más rápidos, etc., lo que hace que el proceso de prueba general sea más eficiente y efectivo.

INTRODUCCIÓN

Las pruebas software son una parte fundamental en los procesos de desarrollo de cualquier aplicación de software ya que permite conocer y comprender la funcionalidad y capacidad de un programa específico, y así asegurar que éste tenga el desempeño esperado una vez que se encuentre en el escenario real, con los usuarios finales; además de ahorrarle a las empresas tiempo y recursos en mantenimientos o fallas al identificarlas antes de salir a producción. De igual forma, las pruebas de API (Application Programming Interface) Interfaz de Programación de Aplicaciones, son un tipo de prueba de software que ayudan a determinar si una aplicación que ha sido desarrollada recientemente cumple con las expectativas planteadas en relación a su confiabilidad, rendimiento, operaciones y seguridad.

DESARROLLO

La API o Interfaz de Programación de Aplicaciones, “es una colección de funciones, procedimientos o métodos que están disponibles para ser ejecutados por otras aplicaciones de software; su fin principal es ofrecer acceso a ciertos servicios y proveer de cierta capacidad de comunicación entre componentes de software. Facilitan la vida a los desarrolladores ya que pueden beneficiarse de la funcionalidad de una API, evitando así el tener que volver a programar dicha funcionalidad desde cero” (Ruiz, s.f.).

Imagen 1. Funcionamiento de una API.

En otras palabras, las APIs son una especie de traductores que comunican a los sistemas o aplicaciones entre sí; permiten utilizar una aplicación o sistema y consultar, ingresar y almacenar datos de diferentes sistemas, sin la necesidad de que el usuario tenga que ingresar a éstos directamente. Esto lo hacen con el fin de ofrecer al usuario final una experiencia de uso más personalizada.

Adicional a este intercambio de información entre sistemas, las API permiten llegar a una automatización de procesos que antes eran manuales, o bien, crear nuevas funcionalidades. Aunque no es muy común saberlo, las API se utilizan en las aplicaciones usadas en el día a día, por ejemplo, al iniciar sesión en un juego online desde una cuenta de red social, al pagar un artículo a través de PayPal; las API están ahí, trabajando duro para hacer de la experiencia de usuario algo familiar y seguro. Es posible apreciar su utilización en las llamadas bibliotecas, por mencionar algunas: Microsoft Win32 API, OpenGL, OpenCL, CORBA, Microsoft Framework .NET, Google Web API’s, API de Twitter, API de Facebook, API REST.

Así mismo, se pueden apreciar diferentes tipos de API, como son (Trofímov, 2021):

  • API públicas. Son API´s abiertas, es decir, que cualquiera puede usar. Únicamente suelen requerir autorización/autenticación, y pueden incluir monetización.
  • API internas. Son programas privados que conectan sistemas o datos dentro de una empresa (por ejemplo, la Nómina).
  • API de socios. Son API con licencia se usan únicamente en casos concretos, por ejemplo, en sistemas de una empresa a otra.
  • API compuestas. Es cuando se combinan varias API para crear funciones interdependientes, con el fin de mejorar el rendimiento o la velocidad.

API Testing

Como se comentó antes, una de las metas principales de las API es ahorrar tiempo y dinero; además de que juegan un papel fundamental en la integración de otras aplicaciones, así como en la experiencia de usuario. Por ello, es crucial  que las API se prueben a fondo.

El proceso para probar APIs consiste en someter a evaluación las ejecuciones o “llamadas” de dichos procedimientos, a través de aplicaciones de software externas, las cuales, a través de diferentes variantes, parámetros y condiciones en el ambiente, simulen el uso de estas APIs, interactuando a su vez con dispositivos, datos, bases de datos, etc., todo lo anterior con el objetivo de detectar errores en su funcionamiento.

Para realizar las pruebas de APIs, es requerido de igual forma que con cualquier otro tipo de prueba, seguir una estrategia, un enfoque y herramientas destinadas a ello para garantizar buenos resultados, tomando en cuenta las buenas prácticas de pruebas. Se requiere estructurar este proceso en distintas fases para una mejor ejecución:

  • Iniciación
  • Planeación
  • Ejecución
  • Control
  • Cierre

Tipos de pruebas API

Las diferentes pruebas de API permiten revisar desde funciones simples hasta los aspectos de seguridad. Por esto es que las pruebas de API deben ser variadas y aplicarse de manera continua para tener mayor efectividad en los resultados. Por mencionar algunos tipos de pruebas aplicables en las API, se tienen:

  • Pruebas de seguridad: se aplica en API estáticas y lo que hace es revisar el código fuente de las apps para encontrar vectores de amenazas, así como simular un ataque de un escenario real para identificar riesgos. Dentro de éstas se encuentran también las pruebas de penetración, las cuales son usadas para encontrar vulnerabilidades en la API.
  • Prueba de validación: para probar que una API está funcionando como se espera, validando aspectos de eficiencia, producto y comportamiento.
  • Prueba de UI: estas pruebas brindan información sobre cómo percibe el usuario final las aplicaciones/sistemas, y así asegurar una adecuada conexión entre el backend y el frontend.
  • Prueba funcional: para validar las funciones de la API en escenarios específicos, y así asegurar los resultados pronosticados.
  • Prueba de carga: esta prueba revisa la funcionalidad y el rendimiento de la app en condiciones ideales y no ideales para la detección de errores.
  • Prueba de fuzz: para validar cómo un sistema puede manejar un exceso de datos (Fuzz), lo cual podría ser evento no idóneo.
  • Prueba de errores y tiempo de ejecución: aquí se prueba una API contra una base de código universal, esto para encontrar errores, fugas de recursos o para monitoreo.
  • Análisis de composición de software (SCA): se revisa el árbol de dependencias de una aplicación para compararlo con una base de datos de riesgos de seguridad. Al detectarse alguno, se recibe una alerta para atender el problema.

Herramientas para Pruebas de API

Las herramientas para probar las API permiten que el proceso de desarrollo de un software sea más completo, ya que al probarlas a fondo, también se busca lograr la funcionalidad, ejecución, seguridad y confiabilidad de la aplicación en cuestión.

De acuerdo a Naini, 2022, estas son las herramientas para pruebas de API más destacadas:

  • SoapUI – para probar servicios web tanto SOAP como RESTful. Se puede usar para varios tipos de prueba: Funcional, Seguridad, Performance.
  • Katalon Studio – para probar Web, API y dispositivos móviles; es una prueba de automatización.
  • TestNG – utilizado con Selenium, para obtener un informe sobre los casos de prueba que no tuvieron éxito, los que progresaron y los que rebotaron.
  • Postman – con esta herramienta se puede tanto construir como probar y consumir una API. Se puede hacer pruebas automatizadas, monitorear el comportamiento de una API y hacer simulaciones de uso.
  • Swagger – de igual forma, permite hacer el diseño, creación, pruebas y documentación de una API. Puede probar API en la nube.
  • Jmeter – para probar aplicaciones web, para pruebas de rendimiento, funcionales y de carga. Es para pruebas automatizadas.
  • Rest Assured – para probar y validar servicios REST y servicios web basados ​​en HTTP, JSON y XML.
  • Tricentis Tosca: para pruebas continuas y de automatización para dispositivos móviles y para plataformas DevOps.
  • Apiary – para diseñar, construir y probar API, permitiendo tener API listas para producción de una forma más rápida.
  • MuleSoft API – para crear, diseñar, administrar y publicar API. Pueden integrarse con servicios en la nube.
  • Apigee – de Google Cloud. Permite diseñar, proteger, publicar, analizar, supervisar y monetizar las API.

Elegir la herramienta adecuada va a ir en función de las características y requerimientos a probar en el software en cuestión; sin embargo, se pueden mencionar algunas recomendaciones para una mejor implementación de las pruebas de API:

  • Probar la funcionalidad: asegurarse de que la solicitud-respuesta básica funciona de manera continua.
  • Concentrar los casos de prueba por el tipo de prueba.
  • Preparación de datos de prueba: identificación de parámetros de entrada y valores esperados de retorno.
  • Crear casos de prueba para la mayor cantidad de combinaciones posibles de entrada de API, para asegurar una cobertura de prueba completa.
  • Utilizar pruebas de carga API para someter estrés al sistema y ver su respuesta.
  • Automatizar la creación de documentación de API, sin dejar de validar que ésta sea entendible en todos los niveles de experiencia del usuario.
  • Automatizar todo lo que se pueda.
  • Reporte, administración y seguimiento de incidencias/defectos.
  • Obtención de resultados y análisis de métricas.

Si bien, la prueba de API tiene muchos beneficios (sobre todo haciéndolo de manera automatizada), también hay algunos desafíos que puede presentar. Por ejemplo, las API no cuentan con un GUI (Guía de Interfaz de Usuario) para probar la aplicación, lo que podría dificultar la asignación de valores como la combinación de parámetros, categorización y secuencia de llamadas. Otro caso sería que quien ejecute las pruebas de API necesita tener un conocimiento profundo de las aplicaciones internas, ya que hay algunas API que pueden estar interactuando con diferentes softwares para ofrecer su funcionalidad; así como tener vasta experiencia en los lenguajes de programación a los que apunta la API.

Finalmente, es sumamente importante que los líderes y directores se ocupen de dar el valor que merecen y asignar los tiempos específicos para llevar a cabo las pruebas exhaustivas de las API.

CONCLUSIÓN

Está claro que el papel de las API en los sistemas es fundamental ya que si alguna API no funciona de manera correcta, rompe con el flujo de acciones dentro de, no sólo una, sino de varias cadenas de aplicaciones que interactúan entre sí. Por ello es importante poner el debido esfuerzo en la prueba de las API, ya que así es más viable alcanzar un producto final mucho más completo y saludable.

Utilizar las pruebas de automatización en el API Testing, es una de las mejores prácticas que se pueden implementar, ya que hace el proceso más completo y exacto, ayudando a validar si la aplicación se comunica y accede a las funciones adecuadamente.

Poco a poco, la demanda del avance de la tecnología (Inteligencia Artificial, el IoT “Internet of Things” por ejemplo), irá requiriendo que las pruebas de API sean aún más rigurosas, ya que éstas básicamente son la interfaz principal para la lógica de una aplicación. Contar con este conocimiento en Testing es un pilar importante a la hora de desarrollar un software; en Praxis se cuenta con especialistas que buscan esta mejora continua en sus soluciones de Testing, dando la importancia requerida a las pruebas de API.

REFERENCIAS

Ruiz, S. (s.f.). Probando APIs. Software Gurú. Recuperado de:  https://sg.com.mx/revista/45/probando-apis

Naini, A. (2022). Las 11 mejores herramientas de desarrollo y prueba de API. Development. Recuperado de: https://geekflare.com/es/api-tools/

Trofímov, G. (2021). Las mejores herramientas de prueba de API. Parasoft. Recuperado de: https://es.parasoft.com/blog/best-api-tools/

Imagen 1. Funcionamiento de una API. Recuperado de https://www.planningpme.com/planningpme-api.h

Associated Activities

AMITI Events

10 Dec
From 8:00 a.m.
a 12:00 pm

Superando los desafíos – Evento de fin de año AMITI