Test di screenshot pixel perfect: perché fallisce e che cosa scopre i veri bug visivi

Il test di screenshot pixel perfect fallisce due volte: il rumore di rendering genera falsi allarmi e una soglia in percentuale nasconde bug reali.Ecco che cosa funziona.

Di Ait Nohaila, Business Development Representative 12 min di lettura

Il test di screenshot pixel perfect confronta ogni pixel di uno screenshot con un'immagine di riferimento.Fallisce due volte: un rumore di rendering innocuo genera falsi allarmi, e una soglia in percentuale abbastanza permissiva da zittirli lascia passare una cifra sbagliata o un'icona mancante.

Che cos'è il test di screenshot pixel perfect?

Definizione

Il test di screenshot pixel perfect è un controllo visivo che confronta un nuovo screenshot con uno screenshot di riferimento, pixel per pixel.

  • Ogni pixel il cui colore differisce conta come una differenza.
  • Un test fallisce quando ci sono differenze, o più di quante una soglia ne permetta.

È la forma più semplice di test di regressione visiva, e quella da cui parte la maggior parte dei team.

L'idea è giusta: una persona giudica una schermata guardandola, quindi anche un test dovrebbe guardarla.Il problema è la misura.Una schermata non viene disegnata con gli stessi pixel su ogni macchina, e i bug che contano sono spesso grandi solo pochi pixel.

Niente è sbagliato

Bordi smussatiFallisce un confronto pixel perfect
Frange colorate sul testoFallisce un confronto pixel perfect
Uno spostamento di 1 pixelFallisce un confronto pixel perfect
Un cursore di testo che lampeggiaFallisce un confronto pixel perfect
Un'evidenziazione al passaggio del mouseFallisce un confronto pixel perfect
La data di oggiFallisce un confronto pixel perfect

Qualcosa è sbagliato

Una cifra sbagliataSupera una soglia del 2 %
Una maiuscola diventata minuscolaSupera una soglia del 2 %
Un'icona mancanteSupera una soglia del 2 %
Un confronto di pixel rigoroso fa fallire i primi sei, e uno permissivo lascia passare gli ultimi tre: nessuna percentuale giudica bene tutti e nove.

Perché il confronto pixel per pixel genera falsi positivi

Un falso positivo è un test che fallisce mentre l'applicazione funziona.In un confronto pixel per pixel, nasce da tutto ciò che cambia dei pixel senza cambiare ciò che una persona vede.

Fonte di rumorePerché i pixel differiscono
Anti-aliasingI bordi del testo e delle forme vengono smussati con colori intermedi, e la smussatura cambia da una macchina all'altra.
Smussatura dei caratteriSu Windows, ClearType disegna il testo con leggere frange colorate che dipendono dallo schermo e dalle sue impostazioni.
La scheda grafica e il suo driverSfumature, ombre e angoli arrotondati possono uscire di una tonalità diversa su un'altra scheda.
Registrazione e compressioneUn'immagine di riferimento presa da un video conserva meno dettaglio di colore di quanto mostri lo schermo reale.
Uno spostamento di 1 pixelUna finestra o un layout spostato di un pixel cambia ogni bordo dell'immagine.
Un cursore di testo che lampeggiaIl cursore è acceso in uno screenshot e spento nell'altro.
Uno stato di passaggio del mouse o di focusIl puntatore resta su un pulsante in un'esecuzione e non nell'altra, quindi il pulsante è illuminato in una sola immagine.
Contenuto dinamicoUna data, un orologio, un contatore o un badge di notifica cambia ogni giorno.
Un altro ridimensionamento dello schermoUn portatile al 150 % e un monitor al 100 % disegnano lo stesso pulsante con altri pixel.

I test instabili hanno anche altre cause, come le attese e i tempi.Sono trattate in test instabili e falsi positivi.

Perché una soglia nei test di regressione visiva nasconde bug reali

La risposta abituale al rumore è una soglia: lasciar superare il confronto finché differisce meno di una certa quota dell'immagine, spesso l'1 o il 2 %.I falsi allarmi finiscono.I bug reali iniziano a passare.

I bug reali possono essere molto piccoli sullo schermo.

  • Una cifra sbagliata in un prezzo o in un totale cambia qualche decina di pixel.
  • Una maiuscola diventata minuscola ne cambia qualche decina in più.
  • Una piccola icona mancante ne cambia qualche centinaio.
  • Su un pannello o su un'intera schermata, ciascuno resta molto sotto l'1 %.
I bug che costano di più sono spesso i più piccoli sullo schermo: una cifra di una fattura, una parola di un'avvertenza legale.

Una quota dell'immagine è la misura sbagliata

Rumore e bug si somigliano quando li si conta su tutta l'immagine.Per una persona non si somigliano.

  • Il rumore è ciò che nessuno vede: un bordo più morbido, una sfumatura più chiara, un cursore che ha lampeggiato.
  • Un cambiamento vero è ciò che una persona legge o riconosce: una lettera, una cifra, un'icona, un colore.

Atteso

$12,480

Questa esecuzione

$12,430

Misurato come quota dell'immagine

Una cifra è una quota minima del pannello, molto al di sotto di una soglia del 2 %.

Supera: il bug sfugge

Visto con gli occhi di una persona

Una persona che legge il totale vede subito la cifra sbagliata, e così GUI Test Studio.

Fallisce: il bug viene scoperto

Lo stesso bug, giudicato in due modi.

La domanda giusta non è quindi quanta parte dell'immagine sia cambiata.È la domanda che si fa una persona: chi guarda questo schermo vedrebbe una differenza?La risposta non dipende dalle dimensioni dell'immagine, quindi vale per una piccola icona e per un'intera finestra di dialogo.

I rimedi abituali ai test di screenshot instabili, e quanto costano

RimedioQuanto costa
Alzare la sogliaIl rumore passa, e anche i piccoli bug.
Mascherare le parti che cambianoOgni data, orologio e badge viene mascherato a mano, e un bug sotto una maschera non viene mai visto.
Ripetere un test fallitoUn fallimento reale ottiene una seconda occasione di passare per caso, e ogni esecuzione dura di più.
Tenere un'immagine di riferimento per macchinaOgni browser, sistema e ridimensionamento ha bisogno delle sue immagini, e ognuna va ripresa dopo ogni modifica.
Congelare l'ambienteUn'unica immagine di macchina esegue ogni test, e un test che lì supera non dice nulla degli schermi dei vostri utenti.

In un framework con codice come Playwright, toHaveScreenshot prende una soglia di colore per pixel e un numero o una quota massima di pixel diversi per l'intera immagine.Siete voi a scegliere quei numeri, scrivere le maschere e tenere un'immagine di riferimento per browser e piattaforma, in codice che mantenete voi.

Come GUI Test Studio confronta gli screenshot

GUI Test Studio crea test end-to-end di applicazioni web, applicazioni desktop Windows, telefoni Android e giochi a partire da una registrazione, senza codice.Ogni elemento su cui fate clic o in cui digitate riceve un'asserzione visiva, un controllo che conserva una piccola immagine dell'elemento, il suo obiettivo visivo.Vedete le asserzioni visive.

Trovare

La Fase di ricerca

Confrontare

La Fase di verifica

Secondo sguardo

Analisi intelligente con IA

Report

Il Report di affidabilità

Prima, trovare l'elemento

La Fase di ricerca trova l'elemento sullo schermo reale, ovunque si trovi ora.Il GTS Engine + AI chiede prima all'applicazione, tramite le sue informazioni di accessibilità o gli elementi propri della pagina, e trova l'elemento a vista quando l'applicazione non lo dice.Vedete come GUI Test Studio trova ogni elemento.

Il confronto avviene poi dove si trova l'elemento.Una finestra spostata, o un pulsante slittato di un pixel, non è affatto una differenza.

Poi, confrontarlo come lo guarda una persona

La Fase di verifica confronta l'elemento con il suo obiettivo visivo in modo percettivo, come fa l'occhio umano.Nota ciò che una persona noterebbe e ignora ciò che nessuno vede.

Sullo schermoChe cosa fa la Fase di verifica
Bordi smussati e smussatura dei caratteriIgnorati: cambiano da una macchina all'altra, e nessuno li vede.
Registrazione e compressioneIgnorati: un'immagine presa da un video conserva un po' meno dettaglio di colore dello schermo reale, e una persona vede lo stesso schermo.
Uno spostamento di 1 pixelIgnorato: l'elemento viene confrontato dove si trova ora.
Un cursore di testo che lampeggiaIgnorato, mentre una lettera cambiata accanto viene scoperta.
Una cifra sbagliataScoperto: è ciò che una persona legge per primo.
Una maiuscola diventata minuscolaScoperto: una persona lo vede subito.
Un colore cambiatoScoperto, appena una persona lo noterebbe: un'icona rossa diventata arancione fallisce.
Un'icona mancanteScoperto: una persona vede il vuoto.

Passaggi del mouse e date

In un test registrato, l'esecuzione rimette il puntatore del mouse dove si trovava quando è stata presa l'immagine.Un pulsante è illuminato nell'esecuzione esattamente quando lo era nella registrazione.

Un valore che cambia ogni giorno non va in un obiettivo visivo.Tenete l'obiettivo sull'elemento stesso, e controllate una data, un totale o un contatore con un'asserzione testuale dinamica, che controlla il suo formato qualunque sia il suo valore.Vedete i controlli del testo.

E quando una schermata appare diversa a ragione in modalità scura, in un'altra lingua o su un altro schermo, tenete una versione attesa per ambiente con un profilo di baseline: vedete testare la modalità scura, altre lingue, altri schermi.

Confronto di pixel contro GUI Test Studio, caso per caso

La differenzaUn confronto di pixel con una soglia in percentualeGUI Test Studio
Bordi smussati su un'altra macchinaFallisce se rigoroso, supera se permissivoSupera: nessuno lo vede
Frange colorate della smussatura dei caratteriFallisce se rigorosoSupera: nessuno lo vede
L'elemento si è spostato di 1 pixelFallisce: ogni bordo differisceSupera: l'elemento viene confrontato dove si trova
Un cursore di testo che lampeggiaFallisce se rigorosoSupera: un cursore che lampeggia viene ignorato
Un'evidenziazione al passaggio del mouseFallisceSupera: il puntatore si trova dove era nella registrazione
La data di oggiFallisce ogni giornoNon confrontata: un'asserzione testuale dinamica controlla il suo formato
Una cifra sbagliataSupera una soglia dell'1 o del 2 %Fallisce: una persona vede la cifra sbagliata
Una maiuscola diventata minuscolaSupera una soglia dell'1 o del 2 %Fallisce: una persona vede la minuscola
Una piccola icona mancanteSupera su un'immagine grandeFallisce: una persona vede che l'icona non c'è più

Come scegliere la tolleranza di un confronto di immagini

In GUI Test Studio, la tolleranza di un controllo visivo è la sua Severità della verifica, scelta in parole semplici: più severa per i dettagli fini, più tollerante per le schermate piene.Non c'è nessuna percentuale da indovinare.

Severità della verificaDa usare per
EsattaImmagini che devono restare esattamente come sono.
RigorosaTesto piccolo e dettagli fini dove ogni cambiamento conta.
StandardI pulsanti, le etichette e le icone di tutti i giorni.Il valore predefinito.
PermissivaAree grandi e schermate piene, come un'intera pagina o una scena di gioco.
  1. 1

    Selezionare il controllo visivo

    Aprite il test in GUI Test Studio e fate clic sull'asserzione visiva nella timeline.Le sue impostazioni compaiono nel pannello Proprietà.

  2. 2

    Scegliere una Severità della verifica

    Tenete Standard per i pulsanti, le etichette e le icone di tutti i giorni.Scegliete un livello più severo per il testo piccolo e i dettagli fini, uno più tollerante per le aree grandi e le schermate piene, ed Esatta solo per un'immagine che deve restare esattamente com'è.

  3. 3

    Lasciare attivo Ignora i piccoli artefatti di rendering

    È attivo per impostazione predefinita, quindi i bordi smussati che differiscono tra le macchine vengono ignorati.Disattivatelo solo quando sono proprio quei bordi ciò che testate.

  4. 4

    Eseguire il test e leggere il report

    Fate clic su Esegui test.Il Report di affidabilità evidenzia ciò che è cambiato e dice in una frase perché il controllo è fallito.

  5. 5

    Aggiungere istruzioni per l'IA se una differenza è attesa

    In Avanzate, scrivete poche parole come: ignora la dimensione del carattere.L'Analisi intelligente con IA le segue quando giudica quel controllo.

La maggior parte dei test non ha mai bisogno di altro.Le impostazioni esatte di ogni livello, e quelle avanzate per il raro controllo che ne ha bisogno, sono nelle pagine asserzioni visive e impostazioni di un controllo.

Test visivi con l'IA: un secondo sguardo in parole semplici

Un confronto visivo dice che qualcosa è cambiato e dove.Un secondo parere a parole vi aiuta a decidere che cosa farne.È il compito dell'Analisi intelligente con IA, che resta disattivata finché non la attivate.

Il puntatore del mouse e il cursore di testo che lampeggia non contano mai come differenza per l'IA.Un controllo superato non le viene mai inviato.

Funziona con un modello cloud e la vostra chiave, oppure con un modello di IA locale sul vostro computer: uno che forniamo noi, o uno vostro.Alcune differenze sono attese, e solo voi sapete quali: date a un controllo delle istruzioni per l'IA, come "ignora la dimensione del carattere" o "l'icona può essere di qualsiasi colore".Vedete l'Analisi intelligente con IA.

Un controllo, fase per fase: trovato, diverso, e perché conta.

Leggere un fallimento visivo

Dopo un'esecuzione, il Report di affidabilità mostra ogni controllo fallito con l'immagine attesa, l'immagine trovata e ciò che è cambiato evidenziato sullo schermo.Il verdetto dice in una frase che cosa è cambiato e dove.

Un cambiamento vero: il titolo si è ingrandito e il pulsante è diventato grigio.Entrambi sono evidenziati, e il verdetto lo dice.

Quando il cambiamento è voluto, accettate il nuovo aspetto dal report, e da allora il test se lo aspetta.

Quali bug visivi sfuggono del tutto a un controllo con codice è il tema di i bug visivi che i test automatici non vedono.

Punti chiave

  • 1Il test di screenshot pixel perfect fallisce due volte: il rumore di rendering fa fallire schermate corrette, e una soglia in percentuale lascia passare bug reali.
  • 2Il rumore è ciò che nessuno vede, un cambiamento vero è ciò che una persona nota: una cifra, una lettera, un'icona, un colore.
  • 3Una quota dell'immagine è la misura sbagliata. Chiedetevi invece che cosa vedrebbe una persona che guarda lo schermo.
  • 4GUI Test Studio trova prima l'elemento, poi lo confronta come fa l'occhio umano, così lo smussamento, la compressione e un cursore che lampeggia non fanno mai fallire un test.
  • 5L'Analisi intelligente con IA aggiunge un secondo sguardo in parole semplici, e la sua risposta è il verdetto finale quando la attivate.

Domande

Che cos'è il test pixel perfect?

Il test pixel perfect confronta uno screenshot di un'applicazione con uno screenshot di riferimento, pixel per pixel, e fallisce quando differiscono.Vede ogni cambiamento, anche quelli che nessuno può vedere.Per questo genera falsi allarmi su schermate corrette.

Perché i test di confronto di screenshot falliscono quando non è cambiato niente?

Perché la stessa schermata non viene disegnata ovunque con gli stessi pixel.I bordi smussati, la smussatura dei caratteri, la scheda grafica, il ridimensionamento dello schermo, un cursore di testo che lampeggia o un'evidenziazione al passaggio del mouse cambiano alcuni pixel senza cambiare nulla che una persona noterebbe.Un confronto pixel per pixel li conta tutti.

Qual è una buona soglia per i test di regressione visiva?

Nessuna percentuale va bene per ogni immagine.Una quota abbastanza piccola da scoprire una cifra sbagliata su un grande pannello fallisce su un rumore innocuo, e una abbastanza permissiva da ignorare il rumore lascia passare quella cifra.Fatevi invece la domanda che si fa una persona: chi guarda lo schermo vedrebbe una differenza?È così che confronta GUI Test Studio.

L'anti-aliasing causa falsi positivi nei test visivi?

Sì, è una delle cause più comuni.I bordi del testo e delle forme vengono smussati con colori intermedi, e la smussatura differisce tra macchine, schede grafiche e impostazioni.GUI Test Studio confronta come una persona guarda uno schermo, quindi la smussatura che nessuno vede viene ignorata.

Una soglia di differenza dei pixel può nascondere un bug reale?

Sì.Una cifra sbagliata, una maiuscola diventata minuscola o una piccola icona mancante cambia da qualche decina a qualche centinaio di pixel, una quota minima di un'immagine grande.Una soglia dell'1 o del 2 % li lascia passare tutti.

Come confronta gli screenshot GUI Test Studio?

In due fasi.La Fase di ricerca trova l'elemento sullo schermo, ovunque si sia spostato.La Fase di verifica lo confronta poi con ciò che vi aspettate, come fa l'occhio umano: scopre una cifra sbagliata, una parola cambiata, un'icona mancante o un altro colore, e ignora il rumore di rendering che nessuno vede.

I test visivi con l'IA sono migliori del confronto di pixel?

Funzionano meglio insieme.Un confronto visivo accurato è veloce e ripetibile, e decide da solo la maggior parte dei controlli.In GUI Test Studio, l'Analisi intelligente con IA dà un secondo sguardo solo a un controllo fallito, dice in parole semplici che cosa è cambiato e dà il verdetto finale quando la attivate.

Come gestire date e contatori nei test visivi?

Teneteli fuori dall'immagine che un'asserzione visiva confronta, e controllateli invece con un controllo del testo.Un'asserzione testuale dinamica controlla che un valore abbia il formato giusto, come una data o un importo, qualunque sia il suo valore oggi.

Playwright, ClearType e Windows sono marchi di Microsoft Corporation.

Tutti gli articoli