Glossario · AI nel testing
Self-healing locator
Detto anche: locator auto-riparanti, self-healing locators, test self-healing, self-healing test automation
Definizione
Locator che, quando non trova più l'elemento, lascia allo strumento di test la scelta di un sostituto probabile in base ad attributi salvati o a un modello.
Un self-healing locator (locator auto-riparante) è un locator di test UI supportato da un meccanismo di recupero. Quando il locator principale non trova un elemento, ad esempio perché un id è cambiato, lo strumento cerca nella pagina l’elemento che meglio corrisponde a ciò che sapeva dell’originale (tag, testo, attributi, posizione, elementi vicini), lo usa e di solito registra la “riparazione” (heal) perché qualcuno possa aggiornare il test. L’obiettivo è ridurre i fallimenti causati da modifiche innocue al markup.
Come funziona in pratica
La maggior parte delle implementazioni segue lo stesso schema:
- Nelle esecuzioni riuscite, salva un’impronta (fingerprint) di ogni elemento toccato dal test.
- Quando un locator fallisce, assegna un punteggio agli elementi candidati nella pagina confrontandoli con quell’impronta.
- Se il candidato migliore supera una soglia, lo usa e registra la sostituzione; altrimenti fallisce normalmente.
Questo tipo di healing basato sulla somiglianza degli attributi è consolidato: lo offrono strumenti commerciali e Healenium è un’opzione open source per Selenium. L’healing basato su LLM, in cui un modello legge la pagina o l’albero di accessibilità e propone un nuovo locator o una patch al test, è più recente. I test agent di Playwright, introdotti nella 1.56, includono un healer che suggerisce correzioni per i test che falliscono; trattali come assistenti che propongono modifiche da revisionare, non come un pilota automatico.
Il vero rischio: “riparare” un bug reale
Un heal presuppone che la modifica fosse solo estetica. A volte non lo era:
- Il pulsante “Submit” è stato rimosso per errore e l’healer clicca invece su “Save draft”.
- Un campo è stato rietichettato da “Email” a “Username”, un vero cambiamento di requisito che il test avrebbe dovuto segnalare.
- Esistono due righe simili e l’healer sceglie quella sbagliata, così il test passa sui dati sbagliati.
In ciascun caso un test che dovrebbe fallire diventa verde. Regole che mantengono onesto l’healing:
- Segnala ogni heal e fai fallire l’esecuzione (o almeno evidenziala) nel quality gate di rilascio.
- Trasforma gli heal in modifiche al codice. Accetta o rifiuta il locator suggerito in review; non lasciare che lo strumento continui a usarlo in silenzio.
- Verifica i risultati, non solo le interazioni, così cliccare sull’elemento sbagliato fa comunque fallire l’asserzione successiva.
Prima sistema i locator
Gran parte della fragilità che il self-healing cerca di risolvere nasce da selettori fragili: lunghe catene XPath, nomi di classe generati, percorsi basati sugli indici. Locator orientati all’utente come getByRole('button', { name: 'Submit' }) di Playwright o attributi data-testid stabili eliminano la maggior parte di questa necessità senza bisogno di indovinare nulla.