opinione· 5 min di lettura

Manutenzione del codice scritto da un agente: contano i test che non passano più

Di Marco Masut

Il codice scritto da un agente rende più difficile la manutenzione successiva? Uno studio uscito il 10 ottobre 2026 risponde con una distinzione utile a chi guida un team: il peso non sta in una difficoltà intrinseca del codice dell'agente, sta nei test già rotti che la lavorazione successiva eredita. Per una software house è una notizia utile, perché i test rotti si contano e si bloccano prima del merge. Qui riporto cosa hanno misurato gli autori, cosa lasciano fuori e quale controllo introdurre lunedì mattina.

Cosa hanno misurato Pan e colleghi

Lo studio si intitola "Do Modifications Made by Coding Agents Make Subsequent Software Maintenance Harder?". Lo firmano Ruwei Pan, John Zhang, Linhao Wu, Yakun Zhang, Hongyu Zhang e Lu Zhang ed è un preprint su arXiv del 10 ottobre 2026. La pagina non dichiara finanziamenti né conflitti di interesse specifici del lavoro.

Il metodo è un confronto a coppie. Gli autori costruiscono SWE-Maintain: 100 episodi di tre modifiche ciascuno, presi dalla storia di 50 repository Python reali, con test certificati e nascosti all'agente. Ogni modifica successiva viene eseguita due volte con lo stesso agente e gli stessi test. La prima volta parte dalle modifiche scritte dagli sviluppatori, la seconda da quelle che l'agente aveva fatto nei passaggi precedenti.

I sistemi provati sono cinque (Mini-SWE-Agent, Agentless, SE-Agent, OpenHands e Claude Code), con due modelli, GPT-5.6-Luna e DeepSeek-V4-Flash-0731, per 1.996 coppie di modifiche successive.

Dove si perde la lavorazione successiva

Partendo dal codice dell'agente, la modifica successiva riesce in media 5,6 punti percentuali meno spesso, con un intervallo di confidenza al 95% da meno 7,2 a meno 4,1. Se per considerarla riuscita si chiede anche che passino tutti i test delle modifiche precedenti, il divario sale a 14,0 punti: la quota scende dal 33,6% al 19,6%.

Il peso sta nei test già rotti

La differenza viene quasi tutta da un punto. In 1.349 casi su 1.996, cioè circa due terzi, il codice di partenza dell'agente falliva già test precedenti. Da quella situazione solo l'1,9% delle modifiche successive arriva alla fine con tutti i test accumulati verdi, contro il 23,7% partendo dalla storia degli sviluppatori.

Quando invece il codice ereditato supera i test precedenti, lo svantaggio sparisce: la differenza è più 2,7 punti, con intervallo da meno 0,5 a più 6,1. Gli autori ne concludono che il costo sta nei test ereditati rotti e non in un difetto misurabile del codice che conserva il comportamento già testato.

Un esempio dal paper

Uno dei casi descritti dagli autori riguarda Claude Code. Lo sviluppatore aveva aggiunto un alias a livello di modulo per la compatibilità con Python 3. L'agente aveva corretto soltanto i punti di chiamata esercitati dal compito, e la modifica passava i test del momento. Quando il codice successivo ha usato l'alias in tutto il modulo, 8 test su 10 sono falliti con un errore di nome non definito.

Cosa lo studio non dimostra

Sei cautele impediscono di trasformare questi numeri in una regola per il vostro team. I repository sono 50, tutti Python e di dimensioni piccole, con una mediana di 1.744 righe di codice Python. Gli episodi hanno tre modifiche e ogni modifica è stata eseguita una sola volta per condizione.

I test precedenti erano nascosti all'agente: lo studio non dice cosa accade quando l'agente li può eseguire, ed è proprio ciò che gli autori raccomandano di fare. Nessuna persona rivede il lavoro, quindi manca la parte di revisione che in un team reale intercetta una parte dei problemi.

"Nessuno svantaggio" è una lettura prudente, non una prova: l'intervallo da meno 0,5 a più 6,1 include lo zero e per quel gruppo di casi gli autori riportano p uguale a 0,09. Infine non vengono provati altri linguaggi, repository grandi, né Cursor o GitHub Copilot.

La tesi che segue è mia e non è dello studio: la lavorazione successiva dovrebbe partire da una base di cui si conoscono i test rossi.

Cosa cambiare lunedì mattina

Il primo cambiamento è nel contratto di lavorazione. Come ho scritto nell'articolo sul contratto di lavorazione per un agente, il primo campo è lo stato di partenza, cioè il commit da cui l'agente parte. Aggiungete a quel campo l'elenco dei test che su quel commit sono già rossi. Una lavorazione che parte con una lista vuota dichiara una base verde; se la lista non è vuota, la prima lavorazione è sistemare quei test, non aggiungere funzioni.

Il secondo è un controllo prima dell'accettazione. Con pytest, per esempio, basta confrontare i test falliti sulla base e sul ramo dell'agente:

git checkout "$BASE" && pytest -q -rf | grep '^FAILED' | sed 's/ - .*//' | sort > base.txt
git checkout "$HEAD" && pytest -q -rf | grep '^FAILED' | sed 's/ - .*//' | sort > head.txt
comm -13 base.txt head.txt

Ogni riga stampata da comm -13 è un test rotto dalla modifica. Se l'elenco non è vuoto, la pull request non viene accettata. Così l'agente non può lasciare ai compiti successivi quello che i test già dicevano di non rompere.

Il terzo è una misura. Contate, sulle ultime 20 lavorazioni con un agente, quante sono partite da un commit con almeno un test rosso. È un numero che scrivo io come proposta di controllo: non esiste una soglia universale. Come ho spiegato parlando di chi scrive il test che giudica l'agente e delle metriche di delivery dopo il merge, le rilavorazioni vanno guardate dopo il merge, non solo il volume di pull request aperte.

Dove l'ho applicato io

Le routine che scrivono gli articoli di questa serie seguono lo stesso principio. Una procedura versionata nel repository stabilisce che prima di ogni pubblicazione deve girare un controllo automatico, e che se fallisce l'articolo non esce.

DETENT, il metodo che sto costruendo per software house e team di sviluppo, dichiara sul sito la stessa impostazione: l'unità di lavoro è un contratto di lavorazione che comincia con l'SHA di partenza, e chi esegue non scrive le prove che lo giudicano.

Il quadro più ampio, la industrializzazione della produzione di software con gli agenti AI, si riduce qui a una domanda da fare a ogni lavorazione: da quale base parte, e quali test restano verdi quando finisce?

Domande frequenti

Il codice scritto da un agente rende più difficile la manutenzione successiva?

Nello studio SWE-Maintain, uscito su arXiv il 10 ottobre 2026, le modifiche successive riescono meno spesso quando partono dal codice dell'agente: 5,6 punti percentuali in meno in media. La differenza viene quasi tutta dai test precedenti che il codice ereditato già non supera. Quando i test precedenti passano, gli autori non misurano uno svantaggio.

Cosa sono i test ereditati?

I test ereditati sono i test del progetto che il codice di partenza già non supera quando comincia una nuova lavorazione. Chi riceve il compito li eredita senza averli rotti. Nello studio di Pan e colleghi riguardano circa due terzi dei punti di partenza partendo dalla storia dell'agente.

Come si controlla che una pull request di un agente non rompa test che prima passavano?

Si esegue l'intera suite sul commit di base e sul ramo dell'agente, si estraggono i nomi dei test falliti e si confrontano le due liste. Ogni test presente solo nella seconda lista è una regressione e blocca l'accettazione. Il confronto richiede un minuto di configurazione nella CI.

Lo studio vale anche per Cursor, GitHub Copilot o Claude Code in un progetto reale?

Lo studio ha provato Mini-SWE-Agent, Agentless, SE-Agent, OpenHands e Claude Code su 50 repository Python di piccole dimensioni. Non ha provato Cursor né GitHub Copilot, altri linguaggi o repository grandi. Il risultato va letto come un'indicazione da verificare sul proprio repository.

Continua a leggere

opinione

Agenti di coding: la velocità di una persona non diventa capacità del team

Con gli agenti di coding una persona scrive più codice, ma il team non consegna di più. Cosa dice uno studio su 718 aziende e come verificarlo da voi.
opinione

Revisione del codice con agenti di intelligenza artificiale: cosa trovano e cosa resta alla persona

Nel benchmark di Microsoft Research il miglior revisore AI trova il 71,9% dei bug, ma meno nei repository aziendali. Cosa lasciare alla persona.
opinione

Test del codice scritto da un agente: chi scrive la prova che lo giudica

Uno studio della Purdue su 2.260 pull request mostra che gli agenti dichiarano la validazione come le persone. Chi scrive i test del codice dell'agente?

Risorse pratiche su questi temi

Raccolta

Come usare Claude Code: i 10 comandi più importanti e la lista completa

Come usare Claude Code con i comandi giusti: i 10 più importanti spiegati uno per uno e la lista completa di 111 comandi, aggiornata a ottobre 2026.
Repo

Agency Agents: gli agenti AI per ogni reparto dell'azienda, gratis su GitHub

Agency Agents è un repository gratuito con 282 agenti AI divisi per reparto: vendite, finance, marketing, project management. Come installarlo e usarlo.