Avanzare i test automatizzati delle interfacce grafiche con gli LLM
Un nuovo modo per migliorare il testing della GUI delle app mobili usando modelli di linguaggio grandi.
― 5 leggere min
Indice
- La Necessità di un Miglior Testing
- Uso di Modelli Linguistici di Grandi Dimensioni
- Il Nostro Approccio
- Generazione di Suggerimenti
- Abbinamento delle Azioni ai Widget
- Valutazione dell'Efficacia
- Nuova Rilevazione di Bug
- Analisi delle Prestazioni
- Il Futuro del Testing Automattico della GUI
- Conclusione
- Fonte originale
- Link di riferimento
Le app mobile sono fondamentali nella nostra vita quotidiana e garantire la loro qualità è cruciale per una buona esperienza utente. Un modo per controllare la qualità delle app è attraverso il testing automatico dell'Interfaccia Utente Grafica (GUI). Questo tipo di testing verifica come gli utenti interagiscono con l'app, assicurandosi che tutto funzioni come dovrebbe. Tuttavia, i metodi tradizionali di testing automatico della GUI spesso trascurano problemi importanti e potrebbero non imitare completamente il comportamento reale degli utenti.
La Necessità di un Miglior Testing
I metodi di testing automatico attuali possono avere difficoltà con la copertura, il che significa che potrebbero non testare tutti i modi possibili in cui un utente potrebbe interagire con l'app. Possono anche fare troppo affidamento su una grande quantità di dati di addestramento, che è difficile da raccogliere. Nel frattempo, le app mobile hanno molte schermate diverse e interazioni complesse, rendendole difficili da testare. Per questa complessità, c'è bisogno di un nuovo approccio che possa generare azioni più realistiche per un testing approfondito.
Uso di Modelli Linguistici di Grandi Dimensioni
Ispirati dal successo dei Modelli Linguistici di Grandi Dimensioni (LLM), proponiamo un nuovo metodo per il testing della GUI mobile. Gli LLM, come GPT-3, hanno mostrato prestazioni forti nella comprensione del linguaggio naturale e nella risposta a domande. Trattando il testing della GUI come un compito di domanda e risposta, possiamo usare gli LLM per interagire con le app mobile e generare script di testing.
Il Nostro Approccio
Come Funziona
Il nostro approccio raccoglie prima informazioni dall'GUI dell'app, inclusi layout e stato attuale. Usa poi queste informazioni per creare suggerimenti per l'LLM. Il modello genera risposte che delineano i prossimi passi da seguire nell'app. Queste azioni suggerite vengono poi eseguite e i risultati vengono inviati di nuovo all'LLM per affinare il suo approccio in base al feedback.
Raccolta di Informazioni
Suddividiamo le informazioni di cui abbiamo bisogno in due tipi: contesto statico e contesto dinamico.
- Contesto Statico: Include informazioni generali sull'app, la specifica pagina GUI attualmente testata e dettagli sui widget di quella pagina.
- Contesto Dinamico: Include i progressi attuali del testing, come quante volte una pagina o un widget è stato interagito.
Queste informazioni sono cruciali per aiutare l'LLM a prendere decisioni informate su cosa fare dopo durante il processo di testing.
Generazione di Suggerimenti
Usando le informazioni estratte, generiamo suggerimenti da inserire nell'LLM. Questi suggerimenti descrivono lo stato attuale della GUI e chiedono quali azioni l'LLM dovrebbe intraprendere. Strutturando i suggerimenti correttamente, permettiamo all'LLM di capire meglio il contesto e produrre risposte utili.
Abbinamento delle Azioni ai Widget
Quando l'LLM genera un'azione, dobbiamo convertire la sua descrizione in linguaggio naturale nelle azioni specifiche che corrispondono ai widget dell'app. Questo avviene utilizzando una rete neurale di abbinamento. La rete prende l'azione suggerita dall'LLM e trova il widget appropriato basato sulla sua descrizione.
Valutazione dell'Efficacia
Per testare il nostro nuovo approccio, lo abbiamo valutato su una selezione di app mobile popolari. Abbiamo confrontato le sue prestazioni con i metodi esistenti, concentrandoci su due fattori principali:
- Copertura delle Attività: Misura quante diverse funzioni dell'app sono state testate.
- Rilevazione di Bug: Conta il numero di bug trovati durante il testing.
I nostri risultati hanno mostrato che il nostro metodo ha raggiunto il 71% di copertura delle attività, significativamente superiore ad altri metodi. Abbiamo anche rilevato il 36% in più di bug rispetto al miglior confronto, dimostrando l'efficacia del nostro metodo.
Nuova Rilevazione di Bug
Abbiamo anche testato il nostro approccio su un diverso set di app per vedere se potevamo trovare bug che altri avevano trascurato. In questo turno di testing, abbiamo scoperto 48 nuovi bug, 25 dei quali sono già stati confermati e risolti dagli sviluppatori.
Analisi delle Prestazioni
Il nostro approccio ha dimostrato diversi punti di forza:
- Input Testuali Semantici: L'LLM può generare input testuali realistici, rendendo più facile navigare attraverso moduli e pagine complesse.
- Azioni Complesse: Può gestire compiti che richiedono più azioni in sequenza, come riempire moduli in cui diversi input sono correlati.
- Lunghe Tracce di Test: Il modello è capace di mantenere una cronologia di azioni, che gli consente di comprendere meglio il flusso del testing.
- Prioritizzazione dei Casi di Test: Il nostro metodo tende a concentrarsi prima sul testare le parti più cruciali dell'app, massimizzando l'efficienza.
Il Futuro del Testing Automattico della GUI
Il testing automatico della GUI sta evolvendo continuamente. Il nostro approccio rappresenta un passo significativo in avanti integrando le capacità degli LLM nel processo di testing. Andando avanti, puntiamo a perfezionare ulteriormente il nostro metodo e comprendere perché gli LLM potenziano il testing della GUI.
Conclusione
In conclusione, il nostro lavoro introduce un nuovo modo di pensare al testing automatico della GUI per le app mobile. Usando gli LLM, possiamo generare azioni di testing più simili a quelle umane che portano a una migliore copertura e rilevazione di bug. Questo approccio non solo aiuta a garantire la qualità delle app mobile, ma apre anche la strada a metodi di testing più intelligenti e efficienti in futuro.
Titolo: Chatting with GPT-3 for Zero-Shot Human-Like Mobile Automated GUI Testing
Estratto: Mobile apps are indispensable for people's daily life, and automated GUI (Graphical User Interface) testing is widely used for app quality assurance. There is a growing interest in using learning-based techniques for automated GUI testing which aims at generating human-like actions and interactions. However, the limitations such as low testing coverage, weak generalization, and heavy reliance on training data, make an urgent need for a more effective approach to generate human-like actions to thoroughly test mobile apps. Inspired by the success of the Large Language Model (LLM), e.g., GPT-3 and ChatGPT, in natural language understanding and question answering, we formulate the mobile GUI testing problem as a Q&A task. We propose GPTDroid, asking LLM to chat with the mobile apps by passing the GUI page information to LLM to elicit testing scripts, and executing them to keep passing the app feedback to LLM, iterating the whole process. Within it, we extract the static context of the GUI page and the dynamic context of the iterative testing process, design prompts for inputting this information to LLM, and develop a neural matching network to decode the LLM's output into actionable steps to execute the app. We evaluate GPTDroid on 86 apps from Google Play, and its activity coverage is 71%, with 32% higher than the best baseline, and can detect 36% more bugs with faster speed than the best baseline. GPTDroid also detects 48 new bugs on the Google Play with 25 of them being confirmed/fixed. We further summarize the capabilities of GPTDroid behind the superior performance, including semantic text input, compound action, long meaningful test trace, and test case prioritization.
Autori: Zhe Liu, Chunyang Chen, Junjie Wang, Mengzhuo Chen, Boyu Wu, Xing Che, Dandan Wang, Qing Wang
Ultimo aggiornamento: 2023-05-16 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2305.09434
Fonte PDF: https://arxiv.org/pdf/2305.09434
Licenza: https://creativecommons.org/publicdomain/zero/1.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.
Link di riferimento
- https://beta.openai.com/docs/models/gpt-3
- https://play.google.com/store/apps
- https://openai.com/blog/chatgpt/
- https://github.com/testinging6/GPTDroid
- https://youtu.be/xvPURrLIr_w
- https://github.com/Socrates/Socrates
- https://dl.acm.org/ccs.cfm
- https://youtu.be/1qbPwKLDspA
- https://ctan.org/pkg/algorithmicx
- https://ctan.org/pkg/listings
- https://ctan.org/pkg/tcolorbox