Pruebas de software automatizadas de interfaces de aplicaciones programables (API)
Las pruebas de API son un tipo de prueba de software que implica probar las interfaces de programación de aplicaciones (API) directamente y como parte de las pruebas de integración para determinar si cumplen con las expectativas de funcionalidad, confiabilidad, rendimiento y seguridad . [1] Dado que las API carecen de una GUI , las pruebas de API se realizan en la capa de mensajes . [2] Las pruebas de API ahora se consideran críticas para automatizar las pruebas porque las API sirven como la interfaz principal para la lógica de la aplicación y porque las pruebas de GUI son difíciles de mantener con los ciclos de lanzamiento cortos y los cambios frecuentes que se usan comúnmente con el desarrollo de software ágil y DevOps . [3] [4]
Descripción general de las pruebas de API
Las pruebas de API implican probar las API directamente (de forma aislada) y como parte de las transacciones de extremo a extremo que se realizan durante las pruebas de integración. [1] Más allá de las API RESTful , estas transacciones incluyen múltiples tipos de puntos finales, como servicios web , ESB , bases de datos , mainframes , IU web y ERP . Las pruebas de API se realizan en las API que produce el equipo de desarrollo, así como en las API que el equipo consume dentro de su aplicación (incluidas las API de terceros). [5]
Las pruebas de API se utilizan para determinar si las API devuelven la respuesta correcta (en el formato esperado) para una amplia gama de solicitudes factibles, reaccionan adecuadamente a casos extremos como fallas y entradas inesperadas/extremas, entregan respuestas en una cantidad de tiempo aceptable y responden de forma segura a posibles ataques de seguridad . [1] [4] La virtualización de servicios se utiliza junto con las pruebas de API para aislar los servicios bajo prueba, así como para expandir el acceso al entorno de prueba simulando API/servicios que no son accesibles para pruebas. [6]
Las pruebas de API incluyen comúnmente pruebas de API REST o servicios web SOAP con cargas de mensajes JSON o XML que se envían a través de HTTP , HTTPS , JMS y MQ . [2] [7] También puede incluir formatos de mensajes como SWIFT , FIX , EDI y formatos de longitud fija similares, CSV , ISO 8583 y Protocol Buffers que se envían a través de transportes/protocolos como TCP/IP , ISO 8583 , MQTT , FIX , RMI , SMTP , TIBCO Rendezvous y FIX . [8] [9]
Pruebas de API, pruebas de GUI y automatización de pruebas
Se reconoce que las pruebas de API son más adecuadas para la [automatización de pruebas] y las [pruebas continuas] (especialmente la automatización utilizada con [desarrollo de software ágil] y [DevOps]) que las pruebas de GUI. [3] [4] Las razones citadas incluyen:
- Complejidad del sistema: las pruebas de GUI no pueden verificar de manera suficiente las rutas funcionales y las API y los servicios de back-end asociados con arquitecturas de múltiples niveles. Las API se consideran la interfaz más estable para el sistema bajo prueba.
- Ciclos de lanzamiento cortos con bucles de retroalimentación rápidos: los equipos Agile y DevOps que trabajan con iteraciones cortas y bucles de retroalimentación rápidos descubren que las pruebas de GUI requieren una considerable reelaboración para seguir el ritmo de los cambios frecuentes. Las pruebas en la capa API son menos frágiles y más fáciles de mantener.
Por estos motivos, se recomienda que los equipos aumenten su nivel de pruebas de API y reduzcan su dependencia de las pruebas de GUI. Las pruebas de API se recomiendan para la gran mayoría de los esfuerzos de automatización de pruebas y la mayor cantidad posible de pruebas de borde. Las pruebas de GUI se reservan para validar casos de uso típicos a nivel de sistema, pruebas móviles y pruebas de usabilidad. [3] [4] [10]
Tipos de pruebas de API
Existen varios tipos de pruebas que se pueden realizar en las API. Algunas de ellas incluyen pruebas de humo, pruebas funcionales, pruebas de seguridad, pruebas de penetración y pruebas de validación.
- La inteligencia artificial (IA) utilizada en las pruebas de API mejora la eficiencia y la precisión del proceso de prueba. Puede generar automáticamente casos de prueba, identificar problemas potenciales y analizar los resultados de las pruebas mediante aprendizaje automático para identificar patrones y anomalías. [11]
- Prueba de humo : es una prueba preliminar que verifica si las funciones más importantes de una API funcionan correctamente e identifica cualquier problema importante antes de realizar más pruebas.
- Pruebas funcionales : este tipo de pruebas validan un sistema de software en relación con sus requisitos funcionales proporcionando información de entrada y verificando el resultado. Implica principalmente pruebas de caja negra y no se relacionan con el código fuente.
- Prueba de caja negra : este es un tipo de prueba en la que el evaluador interactúa con la API sin conocer su funcionamiento interno. El evaluador proporciona información y observa la salida generada por la API para identificar cómo responde a las acciones esperadas e inesperadas del usuario.
- Pruebas unitarias : prueban las partes más pequeñas de una aplicación, llamadas unidades, para comprobar su correcto funcionamiento. En las pruebas de API, esto incluye probar puntos finales individuales con una única solicitud.
- Prueba de interoperabilidad : esta prueba verifica si una API puede interactuar con otros componentes de software y sistemas sin problemas de compatibilidad. Esto se aplica a las API de SOAP.
- Pruebas de confiabilidad : prueban las API para determinar si cumplen con las expectativas de funcionalidad, confiabilidad, rendimiento y seguridad. Su objetivo es garantizar que la API funcione siempre como se espera.
- Pruebas de validación : confirman que el software cumple con los requisitos comerciales y si las pruebas de API coinciden con los resultados esperados. Están estrechamente relacionadas con las pruebas de aceptación del usuario.
- Detección de errores en tiempo de ejecución : evalúa la ejecución real de una API y se centra en la supervisión, los errores de ejecución, las fugas de recursos y la detección de errores. Los errores detectados se corrigen para evitar interrupciones en tiempo de ejecución.
- Fuzzing : esta prueba transmite información aleatoria, no válida o inesperada a una API para encontrar errores y defectos desconocidos. Un fuzzer de API genera entradas de prueba y secuencias de solicitudes a la API y registra la respuesta para ver si se descubren errores o vulnerabilidades de seguridad.
- Prueba de carga : este tipo de prueba simula cargas de trabajo del mundo real para ver cómo funciona un sistema o una aplicación. El objetivo es encontrar cuellos de botella y determinar la cantidad máxima de usuarios o transacciones que puede manejar el sistema.
- Pruebas de rendimiento : este tipo de pruebas evalúa el rendimiento de una API en determinadas condiciones para evaluar su capacidad de manejar cargas elevadas y mantener niveles de rendimiento elevados. Existen dos tipos principales de pruebas de rendimiento de API: pruebas funcionales y pruebas de carga.
- Pruebas de seguridad : comprueban las vulnerabilidades de las API para encontrar y solucionar las brechas de seguridad. Implica imitar las acciones de los piratas informáticos para encontrar errores y evitar que los atacantes accedan o interrumpan la API o sus datos.
- Pruebas de penetración : el hacking ético se utiliza para evaluar la seguridad del diseño de una API. Un pentester externo encuentra vulnerabilidades en las integraciones de API debido a problemas de lógica empresarial o programación incorrectos para identificar vulnerabilidades de seguridad que los atacantes podrían explotar.
- Prueba de conformidad con WS-*: esta prueba se aplica a las API de SOAP y garantiza la implementación adecuada de estándares como WS-Addressing, WS-Discovery, WS-Federation, WS-Policy, WS-Security y WS-Trust.
- Pruebas de interfaz de usuario web : comprueban si los elementos visuales de la interfaz de usuario de una aplicación web funcionan correctamente y son fáciles de usar. Es diferente de las pruebas de API, que prueban la comunicación entre los componentes del software.
Software
Véase también
Referencias
- ^ abc Las pruebas de API protegen las aplicaciones y la reputación, por Amy Reichert, SearchSoftwareQuality, marzo de 2015
- ^ ab Todo sobre las pruebas de API: una entrevista con Jonathan Cooper, por Cameron Philipp-Edmonds, Stickyminds 19 de agosto de 2014
- ^ abc La evaluación Forrester Wave de la automatización de pruebas funcionales (FTA) ya está disponible y se trata de ir más allá de las pruebas de GUI Archivado el 28 de mayo de 2015 en Wayback Machine , por Diego Lo Giudice, Forrester 23 de abril de 2015
- ^ abcd Produzca un mejor software mediante una estrategia de pruebas en capas [ enlace roto ] , por SEAN Kenefick, Gartner 7 de enero de 2014
- ^ La responsabilidad de las API de terceros recae en los desarrolladores empresariales Archivado el 31 de julio de 2019 en Wayback Machine , por Amy Reichert, SearchSoftwareQuality julio de 2014
- ^ Acelere el desarrollo con pruebas automatizadas [ enlace roto ] , por Nathan Wilson, Gartner 30 de diciembre de 2013
- ^ Un marco de orientación para diseñar una excelente API web [ enlace roto ] , por Eric Knipp y Gary Olliffe, Gartner 20 de agosto de 2014
- ^ La lucha contra los scripts frágiles y los defectos de software, por Adrian Bridgwater, Dr. Dobb's Journal , 26 de octubre de 2011
- ^ ¿ Cómo aprendemos a hablar sobre las pruebas de aplicaciones compuestas?, por Adrian Bridgwater, Dr. Dobb's Journal , 14 de febrero de 2012
- ^ Cohn, Mike (2009). Cómo tener éxito con Agile: desarrollo de software con Scrum . Addison-Wesley Professional. pág. 312. ISBN 978-0321579362.
- ^ J. Gao, C. Tao, D. Jie ĺ, S. Lu (2019). ¿Qué son las pruebas de software con inteligencia artificial? y por qué. IEEE.
{{cite book}}
: CS1 maint: multiple names: authors list (link)