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.
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.
| Variante | Cosa cambia su una schermata corretta |
|---|---|
| Modalità scura e contrasto elevato | Ogni sfondo, colore del testo e icona cambia, quindi ogni immagine differisce dall'aspetto chiaro. |
| Un'altra lingua | Le 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 schermo | Un portatile con la scala al 150 % e un monitor 4K al 100 % disegnano lo stesso pulsante con altri pixel. |
| Un'altra versione di Windows | Caratteri, angoli, ombre e barre di scorrimento differiscono tra Windows 10 e Windows 11. |
| Un'altra edizione della vostra app | I 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
Una modifica al flusso si fa quattro volte.
Un solo test
Test del checkout
Una modifica al flusso si fa una volta sola.
| La scorciatoia | Quanto costa |
|---|---|
| Una copia del test per variante | Ogni modifica del flusso viene fatta due, tre o cinque volte, e le copie si allontanano tra loro. |
| Un controllo più permissivo | Un 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 variante | Il 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 mantenete | In un framework scritto in codice | In GUI Test Studio |
|---|---|---|
| Le immagini attese | Una 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 variante | Una configurazione o del codice che si dirama secondo il tema o la lingua. | Un profilo scelto per l'esecuzione. |
| Le parole digitate in ogni lingua | Dati di test per lingua, collegati al codice dei test. | Una versione del passaggio Testo digitato per quella lingua. |
| Un nuovo aspetto dopo una modifica voluta | Un'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
Predefinita
come registrata
Modalità scura
un profilo che aggiungete
Francese
un profilo che aggiungete
Condiviso da tutte le versioni
| Termine | Significato |
|---|---|
| Predefinita | Ciò che è stato registrato.Può essere rinominata ma mai rimossa, e ogni esecuzione la usa a meno che non scegliate un profilo. |
| Profilo di baseline | Una variante con un nome che aggiungete al test.È solo un nome finché i suoi controlli non hanno le loro versioni. |
| Versione | L'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.
| Controllo | La versione di un profilo contiene | Condiviso da tutte le versioni |
|---|---|---|
| Asserzione visiva | Il suo obiettivo visivo, l'immagine che cerca. | L'area di ricerca, il tempo massimo e la severità della verifica. |
| Asserzione testuale | Il testo atteso, la sua precisione e le maiuscole/minuscole. | L'area di ricerca e il tempo massimo. |
| Asserzione testuale dinamica | Il formato del testo che attende. | L'area di ricerca e il tempo massimo. |
| Asserzione di layout | Gli 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.
| Passo | Predefinita | Profilo Francese |
|---|---|---|
| Testo digitato | Hello, I need help | Bonjour, j'ai besoin d'aide |
| Pressione di tasto | Ctrl+B | Ctrl+G |
| Apri app web | shop.example.com/en | shop.example.com/fr |
| Carica file | invoice.pdf | facture.pdf |
| Esegui app | Setup.exe | Setup.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.
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
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
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
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
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
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.
| Quando | Cosa fare in GUI Test Studio |
|---|---|
| Un controllo è fallito e il nuovo aspetto è giusto | Accettate il risultato effettivo nel report di affidabilità.Ctrl+Z lo annulla finché non salvate. |
| L'elemento non è stato trovato affatto | Accettate la sua zona più simile, il punto più vicino trovato, come nuovo aspetto atteso. |
| Un testo è cambiato di proposito | Modificate 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 rimosso | Fatelo 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.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.
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
| Limite | Cosa significa |
|---|---|
| Un profilo per esecuzione | Due varianti sono due esecuzioni.Una pipeline esegue il test una volta per profilo. |
| Un'area di ricerca condivisa | Non 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 codice | Non 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.
Continua a leggere
Tutti gli articoli
Test visivi
Test di screenshot pixel perfect: perché fallisce e che cosa scopre i veri bug visivi
12 min di lettura

Test visivi
Bug visivi che i test automatici non colgono: testare ciò che vede l'utente
10 min di lettura

Automazione dei test
Test manuali e test automatizzati: perché i test manuali non bastano per i test end-to-end
15 min di lettura