fbpx

“È l’applicazione più strabiliante dell’apprendimento automatico che abbia mai visto”.

Mike Krieger, cofondatore di Instagram.

 

Le parole di Mike Krieger non sono un’iperbole. Sebbene il ML sia in grado di fare cose notevoli in termini di analisi dei dati e approfondimenti, GitHub Copilot è un vero e proprio game-changer per l’utilità potenziale che può fornire agli sviluppatori di prodotti di tutto il mondo.

I copiloti di codifica e l’IA generativa aiutano i team a ottenere enormi vantaggi, come l’accelerazione del ciclo di vita dello sviluppo del software a velocità finora inimmaginabili. Tuttavia, l’impatto della tecnologia sull’RPA e sul testing del software sono due delle frontiere più interessanti di questa straordinaria tecnologia.

In questo articolo analizzeremo come i copiloti di codifica e l’IA generativa hanno modificato il mondo del Software Testing e della RPA nel presente, prima di esplorare il loro impatto futuro sulla tecnologia.

 

Copiloti e IA generativa in

sviluppo del software: Un Primer

Copiloti e IA generativa nello sviluppo del software: un primo passo

L’IA generativa e i copiloti di codifica sono relativamente nuovi nel panorama dello sviluppo software. Prima di parlare del loro impatto sullo spazio, vale la pena di esaminare il loro background e il loro modo di lavorare.

 

1. Codificatori automatici con intelligenza artificiale

 

I modelli linguistici di grandi dimensioni (LLM) sono migliorati notevolmente negli ultimi anni. Con l’aumento esponenziale delle dimensioni degli insiemi di dati e della potenza di calcolo, la qualità dei risultati è aumentata.

Sono molti i settori verticali che possono trarre vantaggio dai LLM. Alcuni dei più scritti includono la generazione di testi, immagini, video e altre forme di media. Tuttavia, anche se questi casi d’uso sono impressionanti, ci sono implicazioni per gli sviluppatori che sono forse molto più interessanti.

Esistono diversi autocodificatori LLM sul mercato. Tuttavia, GitHub CoPilot è forse il più noto e il più efficace. Gran parte del motivo è che è addestrato sul repository GitHub. Ha accesso a milioni di esempi di codice open-source, best practice, architetture applicative e molto altro da cui imparare, il che gli consente di fornire risultati di alta qualità e versatili.

 

2. Come funzionano i copiloti di codifica?

 

Uno dei modi più semplici per parlare di come funzionano i copiloti di codifica è guardare al prodotto leader del settore, GitHub CoPilot. L’applicazione si basa sul modello ChatGPT-3 di OpenAi.

Come ChatGPT e altri LLM simili, CoPilot si basa su miliardi di parametri. Durante lo sviluppo di ChatGPT-3, OpenAI ha iniziato a costruire un programma di codifica dedicato, chiamato OpenAI Codex. Microsoft ha acquistato l’accesso esclusivo al prodotto.

Tuttavia, l’aspetto fondamentale è che Microsoft possedeva già GitHub. Se siete coder, conoscete bene GitHub. In sostanza, si tratta di una piattaforma basata sul web utilizzata per il controllo delle versioni e la collaborazione nei progetti di sviluppo software. Hanno formato il Codex OpenAI sulla libreria GitHub che conteneva milioni di righe di codice pubblico e open-source.

CoPilot utilizza il Machine Learning per trovare schemi e relazioni tra le righe di codice. Proprio come ChatGPT, esamina una parola o una riga e calcola la probabilità di ciò che dovrebbe venire dopo, basandosi su un vasto archivio di dati storici.

La potenza dei copiloti AI risiede nella loro capacità di suggerire frammenti di codice durante la modifica da parte degli sviluppatori. Consideratelo come un completamento automatico potenziato per la codifica. Quando i coder inseriscono una riga di codice, l’LLM confronta l’inizio del codice con la sua enorme libreria di progetti precedenti. Da qui, suggerisce linee probabilistiche e nuove linee di codice.

I vantaggi evidenti sono che gli sviluppatori possono risparmiare una quantità incredibile di tempo grazie al completamento automatico. Aumenta la produttività e, in molti casi, l’accuratezza del codice.

 

3. E l’intelligenza artificiale generativa per la codifica e lo sviluppo?

 

Come si può vedere dalla storia di CoPilot, l’IA generativa e i copiloti hanno radici simili. Sono entrambe tecnologie che utilizzano la probabilità statistica per fare previsioni sulle esigenze degli utenti sulla base di informazioni imputate.

Tuttavia, la grande differenza tra il software di copilotaggio e l’IA generativa è che quest’ultima è basata su messaggi. In breve, ciò significa che gli utenti inseriscono una serie di istruzioni scritte nella macchina e questa produce contenuti. Come sa chi ha usato ChatGPT o applicazioni simili, questo output può assumere la forma di testo, immagini, video o codice.

Quindi, sebbene i metodi utilizzati dai codificatori per arrivare alla codifica automatizzata siano diversi, possiamo collocarli sotto un ombrello simile, quello della codifica automatizzata o generativa assistita dall’IA.

 

L’evoluzione del testing del software

l'evoluzione del testing del software

Il testing del software è reattivo e in continua evoluzione. Nel giro di pochi decenni, si è modificato e trasformato per rispondere a nuove esigenze e per utilizzare i progressi della tecnologia.

 

1. Test manuali:

I primi tempi del testing del software prevedevano l’esecuzione di test manuali. Questo tipo di test era costoso e richiedeva molto tempo perché gli esperti di QA dovevano esaminare il software con un pettine a denti stretti, sviluppando una serie di casi di test, eseguendo e registrando i risultati, programmando le correzioni e ripetendo il processo.

Garantire che tutti gli scenari e le situazioni possibili fossero coperti da questi test è stata una sfida importante e, se si aggiungono i tempi e i costi necessari, i test manuali hanno richiesto molte risorse. Inoltre, era altamente suscettibile all’errore umano, amplificato da opzioni di distribuzione limitate, il che significava che qualsiasi bug non scoperto era difficile da correggere rapidamente.

 

2. Test scriptati:

 

I test scriptati hanno rappresentato un enorme passo avanti per la comunità QA. Invece di esaminare manualmente il codice e gli scenari di test, gli sviluppatori hanno potuto scrivere programmi in grado di testare automaticamente il software. I grandi vantaggi sono stati che i test sono diventati più efficienti e meno inclini all’errore umano. Tuttavia, per ottenere questo risultato è stato necessario pianificare e codificare in modo competente, preciso e con grande dispendio di tempo per garantire una copertura completa.

 

3. Automazione dei test:

 

L’automazione dei test è stata l’evoluzione successiva del testing. Strumenti come ZAPTEST sono stati in grado di offrire ai codificatori tutti i vantaggi dei test scriptati, ma con un’interfaccia priva di codice. Anche in questo caso, i vantaggi significativi sono stati il risparmio di tempo, i test riutilizzabili e adattabili, i test dell’interfaccia utente e delle API e i test multipiattaforma e multidispositivo.

 

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

4. Test guidati dai dati:

 

I test guidati dai dati sono stati la soluzione al problema di testare i software che elaborano diversi set di dati. Anche in questo caso si tratta di una forma di automazione dei test, ma questo metodo prevede la creazione di script di test e la loro esecuzione su set di dati assegnati. Questo tipo di test ha permesso agli sviluppatori di lavorare più velocemente, di isolare i test e di ridurre il tempo di ripetizione dei casi di test.

 

5. Test generativi dell’intelligenza artificiale:

 

I test generativi dell’intelligenza artificiale sono l’innovazione più recente nel campo dei test del software. Utilizzando gli LLM, i team QA possono creare casi di test e dati di test che contribuiscono ad accelerare il processo di test. Questi casi di test sono altamente flessibili e modificabili, il che aiuta gli sviluppatori a riutilizzare e riproporre i test e ad aumentare notevolmente la portata dei test.

 

L’uso attuale di copiloti e

L’intelligenza artificiale generativa nel testing del software e nella RPA

L'uso attuale dei copiloti e dell'IA generativa nel test del software e nella RPA

L’IA generativa e i copiloti hanno avuto un grande impatto sul testing del software. Tuttavia, piuttosto che sostituire completamente i codificatori, questi strumenti hanno contribuito ad aumentare i tester. In breve, aiutano gli sviluppatori a diventare più rapidi ed efficienti e, in molti casi, a migliorare la qualità dei test.

Il
Sondaggio sugli sviluppatori di Stack Overflow del 2023
offre alcuni spunti di riflessione sull’uso attuale degli strumenti di IA all’interno della comunità degli sviluppatori di software. Uno degli aspetti più interessanti del sondaggio è che, mentre poco più della metà degli sviluppatori ha dichiarato di essere interessata agli strumenti di intelligenza artificiale per il test del software, meno del 3% ha affermato di fidarsi di questi strumenti. Inoltre, solo uno su quattro ha dichiarato di utilizzare attualmente strumenti di intelligenza artificiale per il testing del software.

L’aspetto interessante di queste statistiche è che dimostrano che l’utilizzo degli strumenti di IA non è ancora diffuso e che gli early adopters possono ancora ottenere un vantaggio.

 

1. Casi d’uso dell’intelligenza artificiale copilota e generativa nel test del software e nella RPA

 

I copiloti e l’IA generativa stanno influenzando ogni settore dello sviluppo software. Ecco alcuni dei modi in cui la tecnologia può aiutare con il test del software e l’RPA.

 

Analisi dei requisiti

L’analisi dei requisiti è una parte fondamentale del ciclo di vita dello sviluppo del software. Il processo prevede la comprensione dei requisiti degli stakeholder e delle varie caratteristiche necessarie per costruire un software. L’intelligenza artificiale generativa può aiutare i team nell’ideazione, proponendo nuove idee e prospettive.

 

Pianificazione dei test

Una volta che i requisiti di test sono ben compresi, i team QA devono suddividere le cose in un programma per garantire un’adeguata copertura dei test. Questo tipo di lavoro richiede competenza ed esperienza, ma Generative AI può supportare i team attraverso esempi e guide, oltre a consigliare strumenti particolari e best practice per i loro requisiti specifici.

 

Creazione di casi di test

I team di QA possono utilizzare gli LLM per analizzare il codice, i requisiti utente e le specifiche del software per comprendere le relazioni sottostanti al sistema. Una volta che l’intelligenza artificiale conosce gli input, gli output e i comportamenti attesi del software, può iniziare a costruire i casi di test per verificare il software.

I vantaggi vanno oltre il risparmio di tempo e la codifica manuale. La creazione di casi di test con l’intelligenza artificiale può anche portare a una copertura più completa, perché può esplorare aree che gli ingegneri QA potrebbero non considerare, portando a build più affidabili.

 

Trovare e risolvere i bug

L’apprendimento automatico consente ai professionisti della QA di ridurre significativamente il tempo necessario per individuare e risolvere i bug. Nel test del software, molti bug sono facili da individuare. Tuttavia, in molti scenari, si tratta di un processo laborioso e lungo. L’intelligenza artificiale generativa può eseguire controlli in una frazione del tempo impiegato dagli operatori manuali e aiutare a evidenziare anche i bug più ostinati. Inoltre, questi strumenti di intelligenza artificiale possono anche risolvere i bug che identificano, risparmiando tempo infinito ai team di QA.

 

Test dell’interfaccia utente

Gli strumenti di IA generativa possono simulare una serie di comportamenti e interazioni degli utenti con i sistemi software. I metodi possono dare ai team di sviluppo la certezza che la loro interfaccia sia in grado di gestire un’ampia gamma di usi umano-computer. Inoltre, l’intelligenza artificiale generativa può anche analizzare i dati e le heatmap dell’interfaccia utente e fornire suggerimenti su come migliorare l’interfaccia utente e renderla più facile da usare.

 

Il futuro dei copiloti e dell’IA generativa

in Test del software e RPA

Il futuro dei copiloti e dell'IA generativa nel test del software e nella RPA

Se l’uso attuale dei copiloti e dell’IA generativa nell’automazione del software è già entusiasmante, il futuro è ancora più promettente.

Il futuro del copilota e dell’IA generativa dipende dai miglioramenti che possono essere apportati ai prodotti. Un recente studio della Purdue University, intitolato Chi risponde meglio? Un’analisi approfondita delle risposte di ChatGPT e Stack Overflow alle domande di ingegneria del software sottolinea alcuni limiti dei modelli di IA generativa.

I ricercatori hanno somministrato a ChatGPT oltre 500 domande tratte da Stack Overflow. Lo strumento di intelligenza artificiale ha risposto in modo impreciso per oltre la metà. Ora, è importante notare che uno dei problemi più significativi rilevati dai ricercatori è che l’IA ha fallito più spesso perché non ha compreso correttamente le domande. Questo dettaglio sottolinea l’importanza dell’ingegneria tempestiva nell’ambito dell’IA generativa.

Inoltre, quest’anno sia Google che Amazon hanno condotto dei test indipendenti per verificare la qualità degli strumenti di IA generativa in un contesto di domande di colloquio. In entrambi i casi, lo strumento è riuscito a rispondere alle domande del test abbastanza bene da ottenere la posizione, come riportato da
CNBC
e
Business Inside
, rispettivamente.

Quindi, è chiaro che siamo a un punto di questa tecnologia in cui il potenziale c’è, ma alcuni aspetti minori devono essere risolti. L’entità del miglioramento di questi strumenti negli ultimi anni ci dà la certezza che si raggiungerà il livello richiesto e probabilmente prima del previsto.

Ora possiamo dare un’occhiata ad alcune delle aree in cui queste tecnologie avranno un impatto sul futuro dei test di sviluppo del software.

 

1. Iperautomazione

 

L’iperautomazione descrive una destinazione nell’evoluzione dell’impresa in cui ogni processo che può essere automatizzato sarà automatizzato. Si tratta di un approccio olistico alla produttività, altamente interconnesso.

In termini di sviluppo del software, non è difficile immaginare un sistema centralizzato con una supervisione dei requisiti dei processi aziendali. Il sistema comprenderà e identificherà le esigenze e le efficienze e individuerà costantemente le aree da migliorare attraverso la tecnologia.

Con l’evoluzione delle aziende, questi sistemi centralizzati utilizzeranno l’IA generativa per costruire applicazioni che risolveranno automaticamente i colli di bottiglia e le inefficienze, o magari per affidare lavori particolari agli ingegneri.

 

2. Progettazione di architetture software

 

Con dati sufficienti, gli strumenti di intelligenza artificiale potrebbero comprendere le migliori pratiche di architettura del software e trovare modi per migliorare questi progetti per ottenere la massima efficienza. L’apprendimento automatico consiste nel trovare schemi e relazioni che sono al di là della portata della mente umana.

Se gli strumenti di intelligenza artificiale hanno una conoscenza sufficiente di una varietà di applicazioni, possiamo istruirli a piegare le architetture precedenti verso nuovi requisiti, portando a costruzioni più efficienti o addirittura a idee che altrimenti non sarebbero state prese in considerazione.

 

3. Modernizzazione dei sistemi legacy

 

Sebbene nessun software sia mai perfetto, esistono molti strumenti che svolgono ancora un lavoro eccellente e sono così profondamente radicati nell’infrastruttura aziendale da essere difficilmente sostituibili. L’adattamento di questi sistemi può essere un compito arduo, soprattutto se sono stati scritti utilizzando un codice software che è passato di moda.

In futuro, gli strumenti di intelligenza artificiale generativa saranno in grado di convertire questo codice nel linguaggio del momento, consentendo ai team di mantenere i sistemi esistenti e, in molti casi, di migliorarli.

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

 

4. Migliorare lo sviluppo low-code e no-code

 

Una delle sfide dell’automazione del test del software attraverso gli strumenti di intelligenza artificiale generativa che abbiamo identificato in precedenza era una situazione in cui il codificatore non aveva le conoscenze e l’esperienza necessarie per verificare l’output.

I copiloti dell’intelligenza artificiale contribuiranno a potenziare gli strumenti low-code fornendo suggerimenti migliori che porteranno ad applicazioni robuste. Strumenti di test sofisticati permetteranno agli operatori umani di avere libero sfogo creativo, convalidando costantemente il loro lavoro e aprendo la porta a professionisti non tecnici per costruire le applicazioni di cui hanno bisogno.

 

Vantaggi dell’IA generativa nel testing del software

prompt engineering in software test automation e rpa (robotic process automation)

L’utilizzo dell’intelligenza artificiale generativa per il testing del software presenta numerosi vantaggi che la rendono un’opzione interessante per i team di sviluppo che desiderano lavorare più velocemente senza compromettere la qualità.

 

1. Accelerare il ciclo di vita dello sviluppo del software

 

Gli sviluppatori sono costantemente sotto pressione per lavorare a lungo e garantire che il software e le nuove funzionalità arrivino sul mercato in modo tempestivo. Sebbene le metodologie Agile/DevOps abbiano garantito una maggiore efficienza dello sviluppo, esistono ancora singole fasi di sviluppo che possono beneficiare di un’ulteriore razionalizzazione.

Gli strumenti di intelligenza artificiale generativa consentono ai team di testing di affrontare varie fasi dell’SDLC, dalla generazione di prototipi al test dell’interfaccia utente.

 

2. Rilevamento completo dei bug

 

Una delle applicazioni più potenti dell’IA nel testing del software deriva dalla capacità della tecnologia di confrontare grandi insiemi di dati. Gli strumenti di ML possono analizzare vasti set di dati (compreso il codice) per costruire un archivio di informazioni e modelli previsti.

Quando gli sviluppatori eseguono il commit del codice, possono confrontarlo con questi modelli, che possono evidenziare scenari inaspettati, dipendenze e vulnerabilità, consentendo di migliorare il codice durante l’intero processo di sviluppo.

 

3. Miglioramento della copertura dei test

 

Gli strumenti di apprendimento automatico sono costruiti per analizzare e comprendere vaste serie di dati. Se applicato al test del software, consente ai team di aumentare la portata del loro test. I vantaggi vanno oltre la semplice eliminazione del lavoro umano dall’equazione per risparmiare denaro; l’intelligenza artificiale porta anche a un tipo di test molto più completo che consente di migliorare l’individuazione dei bug in un insieme complesso di scenari.

 

4. Costi ridotti

 

Rispetto all’impiego di un team di ingegneri QA e al loro utilizzo per attività di test del software ripetitive e dispendiose in termini di tempo, l’IA generativa e l’RPA sono più veloci ed economicamente vantaggiose.

Man mano che il mondo dello sviluppo software diventa più competitivo, diventa sempre più importante trovare il modo di fornire prodotti di qualità e duraturi rispettando il budget. Gli strumenti di intelligenza artificiale generativa e i copiloti possono ridurre la dipendenza dagli ingegneri, consentendo loro di svolgere un lavoro orientato al valore e portando a costruzioni meno gonfie.

 

Gli strumenti di intelligenza artificiale generativa segnano la fine

di ingegneri del software umani?

Gli strumenti di IA generativa segnano la fine degli ingegneri del software umani?

Nonostante gli ovvi vantaggi, qualsiasi strumento di automazione può causare ai lavoratori un livello di ansia per il loro futuro. Sebbene si tratti di una reazione normale, la velocità e la portata dell’IA generativa fanno sì che le preoccupazioni siano più ampie del solito. Sebbene questi strumenti siano in grado di automatizzare molti lavori, non possono svolgere tutte le attività degli ingegneri del software. La comprensione delle capacità e dei limiti della tecnologia è essenziale per gli ingegneri e i dirigenti.

La prima cosa da ricordare è che gli strumenti di automazione dei test basati sull’intelligenza artificiale esistono da tempo sul mercato. Tuttavia, la natura user-friendly dell’IA generativa la rende capace di ulteriore flessibilità.

Una delle prime cose da considerare è che l’IA generativa funziona meglio con risultati che possono essere verificati. Questo è un punto chiave. La natura della formazione dei LLM significa che faranno del loro meglio per darvi una risposta, anche se questo occasionalmente significa “allucinare” fatti, riferimenti e argomenti.

Ora, se avete una conoscenza sufficiente della codifica, sarete in grado di leggere e verificare qualsiasi testo prodotto da Generative AI e di individuare potenziali errori. Se siete un citizen coder che utilizza l’IA generativa invece di saper codificare, non sarete in grado di individuare questi errori.

Quindi, se guardati da questa prospettiva, gli ingegneri qualificati saranno ancora una parte fondamentale dell’ecosistema di sviluppo del software. I test saranno comunque richiesti sia in termini di supervisione sia in termini pratici.

Un’altra limitazione dell’IA generativa per il testing del software riguarda il testing mobile. Ad esempio, ChatGPT è una buona opzione per testare le interfacce utente dei siti web. Tuttavia, non ha accesso a diversi dispositivi mobili. Con un numero così elevato di telefoni e modelli diversi sul mercato, si trova in ritardo rispetto agli attuali software di automazione dei test come ZAPTEST. Anche questo problema non è di poco conto. Più di
metà di tutto l’utilizzo di Internet avviene da mobile
e questo numero aumenta ogni anno.

Quindi, anche se l’IA generativa toglierà molte mansioni agli sviluppatori, non renderà questi professionisti obsoleti senza grandi cambiamenti nell’infrastruttura di test e nella capacità di verificare i risultati.

 

Riflessioni finali

 

Il testing del software e la RPA sono in costante miglioramento. Man mano che nascono nuove tecnologie e metodi, entrambe le discipline assorbono le migliori pratiche per aiutare i team QA a eseguire test più rapidi e completi a una frazione del prezzo dei test manuali.

Sebbene il miglioramento della portata dei test e la riduzione degli errori umani e dei costi siano alcuni dei vantaggi più evidenti dei test basati sull’intelligenza artificiale, essi aiutano anche i team ad adottare un approccio di integrazione continua e pipeline di distribuzione (CI/CD).

Con le aspettative dei consumatori e la concorrenza più alta che mai, l’IA generativa offre ai team un modo per fornire test rapidi ed efficienti senza compromettere la qualità.

Download post as PDF

Alex Zap Chernyak

Alex Zap Chernyak

Founder and CEO of ZAPTEST, with 20 years of experience in Software Automation for Testing + RPA processes, and application development. Read Alex Zap Chernyak's full executive profile on Forbes.

Get PDF-file of this post

Virtual Expert

ZAPTEST

ZAPTEST Logo