Test della modalità scura, altre lingue, altri schermi: un solo test per tutte le varianti

Test della modalità scura senza copiare il test: tenete un solo test che passa in modalità chiara e scura, in ogni lingua e su ogni schermo.

Di Ait Nohaila, Business Development Representative 10 min di lettura

Per testare la modalità scura, altre lingue e altri schermi senza copiare il test, tenete un solo test i cui controlli hanno una versione per variante.Un'esecuzione sceglie la variante, e i passaggi restano gli stessi.

È uno dei problemi più comuni dell'automazione dei test.Un test passa in modalità chiara sulla vostra postazione, poi fallisce in modalità scura, in francese o sul portatile di un collega, senza che niente sia rotto.

Perché un test fallisce in modalità scura quando non c'è niente di rotto?

Definizione

Un test fa due cose: fa ciò che fa un utente e controlla ciò che mostra lo schermo.

  • Ciò che fa è uguale in ogni variante.

Ciò che controlla no, perché uno schermo corretto appare diverso in modalità scura, in un'altra lingua o su un altro schermo, e un controllo che si aspetta un solo aspetto fa fallire gli altri.

In GUI Test Studio, ciò che un controllo si aspetta è l'obiettivo visivo di un'asserzione visiva, il testo atteso di un'asserzione testuale, il formato di un'asserzione testuale dinamica o la disposizione di un'asserzione di layout.La registrazione dà a ogni controllo il suo primo aspetto atteso, chiamato predefinito.

Modalità scura, un'altra lingua, un altro schermo: che cosa cambia su uno schermo corretto

Lo stesso schermo può legittimamente apparire diverso.L'app non è rotta, è mostrata in un'altra variante, e un controllo con una sola versione non sa distinguere.

VarianteCosa cambia su una schermata corretta
Modalità scura e contrasto elevatoOgni sfondo, colore del testo e icona cambia, quindi ogni immagine differisce dall'aspetto chiaro.
Un'altra linguaLe parole si allungano o si accorciano, i pulsanti crescono, le righe vanno a capo e una lingua da destra a sinistra rispecchia il layout.
Un altro schermoUn portatile con la scala al 150 % e un monitor 4K al 100 % disegnano lo stesso pulsante con altri pixel.
Un'altra versione di WindowsCaratteri, angoli, ombre e barre di scorrimento differiscono tra Windows 10 e Windows 11.
Un'altra edizione della vostra appI colori e il logo di un cliente white-label, o una funzione che solo alcuni piani mostrano.

Perché copiare il test per ogni variante non regge

Quando uno schermo corretto continua a fallire in una variante, i team ricorrono di solito a una di tre scorciatoie.

Una copia per variante

Test del checkout · Chiaro
Test del checkout · Modalità scura
Test del checkout · Francese
Test del checkout · Scala al 150 %

Una modifica al flusso si fa quattro volte.

Un solo test

Test del checkout

ChiaroModalità scuraFranceseScala al 150 %

Una modifica al flusso si fa una volta sola.

I passaggi di un test sono gli stessi in ogni variante. Cambiano solo ciò che i controlli si aspettano e ciò che alcuni passaggi digitano o aprono.
La scorciatoiaQuanto costa
Una copia del test per varianteOgni modifica del flusso viene fatta due, tre o cinque volte, e le copie si allontanano tra loro.
Un controllo più permissivoUn controllo abbastanza permissivo da accettare l'aspetto scuro accetta anche un'icona mancante o un colore sbagliato in quello chiaro.
Nessun controllo visivo in quella varianteIl test continua a fare clic, ma un testo nero su sfondo scuro viene rilasciato senza che nessuno se ne accorga.
Un controllo più permissivo non distingue un nuovo aspetto voluto da un bug.Solo un aspetto atteso per quella variante può farlo.

Perché un test superato possa comunque non vedere ciò che vedono gli utenti è il tema di bug visivi che i test automatici non colgono.Perché un controllo che fallisce senza motivo sia peggio di nessun controllo è spiegato in test instabili e falsi positivi.

Che cosa serve in un framework di test scritto in codice

In un framework scritto in codice come Playwright, Selenium o Cypress, le varianti le costruite e le mantenete voi nel codice.

Che cosa manteneteIn un framework scritto in codiceIn GUI Test Studio
Le immagini atteseUna cartella di screenshot di riferimento per ogni tema, lingua e browser, tenuta accanto al codice dei test.Dentro l'unico file del test, come una versione per variante di ogni controllo.
Cambiare varianteUna configurazione o del codice che si dirama secondo il tema o la lingua.Un profilo scelto per l'esecuzione.
Le parole digitate in ogni linguaDati di test per lingua, collegati al codice dei test.Una versione del passaggio Testo digitato per quella lingua.
Un nuovo aspetto dopo una modifica volutaUn'esecuzione con un'opzione come --update-snapshots, poi una revisione dei file modificati.Accettare il nuovo aspetto nel report, con un clic, poi Salvare.

L'idea è la stessa: una variante, un insieme di attese.Ciò che cambia è quanto dovete scrivere e mantenere per arrivarci.

Un solo test per tutte le varianti: i profili di baseline

GUI Test Studio, che automatizza i test end-to-end su Windows senza codice, conserva ogni versione dentro il test.Date un nome alle vostre varianti come profili di baseline, per esempio Modalità scura, Francese, Monitor 4K o Windows 10.Ogni controllo può allora conservare una versione di ciò che si aspetta per profilo, accanto a quella predefinita.

Un'asserzione visiva

Save

Predefinita

come registrata

Save

Modalità scura

un profilo che aggiungete

Enregistrer

Francese

un profilo che aggiungete

Condiviso da tutte le versioni

Dove guardareQuanto attendereQuanto essere severi
Un controllo conserva un aspetto atteso per variante. Da una versione all'altra cambia solo ciò che si aspetta.
TermineSignificato
PredefinitaCiò che è stato registrato.Può essere rinominata ma mai rimossa, e ogni esecuzione la usa a meno che non scegliate un profilo.
Profilo di baselineUna variante con un nome che aggiungete al test.È solo un nome finché i suoi controlli non hanno le loro versioni.
VersioneL'aspetto atteso di un controllo per un profilo: un'immagine, un testo, un formato o una disposizione.

Ogni tipo di controllo può avere versioni: asserzioni visive, asserzioni testuali, asserzioni testuali dinamiche e asserzioni di layout.In un'asserzione di gruppo, ogni membro ha le proprie.Vedete la guida alle baseline per ogni finestra coinvolta.

Che cosa cambia da una variante all'altra, e che cosa non cambia mai

Un profilo cambia ciò che un controllo si aspetta.Non cambia mai il modo in cui il controllo lo cerca.

ControlloLa versione di un profilo contieneCondiviso da tutte le versioni
Asserzione visivaIl suo obiettivo visivo, l'immagine che cerca.L'area di ricerca, il tempo massimo e la severità della verifica.
Asserzione testualeIl testo atteso, la sua precisione e le maiuscole/minuscole.L'area di ricerca e il tempo massimo.
Asserzione testuale dinamicaIl formato del testo che attende.L'area di ricerca e il tempo massimo.
Asserzione di layoutGli elementi e la loro disposizione.L'area di ricerca e il tempo massimo.

Testare un'app in più lingue: cambiano anche i passaggi

Un test in un'altra lingua spesso ha bisogno di qualcosa in più di altre immagini.Scrive altre parole, apre un altro indirizzo o carica un altro file.Così ogni passo del test può avere la versione di un profilo di ciò che fa, mentre il suo punto sullo schermo e il suo momento restano condivisi.

PassoPredefinitaProfilo Francese
Testo digitatoHello, I need helpBonjour, j'ai besoin d'aide
Pressione di tastoCtrl+BCtrl+G
Apri app webshop.example.com/enshop.example.com/fr
Carica fileinvoice.pdffacture.pdf
Esegui appSetup.exeSetup.exe /lang=fr

Anche una scorciatoia può cambiare: in Microsoft Word in francese, il grassetto è Ctrl+G invece di Ctrl+B, quindi il passo Pressione di tasto contiene una versione francese.

EsempioUn modulo di assistenza in inglese e in francese

La predefinita scrive un messaggio in inglese e si aspetta la conferma in inglese.Con il profilo Francese, lo stesso passo Testo digitato scrive il messaggio in francese, e l'asserzione testuale si aspetta la conferma in francese.Un test, due lingue, e una modifica del flusso si fa una sola volta.

Come un'asserzione testuale legge e confronta un testo è spiegato in Asserzioni testuali.

Come aggiungere la modalità scura a un test esistente, passo dopo passo

Il modo più rapido di riempire un profilo è un'esecuzione con quel profilo.I controlli che appaiono diversi falliscono, li esaminate e tenete quelli giusti.

Esegui

Con il profilo

Esamina

Ogni controllo fallito

Accetta

Per quel profilo

Salva

Nel test

  1. 1

    Dare un nome al profilo

    In Impostazioni, Impostazioni progetto, aggiungete un profilo di baseline chiamato Modalità scura nella scheda Profili di baseline.Un profilo è solo un nome finché i suoi controlli non ricevono le loro versioni.

  2. 2

    Eseguire il test con il profilo

    Passate la vostra app alla modalità scura.Nella pagina del test in GUI Test Runner-Recorder, scegliete Modalità scura nella riga Baseline, poi fate clic su Esegui test.

    La riga Baseline sceglie il profilo della prossima esecuzione, e la scelta viene ricordata per quel test.
  3. 3

    Esaminare ogni controllo fallito

    I controlli si confrontano ancora con l'aspetto chiaro, quindi quelli che appaiono diversi falliscono.Aprite ciascuno nel report di affidabilità e decidete se l'aspetto scuro è giusto.

  4. 4

    Accettare gli aspetti scuri che sono giusti

    Fate clic su Accetta l'effettivo come baseline per Modalità scura su ogni controllo che avete esaminato.L'aspetto chiaro predefinito resta com'era.

    In un'esecuzione con un profilo, il pulsante Accetta archivia il nuovo aspetto sotto quel profilo.
  5. 5

    Salvare, poi eseguire di nuovo

    Salvate le modifiche del report nel test ed eseguitelo ancora una volta con Modalità scura.Ogni controllo ora si confronta con la propria versione scura.

Oppure catturare la versione in GUI Test Studio

Selezionate un controllo, aprite la sua scheda Baseline e selezionate il profilo.Ogni campo del pannello Proprietà mostra ora la versione di quel profilo, e una modifica di ciò che il controllo si aspetta va in quella versione.Cattura... avvia una cattura dello schermo con la zona del controllo tracciata dove si trovava, e Cattura la stessa zona prende l'immagine del profilo in quello stesso punto.

Potete anche chiedere al vostro assistente IA di aggiungere un profilo o catturare una versione, tramite Creare un test da un prompt.

Quando l'app cambia di proposito: accettare il nuovo aspetto con un clic

Un nuovo aspetto si accetta quando l'app cambia di proposito.Accettate solo ciò che avete esaminato, e tenete una via per tornare indietro.

QuandoCosa fare in GUI Test Studio
Un controllo è fallito e il nuovo aspetto è giustoAccettate il risultato effettivo nel report di affidabilità.Ctrl+Z lo annulla finché non salvate.
L'elemento non è stato trovato affattoAccettate la sua zona più simile, il punto più vicino trovato, come nuovo aspetto atteso.
Un testo è cambiato di propositoModificate il testo atteso nel report.Con un profilo, la modifica viene salvata come versione di quel profilo.
Il nuovo aspetto diventa quello principale“Imposta come predefinita” trasforma la versione di un profilo nella predefinita e conserva la vecchia predefinita sotto quel profilo.
Un profilo viene rinominato o rimossoFatelo nelle Impostazioni progetto: ogni controllo del test si adegua.

Aggiornare un test dopo una modifica spiega come accettare nel report, e il report di affidabilità spiega tutto ciò che mostra.

Eseguire ogni variante in CI/CD

Questa esecuzione

Baseline: Modalità scura

Pulsante Salva · Asserzione visiva

la sua versione Modalità scura

Totale dell'ordine · Asserzione testuale

la sua versione Modalità scura

Logo dell'azienda · Asserzione visiva

ancora nessuna versione Modalità scura: si usa la predefinita, e il report lo dice

Un'esecuzione usa un profilo. Ogni controllo si confronta con la sua versione per quel profilo, o con la sua predefinita quando non ne ha una.

Un'esecuzione usa un profilo.In GUI Test Runner-Recorder, è la riga Baseline della pagina del test.Su un agente di build, gtr-cli accetta --baseline-profile seguito dal nome del profilo.

Lo stesso test, una volta per variante
gtr-cli run tests\Checkout.GTS --junit results\default.xml
gtr-cli run tests\Checkout.GTS --baseline-profile "Dark mode" --junit results\dark.xml
gtr-cli run tests\Checkout.GTS --baseline-profile "French" --junit results\french.xml
  • Un controllo senza una versione per il profilo si confronta con la sua predefinita, e il report dice quale profilo ha usato l'esecuzione e quanti controlli avevano una versione per esso.
  • Un nome di profilo che il test non ha esegue la predefinita, e gtr-cli lo dice ed elenca i profili che il test ha.
  • La cronologia delle esecuzioni conserva il profilo usato da ogni esecuzione.

Eseguire i test nella pipeline elenca ogni opzione di gtr-cli.

Browser e dispositivi si gestiscono in un altro modo

Un test web non ha bisogno di un profilo per browser o dispositivo: GUI Test Runner-Recorder genera una versione del test registrato per Chrome, Edge, Firefox e telefoni e tablet emulati, con immagini ritagliate da ciascuno.Vedete Test cross-browser da una sola registrazione.

I profili di baseline servono per ciò che cambia l'aspetto della stessa app sullo stesso tipo di schermo: un tema, una lingua, una scala, una versione di Windows o un'edizione della vostra app.Questo vale allo stesso modo per app desktop, app web, giochi e telefoni.

Cosa sapere prima di iniziare

LimiteCosa significa
Un profilo per esecuzioneDue varianti sono due esecuzioni.Una pipeline esegue il test una volta per profilo.
Un'area di ricerca condivisaNon c'è un'area di ricerca per profilo.Se in una variante un elemento si trova molto più lontano, allargate l'area di ricerca del controllo.
Nessun insieme per branch del codiceNon esistono insiemi separati di aspetti attesi per branch del codice.Per preparare un nuovo aspetto prima del rilascio, riempite un profilo a partire dalle esecuzioni, poi usate “Imposta come predefinita” al rilascio.

Punti chiave

  • 1Un test che si aspetta un solo aspetto fa fallire uno schermo corretto in modalità scura, in un'altra lingua, con un'altra scala o su un'altra versione di Windows.
  • 2Copie e controlli più permissivi non reggono: le copie divergono, e un controllo più permissivo nasconde bug reali.
  • 3GUI Test Studio conserva ogni variante dentro un solo test, una versione per profilo di baseline, per ogni controllo e ogni passaggio.
  • 4Dove guardare, quanto attendere e quanto essere severi restano condivisi, quindi nessuna variante rende il test più indulgente.
  • 5Un'esecuzione sceglie una variante, e un nuovo aspetto nasce dall'accettare un risultato esaminato nel report di affidabilità.

Domande

Perché il mio test automatizzato fallisce in modalità scura?

Perché si aspetta l'aspetto chiaro.Ogni controllo che confronta un'immagine dello schermo vede altri colori in modalità scura e fallisce, anche se l'app funziona.La soluzione non è un controllo più permissivo ma una versione scura di ciò che ogni controllo si aspetta.

Come testo la modalità scura e la modalità chiara con lo stesso test?

Tenete un solo test e dategli un profilo di baseline Modalità scura.Eseguitelo una volta con quella predefinita e una volta con Modalità scura: i passaggi sono gli stessi, e ogni controllo si confronta con l'aspetto della variante in esecuzione.

Come testo un'app in più lingue senza copiare il test?

Date al test un profilo per lingua.Con il profilo Francese, un'asserzione testuale si aspetta le parole francesi, un'asserzione visiva l'immagine francese, e un passaggio Testo digitato digita l'input francese.Una modifica al flusso si fa allora una volta sola per tutte le lingue.

Perché i miei test falliscono con un'altra risoluzione dello schermo o un'altra scala?

Un portatile con scala al 150 % e un monitor 4K al 100 % disegnano lo stesso pulsante con altri pixel, quindi un'immagine presa sull'uno non corrisponde esattamente all'altro.Aggiungete un profilo per quello schermo e accettatene l'aspetto una volta, a partire da un'esecuzione che avete esaminato.

Che cosa succede quando un controllo non ha una versione per la variante che eseguo?

Si confronta con la sua predefinita, l'aspetto che è stato registrato.Il report di affidabilità dice quale profilo ha usato l'esecuzione e quanti controlli avevano una versione per esso, così un fallimento dovuto a una versione mancante è facile da riconoscere.

Come aggiorno l'aspetto atteso dopo una modifica voluta?

Esaminate prima il controllo fallito, e accettate il nuovo aspetto solo se la modifica era voluta.In GUI Test Studio, il pulsante Accetta del report di affidabilità lo fa per un controllo, in modo annullabile, e Salva lo scrive nel test, sotto il profilo usato dall'esecuzione.

Posso eseguire ogni variante in una pipeline CI/CD?

Sì, un'esecuzione per profilo. gtr-cli accetta --baseline-profile seguito dal nome del profilo, quindi una pipeline esegue il test una volta con la predefinita e una volta per profilo, ciascuna con i propri risultati.

Devo creare un profilo per ogni browser?

Non per un test web.GUI Test Studio genera una versione di un test web registrato per Chrome, Edge, Firefox e telefoni e tablet emulati, con immagini ritagliate da ciascuno.I profili di baseline servono per ciò che cambia l'aspetto della stessa app: un tema, una lingua, uno schermo o una versione di Windows.

Playwright, Selenium, Cypress, Microsoft Word e Windows sono marchi dei rispettivi proprietari.

Tutti gli articoli