Il modo più affidabile per verificare il codice generato dall'IA è scrivere prima che cosa deve fare l'applicazione in ogni situazione e poi provare di proposito i casi in cui qualcosa può andare storto. Un singolo esempio che funziona dimostra poco: mostra soltanto che quel preciso percorso va a buon fine.
A chi inizia sembra una questione da programmatori. In buona parte non lo è. Non devi saper leggere il codice riga per riga per controllare se fa ciò che deve. Ti servono aspettative chiare, qualche caso di test scomodo e l'abitudine di verificare tu stesso ogni risultato.
Perché un esempio riuscito non basta
Immagina di chiedere a un agente IA come Claude Code o Codex di aggiungere alla tua lista di contatti un modulo per i nuovi contatti. Inserisci un nome e un indirizzo e-mail, clicchi su Salva e il contatto compare nella lista. Sembra finito.
Restano però parecchie domande aperte:
- Che cosa succede se il campo del nome è vuoto?
- «max@» viene accettato come indirizzo e-mail?
- Il contatto c'è ancora dopo aver ricaricato la pagina?
- Un contatto già presente finisce per comparire due volte?
L'IA ha costruito il percorso che hai descritto. Alle deviazioni che non hai menzionato forse ha pensato, forse no. Siccome il codice ha un aspetto ordinato e la risposta suona sicura di sé, spesso una lacuna salta fuori solo quando qualcuno usa davvero l'app. Il caso normale raramente è il problema. Gli errori si nascondono quasi sempre ai margini.
Stabilire prima che cosa è corretto
Per verificare ti serve un metro di giudizio. A questo scopo si prestano i casi di accettazione: frasi brevi che descrivono una situazione e il risultato atteso. Per un cambio di stato in un'app di follow-up potrebbero essere così:
- Se cambio lo stato di un contatto da «nuovo» a «contattato», la lista mostra subito il nuovo stato.
- Se filtro per stato, compaiono solo i contatti con quello stato.
- Se la data di un follow-up è nel passato, il contatto è segnato come scaduto.
Frasi del genere ti aiutano due volte. Puoi darle all'IA come incarico, invece di scrivere «fammi un filtro». E dopo puoi spuntarle una per una. Ciò che non hai formulato non lo puoi nemmeno verificare. Per questo conviene pensare ai casi scomodi già mentre scrivi l'incarico.
Che cosa fanno i test e che cosa no
Un test automatico è un piccolo programma che riproduce un caso di accettazione e segnala se si ottiene il risultato atteso. Invece di cliccare ogni volta a mano, esegui un comando e vedi quali verifiche passano e quali no.
I test servono soprattutto a tre cose:
- Fissano ciò che è corretto, indipendentemente da quanto convincente suoni una spiegazione dell'IA.
- Danno l'allarme quando una modifica successiva rompe qualcosa che prima funzionava. Lavorando con un agente IA capita facilmente, perché rifacendo un punto a volte ne viene cambiato anche un altro.
- Rendono la verifica ripetibile. Non testi a sensazione, ma ogni volta allo stesso modo.
Anche i test hanno dei limiti. Un test verifica solo ciò che contiene. Se chiedi all'IA di scrivere codice e test nello stesso momento, entrambi possono contenere lo stesso errore di ragionamento. Allora è tutto verde e comunque sbagliato. Leggi quindi almeno che cosa dovrebbe verificare un test e confrontalo con i tuoi casi di accettazione. E se un test fallisce, non lasciare che l'IA lo adatti finché passa. Chiarisci prima se è sbagliato il codice o il test.
Provare di proposito i casi d'errore
I casi d'errore sono situazioni che si discostano dal percorso ideale. Chi li provoca apposta trova la maggior parte dei punti deboli. In un'applicazione semplice, quattro gruppi coprono già molto.
Dati mancanti
Lascia vuoti i campi obbligatori. Salva un contatto senza nome, crea un follow-up senza data. Osserva se l'app mostra un messaggio comprensibile o se nella lista finisce una voce vuota. Controlla anche i campi che contengono solo spazi: per molti programmi uno spazio è un dato valido.
Dati non validi
Inserisci dati che non hanno la forma prevista: un indirizzo e-mail senza dominio, una data come il 31 febbraio, un testo molto lungo. Prova anche caratteri speciali, lettere accentate e dieresi nel nome. Una buona verifica dei dati respinge le assurdità e lascia passare dati corretti come «Müller-Zürcher». Vanno testate entrambe le cose.
L'interfaccia non risponde o risponde in modo inatteso
Non appena la tua app riceve dati da un'interfaccia, si aggiungono nuove fonti di errore. Verifica almeno questi casi:
- La risposta è vuota. L'app mostra un'indicazione sensata o una superficie vuota che confonde?
- L'interfaccia segnala un errore. L'app si blocca o resta utilizzabile?
- La risposta tarda. Si vede che sta caricando o l'app sembra congelata? Nel frattempo si può cliccare due volte e creare così voci doppie?
Con un'interfaccia reale questi casi sono difficili da provocare, perché di solito funziona. Un'interfaccia simulata, che su richiesta risponde vuota, con un errore o lentamente, è molto più pratica.
Accessi e dati segreti
Questo ambito viene spesso dimenticato. Chiediti chi può vedere o modificare quali dati e prova se è davvero implementato così. Controlla inoltre che chiavi di accesso o password non si trovino nel codice stesso. Succede che il codice generato scriva questi valori direttamente in un file, se l'incarico non chiede altrimenti.
Checklist per ogni modifica dell'IA
Puoi ripassare questa breve lista dopo ogni passo di lavoro importante:
- Ho scritto prima in una frase che cosa deve ottenere la modifica.
- Ho provato io stesso il caso normale e non mi sono fidato del riassunto dell'IA.
- Ho testato almeno un caso con dati mancanti e uno con dati non validi.
- Se è coinvolta un'interfaccia: ho verificato risposta vuota, errore e tempo di attesa.
- I test automatici passano tutti, anche quelli che passavano già prima.
- So quali file ha modificato l'IA e so spiegare a grandi linee perché.
- Nel codice non ci sono password né chiavi.
Se un punto resta aperto, dai all'IA un'indicazione concreta: quale caso, quale risultato ti aspettavi, che cosa è successo invece. Più precisa è la descrizione, più mirata sarà la correzione.
Lavorare in modo tracciabile con un protocollo IA
Verificare significa anche sapere in seguito che cosa è successo. Aiuta un semplice protocollo: che cosa hai chiesto all'IA, che cosa ha prodotto, che cosa hai modificato o scartato tu? Sembra un impegno in più, ma ripaga non appena compare un errore. Puoi allora circoscrivere in quale passo è entrato. Chi in aggiunta salva con Git piccoli stati intermedi può annullare una modifica mal riuscita invece di coprirla con altri incarichi.
Il protocollo aiuta anche a spiegare. Chi sa descrivere la propria soluzione e indicarne i limiti l'ha verificata. Chi sa dire solo «l'IA l'ha fatto così» si è fidato.
Come si collega il corso Vibe Coding Foundation
Nel programma Vibe Coding Foundation costruisci con Claude Code o Codex un'app di contatti e follow-up per una piccola azienda, con dati di esempio. La verifica attraversa tutte le missioni. Ogni missione ha un obiettivo, criteri sotto forma di test e suggerimenti su tre livelli. Sul tuo computer un comando controlla se la tua soluzione soddisfa i criteri. A contare è però la verifica sul server dell'accademia, in un ambiente isolato senza rete. Così sperimenti direttamente che «da me funziona» e «soddisfa i criteri» sono due cose diverse.
I casi d'errore di questo articolo compaiono concretamente:
- Nella missione 3 verifichi i dati inseriti e aggiungi cambi di stato e filtri.
- Nella missione 4 ti eserciti con un'interfaccia simulata a gestire risposte, errori e tempi di attesa.
- Nella missione 5 circoscrivi errori preparati, li correggi e verifichi i casi di accesso di base.
- Nella missione 7 ampli l'app con un'esportazione CSV dei follow-up scaduti e verifichi la nuova funzione.
Per tutto il corso tieni un protocollo IA. Nell'esame di progetto scritto spieghi la tua soluzione e i suoi limiti; come viene valutata lo mostra la rubrica d'esame (in tedesco). Tutte le missioni con i tempi previsti si trovano nella panoramica del corso, e la missione 0 per configurare gli strumenti è liberamente consultabile, anche questa in tedesco. Il progetto didattico salva i dati nel browser ed è pensato per dati di esercitazione, non per dati aziendali reali. Quanto costa il corso e che cosa comprende lo trovi alla voce prezzo e prestazioni.