Simple Science

Ciencia de vanguardia explicada de forma sencilla

# Informática# Ingeniería del software

Mejorando las Pruebas de API con Interacciones de UI

Una nueva técnica transforma las pruebas de UI en pruebas de API efectivas.

― 7 minilectura


Pruebas de UI TransformarPruebas de UI TransformarPruebas de APIlas pruebas de API.Un nuevo método mejora la eficiencia de
Tabla de contenidos

Las aplicaciones web modernas suelen usar APIs para interactuar con servidores y actualizar interfaces de usuario según diferentes eventos. Probar estas APIs es crucial porque son un puente entre la interfaz de usuario y los sistemas del backend. Sin embargo, las herramientas tradicionales que prueban APIs dependen de especificaciones que pueden no estar siempre disponibles o ser precisas. Esta brecha puede dificultar la automatización de las pruebas de APIs de manera efectiva.

Para solucionar este problema, se ha desarrollado una nueva técnica que utiliza pruebas de interfaces de usuario (UI) para crear pruebas de APIs. Este método captura las interacciones realizadas a través de la UI y genera pruebas de APIs basadas en esas acciones. Básicamente, permite a los desarrolladores crear pruebas de APIs útiles sin necesidad de tener especificaciones completas de antemano.

Importancia de las Pruebas de APIs

En las aplicaciones web, las APIs son responsables de manejar las solicitudes de los usuarios y enviar de vuelta la información requerida. Probar estas APIs es esencial para asegurarse de que funcionen correctamente y de manera eficiente. Sin embargo, este tipo de pruebas puede ser complicado por varias razones:

  1. Falta de Especificaciones: Muchas APIs no tienen especificaciones disponibles. Si los desarrolladores no las escriben, puede ser difícil saber qué probar.

  2. Documentación Inconsistente: Aunque existan especificaciones, puede que no coincidan con cómo se comportan las APIs en la práctica. Esta inconsistencia puede llevar a confusiones y errores en las pruebas.

  3. Limitaciones de las Pruebas Automatizadas: Las herramientas actuales a menudo no pueden generar pruebas automáticamente si faltan especificaciones, lo que limita la capacidad de realizar pruebas exhaustivas.

Dadas estas dificultades, un nuevo enfoque que utiliza pruebas de UI para crear pruebas de APIs ofrece beneficios significativos. Proporciona una forma de capturar interacciones reales y convertirlas en pruebas significativas que pueden cubrir aspectos esenciales de la funcionalidad de las APIs.

Cómo Funciona el Nuevo Enfoque

La técnica implica los siguientes pasos:

  1. Ejecución de Pruebas de UI: Empieza ejecutando pruebas de UI, que simulan acciones de usuario como hacer clic en botones o llenar formularios en un sitio web.

  2. Monitoreo de Llamadas a APIs: A medida que se ejecutan las pruebas de UI, la técnica captura las llamadas a APIs realizadas durante estas interacciones. Esto implica rastrear las solicitudes enviadas desde el navegador al servidor y las respuestas recibidas.

  3. Filtrado de Llamadas Innecesarias: Los datos capturados a menudo incluyen muchas llamadas a APIs irrelevantes que no son necesarias para probar la funcionalidad de la aplicación. El nuevo método filtra estas llamadas innecesarias, enfocándose solo en las que importan.

  4. Generación de Pruebas de APIs: Usando las llamadas a APIs relevantes, el sistema genera casos de prueba de APIs que pueden ejecutarse independientemente de la UI. Estas pruebas están diseñadas para verificar directamente la funcionalidad de las APIs.

  5. Creación de Especificaciones de APIs: Además de generar pruebas, la técnica también crea una especificación OpenAPI que describe los endpoints de la API descubiertos a través del monitoreo y filtrado. Esta especificación sirve como documentación para desarrolladores y testers.

Desempeño de las Pruebas

Se ha estudiado la efectividad del nuevo método evaluando su precisión y recuerdo en relación con las pruebas de APIs y especificaciones.

  • Precisión se refiere a la exactitud de las pruebas y especificaciones generadas. Una alta precisión significa que la mayor parte de las pruebas generadas reflejan correctamente el comportamiento real de las APIs.

  • Recuerdo mide la capacidad de identificar e incluir todos los endpoints relevantes de APIs dentro de las pruebas y especificaciones generadas. Un alto recuerdo indica que la técnica identificó con éxito la mayoría de las interacciones de APIs disponibles.

La evaluación mostró que este nuevo enfoque podría lograr resultados impresionantes. Las pruebas de APIs generadas demostraron una precisión de hasta el 98%, lo que significa que la mayoría reflejaban con precisión el comportamiento de las APIs. El recuerdo mejoró del 49% al 56% con un mayor análisis, capturando más endpoints de APIs.

Mejora de Cobertura

Otra ventaja significativa de usar esta técnica es la mejora en la cobertura del código. La Cobertura de Código mide cuánto del código de la aplicación está probado por las pruebas automatizadas. Una mayor cobertura significa que se pueden detectar más problemas potenciales durante las pruebas.

En pruebas prácticas, las pruebas de APIs generadas mejoraron significativamente las tasas de cobertura. Cuando se añadieron a las herramientas de pruebas automatizadas de APIs REST existentes, la cobertura aumentó en un promedio del 52% para la cobertura de declaraciones y del 99% para la cobertura de ramas. Esta mejora significa que se probaron más partes de la aplicación, lo que lleva a una mayor probabilidad de identificar problemas potenciales.

Eficiencia en la Ejecución

Una de las características destacadas del nuevo método es su eficiencia en comparación con las pruebas tradicionales de UI. Ejecutar pruebas de UI puede llevar mucho tiempo, mientras que las pruebas de APIs creadas a través de esta técnica se ejecutan significativamente más rápido.

Por ejemplo, los conjuntos de pruebas de UI tardaron un promedio de siete minutos en completarse, mientras que los conjuntos de pruebas de APIs generados terminaron en unos 0.6 minutos. Esto representa una mejora de más de diez veces en el Tiempo de ejecución. Tal eficiencia es crucial para los desarrolladores que necesitan ejecutar pruebas con frecuencia durante el proceso de desarrollo.

Beneficios Prácticos para los Desarrolladores

Las implicaciones de esta técnica para los desarrolladores son considerables. Al permitirles crear pruebas automatizadas de APIs a partir de interacciones de UI, los desarrolladores pueden ahorrar tiempo y asegurar mejor cobertura en las pruebas. Este nuevo enfoque provee una solución de pruebas más integrada que une las pruebas de UI y API, que a menudo se tratan como procesos separados.

Además, al generar especificaciones de APIs significativas junto con las pruebas, los desarrolladores pueden beneficiarse de una mejor documentación de las APIs con las que están trabajando. Esta documentación puede ayudar a los nuevos miembros del equipo a entender cómo funcionan las APIs y asistir en el mantenimiento de la aplicación a lo largo del tiempo.

Desafíos y Limitaciones

A pesar de sus ventajas, el nuevo enfoque tiene algunas limitaciones. Por ejemplo, la técnica depende de la efectividad de las pruebas de UI originales. Si las pruebas de UI no cubren ciertas interacciones, las pruebas de APIs generadas no incluirán esos escenarios, potencialmente perdiendo funcionalidad crítica.

Además, el enfoque puede seguir teniendo problemas con APIs que requieren entradas complejas o son altamente dinámicas. En algunos casos, los desarrolladores pueden necesitar complementar las pruebas generadas con pruebas adicionales para asegurar una cobertura completa.

Conclusión

La técnica de generar pruebas de APIs a partir de pruebas de UI representa un gran avance en las pruebas de software. Aborda desafíos comunes, como la falta de especificaciones de APIs disponibles y las limitaciones de las herramientas de pruebas automatizadas existentes.

Al permitir que los desarrolladores generen de manera eficiente pruebas y especificaciones significativas de APIs, este enfoque mejora la calidad general de las aplicaciones web. A medida que el software sigue evolucionando, métodos como este serán instrumentales para asegurar que las aplicaciones sean robustas, eficientes y amigables para el usuario.

Adoptando esta nueva técnica, los equipos de desarrollo pueden gestionar mejor los procesos de pruebas, mejorar la calidad del código y entregar productos más sólidos a los usuarios. A medida que el desarrollo de software continúa integrándose más profundamente con las pruebas automatizadas, las metodologías que mejoran la eficiencia y la cobertura serán fundamentales para el éxito en la industria.

Fuente original

Título: Carving UI Tests to Generate API Tests and API Specification

Resumen: Modern web applications make extensive use of API calls to update the UI state in response to user events or server-side changes. For such applications, API-level testing can play an important role, in-between unit-level testing and UI-level (or end-to-end) testing. Existing API testing tools require API specifications (e.g., OpenAPI), which often may not be available or, when available, be inconsistent with the API implementation, thus limiting the applicability of automated API testing to web applications. In this paper, we present an approach that leverages UI testing to enable API-level testing for web applications. Our technique navigates the web application under test and automatically generates an API-level test suite, along with an OpenAPI specification that describes the application's server-side APIs (for REST-based web applications). A key element of our solution is a dynamic approach for inferring API endpoints with path parameters via UI navigation and directed API probing. We evaluated the technique for its accuracy in inferring API specifications and the effectiveness of the "carved" API tests. Our results on seven open-source web applications show that the technique achieves 98% precision and 56% recall in inferring endpoints. The carved API tests, when added to test suites generated by two automated REST API testing tools, increase statement coverage by 52% and 29% and branch coverage by 99% and 75%, on average. The main benefits of our technique are: (1) it enables API-level testing of web applications in cases where existing API testing tools are inapplicable and (2) it creates API-level test suites that cover server-side code efficiently while exercising APIs as they would be invoked from an application's web UI, and that can augment existing API test suites.

Autores: Rahulkrishna Yandrapally, Saurabh Sinha, Rachel Tzoref-Brill, Ali Mesbah

Última actualización: 2023-05-23 00:00:00

Idioma: English

Fuente URL: https://arxiv.org/abs/2305.14692

Fuente PDF: https://arxiv.org/pdf/2305.14692

Licencia: https://creativecommons.org/licenses/by/4.0/

Cambios: Este resumen se ha elaborado con la ayuda de AI y puede contener imprecisiones. Para obtener información precisa, consulte los documentos originales enlazados aquí.

Gracias a arxiv por el uso de su interoperabilidad de acceso abierto.

Más de autores

Artículos similares