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 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 ahora 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 conDesarrollo 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 un extremo a otro que se realizan durante las pruebas de integración. [1] Más allá de las API RESTful , estas transacciones incluyen varios tipos de puntos finales, como servicios web , ESB , bases de datos , mainframes , interfaces de usuario 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 un período de tiempo aceptable y responder 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 y ampliar el acceso al entorno de prueba mediante la simulación de API / servicios que no son accesibles para pruebas. [6]
Las pruebas de API comúnmente incluyen probar API REST o servicios web SOAP con cargas útiles 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 similares de longitud fija, CSV , ISO 8583 y búferes de protocolo 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 el 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 suficientemente las rutas funcionales y las API / servicios de back-end asociados con arquitecturas de varios niveles. Las API se consideran la interfaz más estable para el sistema bajo prueba.
- Ciclos de lanzamiento cortos con ciclos de retroalimentación rápidos: los equipos de DevOps y Agile que trabajan con iteraciones cortas y ciclos de retroalimentación rápidos encuentran que las pruebas de GUI requieren un trabajo considerable para mantenerse al día con los cambios frecuentes. Las pruebas en la capa API son menos frágiles y más fáciles de mantener.
Por estas razones, se recomienda que los equipos aumenten su nivel de pruebas de API mientras disminuyen 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 de pruebas de borde posible. 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
Las pruebas de API generalmente implican las siguientes prácticas:
- Prueba unitaria : prueba de la funcionalidad de operaciones individuales.
- Pruebas funcionales : prueba de la funcionalidad de escenarios más amplios, a menudo utilizando pruebas unitarias como bloques de construcción para pruebas de un extremo a otro. Incluye pruebas de definición, ejecución, validación y regresión de casos de prueba .
- Pruebas de carga : validación de la funcionalidad y el rendimiento bajo carga, a menudo mediante la reutilización de casos de prueba funcionales.
- Detección de errores en tiempo de ejecución : supervisa la ejecución de pruebas automáticas o manuales de una aplicación para exponer problemas como condiciones de carrera, excepciones y fugas de recursos.
- Pruebas de seguridad : incluye pruebas de penetración y pruebas de fuzz , así como validación de autenticación, cifrado y control de acceso.
- Pruebas de interfaz de usuario web : realizadas como parte de las pruebas de integración de un extremo a otro que también cubren las API, permiten a los equipos validar elementos de la GUI en el contexto de la transacción más grande.
- Prueba de interoperabilidad: (solo SOAP) Verificación de la conformidad con los perfiles de interoperabilidad de servicios web .
- Prueba de cumplimiento WS- * : (solo SOAP) Verificación del cumplimiento de los estándares WS- * como WS-Addressing, WS-Discovery, WS-Federation, WS-Policy, WS-Security y WS-Trust.
- Prueba de penetración : prueba de un sistema informático, una red o una aplicación web para encontrar vulnerabilidades que un atacante podría aprovechar.
- Prueba de fuzz : cantidades masivas de datos puramente aleatorios, a veces denominados "ruido" o "fuzz", se introducen a la fuerza en el sistema para intentar un bloqueo forzado, un desbordamiento u otro comportamiento negativo. Esto se hace para probar la API en sus límites absolutos y sirve como un "peor escenario".
Software
- SoapUI
- SOAtest
- Pavonearse
- Estudio Katalon
Ver también
- Pruebas automatizadas
- Virtualización de servicios
- Pruebas de software
- Seguridad de API web
Referencias
- ^ a b c Las API de prueba protegen las aplicaciones y la reputación , por Amy Reichert, SearchSoftwareQuality, marzo de 2015
- ^ a b Todo sobre las pruebas de API: una entrevista con Jonathan Cooper , por Cameron Philipp-Edmonds, Stickyminds 19 de agosto de 2014
- ^ a b c La evaluación de Forrester Wave de la automatización de pruebas funcionales (FTA) 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
- ^ a b c d Produzca un mejor software mediante el uso de una estrategia de pruebas en capas , por SEAN Kenefick, Gartner el 7 de enero de 2014
- ^ La responsabilidad de las API de terceros recae en los desarrolladores empresariales , por Amy Reichert, SearchSoftwareQuality julio de 2014
- ^ Acelere el desarrollo con pruebas automatizadas , por Nathan Wilson, Gartner 30 de diciembre de 2013
- ^ Un marco de orientación para diseñar una gran API web , por Eric Knipp y Gary Olliffe, Gartner 20 de agosto de 2014
- ^ La lucha contra los scripts frágiles y los defectos del software , por Adrian Bridgwater, Diario del Dr. Dobb, 26 de octubre de 2011
- ^ ¿Cómo aprendemos las pruebas de aplicaciones compuestas? , por Adrian Bridgwater, Dr. Dobb's Journal 14 de febrero de 2012
- ^ Cohn, Mike (2009). Tener éxito con Agile: Desarrollo de software con Scrum . Addison-Wesley Professional. pag. 312 . ISBN 978-0321579362.