Migliorare i test API con interazioni UI
Una nuova tecnica trasforma i test UI in test API efficaci.
― 6 leggere min
Indice
Le moderne applicazioni web spesso usano le API per interagire con i server e aggiornare le interfacce utente basandosi su diversi eventi. Testare queste API è fondamentale perché fungono da ponte tra l'interfaccia utente e i sistemi di backend. Però, gli strumenti tradizionali per testare le API si basano su specifiche che non sempre sono disponibili o accurate. Questa mancanza può rendere difficile automatizzare i test delle API in modo efficace.
Per affrontare questo problema, è stata sviluppata una nuova tecnica che utilizza i test dell'interfaccia utente (UI) per creare test delle API. Questo metodo cattura le interazioni realizzate tramite l'UI e genera test delle API basati su quelle azioni. In sostanza, consente agli sviluppatori di creare test delle API utili senza bisogno di specifiche complete in anticipo.
Importanza del Test delle API
Nelle applicazioni web, le API sono responsabili della gestione delle richieste degli utenti e del ritorno delle informazioni richieste. Testare queste API è essenziale per assicurarsi che funzionino correttamente ed efficientemente. Tuttavia, questo tipo di test può presentare diverse sfide:
Mancanza di Specifiche: Molte API non hanno specifiche disponibili. Se gli sviluppatori non le scrivono, può essere difficile sapere cosa testare.
Documentazione Incoerente: Anche quando le specifiche esistono, potrebbero non corrispondere al comportamento delle API in pratica. Questa incoerenza può portare a confusione e errori nei test.
Limitazioni del Test Automatico: Gli strumenti attuali spesso non possono generare test automaticamente se mancano le specifiche, limitando la possibilità di effettuare test approfonditi.
Data queste sfide, un nuovo approccio che utilizza test UI per creare test API offre vantaggi significativi. Fornisce un modo per catturare interazioni reali e convertirle in test significativi che possono coprire aspetti cruciali della funzionalità delle API.
Come Funziona il Nuovo Approccio
La tecnica prevede i seguenti passaggi:
Esecuzione dei Test UI: Si inizia con l'esecuzione dei test UI, che simulano azioni dell'utente come cliccare su pulsanti o compilare moduli su un sito web.
Monitoraggio delle Chiamate API: Durante l'esecuzione dei test UI, la tecnica cattura le chiamate API effettuate durante queste interazioni. Questo implica tracciare le richieste inviate dal browser al server e le risposte ricevute.
Filtraggio delle Chiamate Non Necessarie: I dati catturati spesso includono molte chiamate API irrilevanti che non sono necessarie per testare la funzionalità dell'applicazione. Il nuovo metodo filtra queste chiamate non necessarie, concentrandosi solo su quelle importanti.
Generazione dei Test API: Utilizzando le chiamate API rilevanti, il sistema genera casi di test API che possono essere eseguiti indipendentemente dall'UI. Questi test sono progettati per controllare direttamente la funzionalità delle API.
Creazione di Specifiche API: Oltre a generare test, la tecnica crea anche una specifica OpenAPI che descrive i punti finali delle API scoperti tramite monitoraggio e filtraggio. Questa specifica serve come documentazione per sviluppatori e tester.
Efficacia del Test
L'efficacia del nuovo metodo è stata studiata valutando la sua precisione e richiamo riguardo ai test API e alle specifiche.
Precisione si riferisce all'accuratezza dei test e delle specifiche generate. Un'alta precisione significa che la maggior parte dei test generati riflette correttamente il comportamento reale delle API.
Richiamo misura la capacità di identificare e includere tutti i punti finali API rilevanti all'interno dei test e delle specifiche generate. Un alto richiamo indica che la tecnica ha identificato con successo la maggior parte delle interazioni API disponibili.
La valutazione ha mostrato che questo nuovo approccio può ottenere risultati impressionanti. I test API generati hanno dimostrato una precisione fino al 98%, il che significa che la maggior parte di essi rifletteva accuratamente il comportamento delle API. Il richiamo è migliorato dal 49% al 56% con ulteriori indagini, catturando più punti finali API.
Miglioramento della Copertura
Un altro vantaggio significativo di questa tecnica è il miglioramento della Copertura del codice. La copertura del codice misura quanto del codice dell'applicazione viene testato dai test automatizzati. Una copertura più alta significa che possono essere rilevati più problemi potenziali durante i test.
Nei test pratici, i test API generati hanno migliorato significativamente i tassi di copertura. Quando aggiunti agli strumenti esistenti per il testing delle API REST automatizzate, la copertura è aumentata in media del 52% per la copertura delle istruzioni e del 99% per la copertura dei rami. Questo miglioramento significa che più parti dell'applicazione sono state testate, aumentando la probabilità di identificare problemi potenziali.
Efficienza di Esecuzione
Una delle caratteristiche distintive del nuovo metodo è la sua efficienza rispetto ai test UI tradizionali. Eseguire i test UI può richiedere tempo, mentre i test API creati tramite questa tecnica vengono eseguiti significativamente più velocemente.
Ad esempio, i suite di test UI richiedevano in media sette minuti per completarsi, mentre i suite di test API generati si concludevano in circa 0.6 minuti. Questo rappresenta un miglioramento di oltre dieci volte nel Tempo di esecuzione. Tale efficienza è cruciale per gli sviluppatori che devono eseguire test frequentemente durante il processo di sviluppo.
Vantaggi Pratici per gli Sviluppatori
Le implicazioni di questa tecnica per gli sviluppatori sono considerevoli. Consentendo loro di creare test API automatizzati dalle interazioni UI, gli sviluppatori possono risparmiare tempo e garantire una migliore copertura nei test. Questo nuovo approccio fornisce una soluzione di test più integrata che collega i test UI e API, spesso trattati come processi separati.
Inoltre, generando specifiche API significative insieme ai test, gli sviluppatori possono beneficiare di una migliore documentazione delle API su cui stanno lavorando. Questa documentazione può aiutare i nuovi membri del team a comprendere come funzionano le API e facilitare la manutenzione dell'applicazione nel tempo.
Sfide e Limitazioni
Nonostante i suoi vantaggi, il nuovo approccio ha alcune limitazioni. Ad esempio, la tecnica si basa sull'efficacia dei test UI originali. Se i test UI non coprono certe interazioni, i test API generati non includeranno questi scenari, mancando potenzialmente funzionalità critiche.
Inoltre, l'approccio potrebbe comunque avere difficoltà con API che richiedono input complessi o sono altamente dinamiche. In alcuni casi, gli sviluppatori potrebbero dover integrare i test generati con test aggiuntivi per garantire una copertura completa.
Conclusione
La tecnica di generare test API dai test UI rappresenta un passo avanti significativo nel testing software. Affronta sfide comuni, come la mancanza di specifiche API disponibili e le limitazioni degli strumenti di test automatizzati esistenti.
Consentendo agli sviluppatori di generare test e specifiche API significative in modo efficiente, questo approccio migliora la qualità complessiva delle applicazioni web. Con l'evoluzione continua del software, metodi come questi saranno fondamentali per garantire che le applicazioni siano robuste, efficienti e user-friendly.
Adottando questa nuova tecnica, i team di sviluppo possono gestire meglio i processi di test, migliorare la qualità del codice e fornire prodotti più solidi agli utenti. Man mano che lo sviluppo software continua a integrarsi più profondamente con il testing automatizzato, metodologie che migliorano l'efficienza e la copertura saranno fondamentali per il successo nel settore.
Titolo: Carving UI Tests to Generate API Tests and API Specification
Estratto: 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.
Autori: Rahulkrishna Yandrapally, Saurabh Sinha, Rachel Tzoref-Brill, Ali Mesbah
Ultimo aggiornamento: 2023-05-23 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2305.14692
Fonte PDF: https://arxiv.org/pdf/2305.14692
Licenza: https://creativecommons.org/licenses/by/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.