Teste de modo escuro, outros idiomas, outras telas: um único teste para todas as variações

Teste de modo escuro sem copiar o teste: mantenha um único teste que passa no modo claro e escuro, em cada idioma e em cada tela.

Por Ait Nohaila, Representante de desenvolvimento de negócios 10 min de leitura

Para testar o modo escuro, outros idiomas e outras telas sem copiar o teste, mantenha um único teste cujas asserções tenham uma versão por variação.Uma execução escolhe a variação, e as etapas continuam as mesmas.

É um dos problemas mais comuns da automação de testes.Um teste passa no modo claro na sua máquina e depois falha no modo escuro, em francês ou no notebook de um colega, sem que nada esteja quebrado.

Por que um teste falha no modo escuro quando nada está quebrado?

Definição

Um teste faz duas coisas: faz o que um usuário faz e verifica o que a tela mostra.

  • O que ele faz é igual em todas as variações.

O que ele verifica não, porque uma tela correta tem outro visual no modo escuro, em outro idioma ou em outra tela, e uma asserção que espera um único visual reprova os outros.

No GUI Test Studio, o que uma asserção espera é o alvo visual de uma Asserção visual, o texto esperado de uma Asserção textual, o formato de uma Asserção textual dinâmica ou a disposição de uma Asserção de layout.A gravação dá a cada asserção o seu primeiro visual esperado, chamado de padrão.

Modo escuro, outro idioma, outra tela: o que muda em uma tela correta

A mesma tela pode, com razão, ter outro visual.O aplicativo não está quebrado, ele é exibido em outra variação, e uma asserção com uma única versão não consegue perceber a diferença.

VariaçãoO que muda em uma tela correta
Modo escuro e alto contrasteCada fundo, cor de texto e ícone muda, então cada imagem difere do visual claro.
Outro idiomaAs palavras ficam mais longas ou mais curtas, os botões crescem, as linhas quebram, e um idioma da direita para a esquerda espelha o layout.
Outra telaUm notebook com escala de 150 % e um monitor 4K com 100 % desenham o mesmo botão com outros pixels.
Outra versão do WindowsFontes, cantos, sombras e barras de rolagem diferem entre o Windows 10 e o Windows 11.
Outra edição do seu aplicativoAs cores e o logotipo de um cliente white label, ou um recurso que só alguns planos mostram.

Por que copiar o teste para cada variação não se sustenta

Quando uma tela correta continua falhando em uma variação, as equipes costumam recorrer a um de três atalhos.

Uma cópia por variação

Teste de checkout · Claro
Teste de checkout · Modo escuro
Teste de checkout · Francês
Teste de checkout · Escala de 150 %

Uma mudança no fluxo é feita quatro vezes.

Um único teste

Teste de checkout

ClaroModo escuroFrancêsEscala de 150 %

Uma mudança no fluxo é feita uma única vez.

As etapas de um teste são as mesmas em todas as variações. Só mudam o que as asserções esperam e o que algumas etapas digitam ou abrem.
O atalhoO que ele custa
Uma cópia do teste por variaçãoCada mudança no fluxo de trabalho é feita duas, três ou cinco vezes, e as cópias vão se distanciando.
Uma asserção mais frouxaUma asserção frouxa o bastante para aceitar o visual escuro também aceita um ícone ausente ou uma cor errada no claro.
Nenhuma asserção visual nessa variaçãoO teste ainda clica em tudo, mas um texto preto sobre um fundo escuro é lançado sem que ninguém perceba.
Uma asserção mais frouxa não distingue um novo visual intencional de um bug.Só um visual esperado para essa variação consegue.

Por que um teste aprovado ainda pode deixar passar o que os usuários veem é o tema de bugs visuais que os seus testes automatizados deixam passar.Por que uma asserção que falha sem motivo é pior do que nenhuma asserção está em testes instáveis e falsos positivos.

O que é preciso em um framework de testes com código

Em um framework com código como Playwright, Selenium ou Cypress, cabe a você construir e manter as variações no código.

O que você mantémEm um framework com códigoNo GUI Test Studio
As imagens esperadasUma pasta de capturas de referência para cada tema, idioma e navegador, guardada ao lado do código dos testes.Dentro do único arquivo do teste, como uma versão por variação de cada asserção.
Trocar de variaçãoUma configuração ou código que se ramifica conforme o tema ou o idioma.Um perfil escolhido para a execução.
As palavras digitadas em cada idiomaDados de teste por idioma, ligados ao código dos testes.Uma versão da etapa Texto digitado para esse idioma.
Um novo visual após uma mudança intencionalUma execução com uma opção como --update-snapshots e depois uma revisão dos arquivos alterados.Aceitar o novo visual no relatório, com um clique, e depois Salvar.

A ideia é a mesma: uma variação, um conjunto de expectativas.O que muda é quanto você escreve e mantém para chegar lá.

Um único teste para todas as variações: os perfis de linha de base

O GUI Test Studio, que automatiza testes de ponta a ponta no Windows sem código, guarda cada versão dentro do teste.Você nomeia suas variações como perfis de linha de base, por exemplo Modo escuro, Francês, Monitor 4K ou Windows 10.Cada asserção pode então guardar uma versão do que espera por perfil, ao lado da padrão.

Uma asserção visual

Save

Padrão

como foi gravado

Save

Modo escuro

um perfil que você adiciona

Enregistrer

Francês

um perfil que você adiciona

Comum a todas as versões

Onde procurarQuanto tempo aguardarQuão rigorosa ser
Uma asserção guarda um visual esperado por variação. Só o que ela espera muda de uma versão para outra.
TermoSignificado
PadrãoO que foi gravado.Ele pode ser renomeado, mas nunca removido, e toda execução o usa, a menos que você escolha um perfil.
Perfil de linha de baseUma variação com nome que você adiciona ao teste.Ela é só um nome até que as asserções tenham suas versões.
VersãoO visual esperado de uma asserção para um perfil: uma imagem, um texto, um formato ou uma disposição.

Todo tipo de asserção pode guardar versões: asserções visuais, asserções textuais, asserções textuais dinâmicas e asserções de layout.Em uma asserção de grupo, cada membro guarda as suas.Veja o guia de linhas de base para todas as janelas envolvidas.

O que muda de uma variação para outra, e o que nunca muda

Um perfil muda o que uma asserção espera.Ele nunca muda a maneira como a asserção procura isso.

AsserçãoA versão de um perfil guardaComum a todas as versões
Asserção visualO alvo visual dela, a imagem que ela procura.A área de busca, o tempo limite e o rigor da verificação.
Asserção textualO texto esperado, a precisão dele e a diferenciação de maiúsculas e minúsculas.A área de busca e o tempo limite.
Asserção textual dinâmicaO formato do texto que ela aguarda.A área de busca e o tempo limite.
Asserção de layoutOs elementos e a disposição deles.A área de busca e o tempo limite.

Testar um aplicativo em vários idiomas: as etapas também mudam

Um teste em outro idioma muitas vezes precisa de mais do que outras imagens.Ele digita outras palavras, abre outro endereço ou envia outro arquivo.Por isso, cada etapa do teste pode guardar a versão de um perfil para o que ela faz, enquanto o lugar dela na tela e o momento dela continuam comuns.

EtapaPadrãoPerfil Francês
Texto digitadoHello, I need helpBonjour, j'ai besoin d'aide
Pressionamento de teclaCtrl+BCtrl+G
Abrir aplicativo webshop.example.com/enshop.example.com/fr
Enviar arquivoinvoice.pdffacture.pdf
Executar aplicativoSetup.exeSetup.exe /lang=fr

Um atalho também pode mudar: no Microsoft Word em francês, o negrito é Ctrl+G em vez de Ctrl+B, então a etapa Pressionamento de tecla guarda uma versão em francês.

ExemploUm formulário de suporte em inglês e em francês

O padrão digita uma mensagem em inglês e espera a confirmação em inglês.No perfil Francês, a mesma etapa Texto digitado digita a mensagem em francês, e a asserção textual espera a confirmação em francês.Um teste, dois idiomas, e uma mudança no fluxo de trabalho é feita uma única vez.

Como uma asserção textual lê e compara um texto é explicado em Asserções textuais.

Como adicionar o modo escuro a um teste existente, passo a passo

A maneira mais rápida de preencher um perfil é uma execução nele.As asserções com aparência diferente falham, você as revisa e fica com as que estão certas.

Executar

No perfil

Revisar

Cada asserção reprovada

Aceitar

Para esse perfil

Salvar

No teste

  1. 1

    Dê nome ao perfil

    Em Configurações, Configurações do projeto, adicione um perfil de linha de base chamado Modo escuro no cartão Perfis de linha de base.Um perfil é apenas um nome até que as asserções dele recebam as suas versões.

  2. 2

    Execute o teste no perfil

    Coloque o seu aplicativo no modo escuro.Na página do teste no GUI Test Runner-Recorder, escolha Modo escuro na linha Linha de base e depois clique em Executar teste.

    A linha Linha de base escolhe o perfil da próxima execução, e a escolha fica lembrada para esse teste.
  3. 3

    Revise cada asserção reprovada

    As asserções ainda comparam com o visual claro, então as que têm aparência diferente falham.Abra cada uma no Relatório de confiança e decida se o visual escuro está certo.

  4. 4

    Aceite os visuais escuros que estão certos

    Clique em Aceitar o obtido como linha de base para Modo escuro em cada asserção que você revisou.O visual claro padrão continua como estava.

    Em uma execução em um perfil, o botão Aceitar arquiva o novo visual nesse perfil.
  5. 5

    Salve e execute de novo

    Salve as mudanças do relatório no teste e execute-o mais uma vez no Modo escuro.Agora cada asserção compara com a sua própria versão escura.

Ou capture a versão no GUI Test Studio

Selecione uma asserção, abra a guia Linhas de base e selecione o perfil.Todos os campos do painel Propriedades passam a mostrar a versão desse perfil, e uma edição do que a asserção espera vai para ela.Capturar... inicia uma captura de tela com a região da asserção desenhada onde ela estava, e Capturar a mesma região obtém a imagem do perfil exatamente desse lugar.

Você também pode pedir ao seu assistente de IA para adicionar um perfil ou capturar uma versão, com Criar um teste a partir de um prompt.

Quando o aplicativo muda de propósito: aceite o novo visual com um clique

Um novo visual é aceito quando o aplicativo muda de propósito.Aceite só o que você revisou e mantenha um caminho de volta.

QuandoO que fazer no GUI Test Studio
Uma asserção falhou e o novo visual está certoAceite o resultado obtido no Relatório de confiança.Ctrl+Z desfaz isso até você salvar.
O elemento não foi encontradoAceite a região mais parecida dele, o lugar mais próximo encontrado, como o novo visual esperado.
Um texto mudou de propósitoEdite o texto esperado no relatório.Em um perfil, a edição é salva como a versão desse perfil.
O novo visual passa a ser o principalDefinir como padrão transforma a versão de um perfil no padrão e guarda o padrão antigo nesse perfil.
Um perfil é renomeado ou removidoFaça isso em Configurações do projeto: todas as asserções do teste acompanham.

Atualizar um teste após uma mudança mostra passo a passo como aceitar no relatório, e o Relatório de confiança explica tudo o que ele mostra.

Executar cada variação em CI/CD

Esta execução

Linha de base: Modo escuro

Botão Salvar · Asserção visual

a versão dela para Modo escuro

Total do pedido · Asserção textual

a versão dela para Modo escuro

Logotipo da empresa · Asserção visual

ainda sem versão para Modo escuro: o padrão é usado, e o relatório informa isso

Uma execução usa um perfil. Cada asserção compara com a sua versão para esse perfil, ou com o seu padrão quando não tem uma.

Uma execução usa um perfil.No GUI Test Runner-Recorder, ele é escolhido na linha Linha de base da página do teste.Em um agente de build, o gtr-cli recebe --baseline-profile seguido do nome do perfil.

O mesmo teste, uma vez por variação
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
  • Uma asserção sem versão para o perfil compara com o seu padrão, e o relatório diz qual perfil a execução usou e quantas asserções tinham uma versão para ele.
  • Um nome de perfil que o teste não tem executa o padrão, e o gtr-cli avisa isso e lista os perfis que o teste tem.
  • O histórico de execuções guarda o perfil que cada execução usou.

Executar testes no seu pipeline lista todas as opções do gtr-cli.

Navegadores e dispositivos são tratados de outra forma

Um teste web não precisa de um perfil por navegador ou dispositivo: o GUI Test Runner-Recorder gera uma versão do teste gravado para o Chrome, o Edge, o Firefox e celulares e tablets emulados, com imagens recortadas de cada um.Veja testes entre navegadores a partir de uma gravação.

Os perfis de linha de base servem para o que muda o visual do mesmo aplicativo no mesmo tipo de tela: um tema, um idioma, uma escala, uma versão do Windows ou uma edição do seu aplicativo.Isso funciona igualmente para aplicativos de desktop, aplicativos web, jogos e celulares.

O que saber antes de começar

LimiteO que significa
Um perfil por execuçãoDuas variações são duas execuções.Um pipeline executa o teste uma vez por perfil.
Uma área de busca comumNão existe área de busca por perfil.Se um elemento fica bem longe em uma variação, amplie a área de busca da asserção.
Nenhum conjunto por branch de códigoNão há conjuntos separados de visuais esperados por branch de código.Para preparar um novo visual antes de lançá-lo, preencha um perfil a partir de execuções e depois use Definir como padrão no lançamento.

Principais conclusões

  • 1Um teste que espera um único visual reprova uma tela correta no modo escuro, em outro idioma, em outra escala ou em outra versão do Windows.
  • 2Cópias e asserções mais frouxas não se sustentam: as cópias se distanciam, e uma asserção mais frouxa esconde bugs reais.
  • 3O GUI Test Studio guarda cada variação dentro de um único teste, uma versão por perfil de linha de base, para cada asserção e cada etapa.
  • 4Onde procurar, quanto tempo aguardar e quão rigorosa ser continuam compartilhados, então nenhuma variação deixa o teste mais tolerante.
  • 5Uma execução escolhe uma variação, e um novo visual vem de aceitar um resultado revisado no Relatório de confiança.

Perguntas

Por que meu teste automatizado falha no modo escuro?

Porque ele espera o visual claro.Cada asserção que compara uma imagem da tela vê outras cores no modo escuro e falha, embora o aplicativo funcione.A solução não é uma asserção mais frouxa, mas uma versão escura do que cada asserção espera.

Como testar o modo escuro e o modo claro com o mesmo teste?

Mantenha um único teste e dê a ele um perfil de linha de base Modo escuro.Execute-o uma vez com o padrão e uma vez com Modo escuro: as etapas são as mesmas, e cada asserção compara com o visual da variação em execução.

Como testar um aplicativo em vários idiomas sem copiar o teste?

Dê ao teste um perfil por idioma.No perfil Francês, uma Asserção textual espera as palavras em francês, uma Asserção visual a imagem em francês, e uma etapa Texto digitado digita a entrada em francês.Uma mudança no fluxo é então feita uma única vez para todos os idiomas.

Por que meus testes falham em outra resolução de tela ou escala?

Um notebook com escala de 150 % e um monitor 4K a 100 % desenham o mesmo botão com outros pixels, então uma imagem tirada em um não corresponde exatamente ao outro.Adicione um perfil para essa tela e aceite o visual dela uma vez, a partir de uma execução que você revisou.

O que acontece quando uma asserção não tem versão para a variação que executo?

Ela compara com o seu padrão, o visual que foi gravado.O Relatório de confiança diz qual perfil a execução usou e quantas asserções tinham uma versão para ele, então uma falha causada por uma versão ausente é fácil de reconhecer.

Como atualizo o visual esperado após uma mudança intencional?

Revise primeiro a asserção que falhou e aceite o novo visual só se a mudança foi intencional.No GUI Test Studio, o botão Aceitar do Relatório de confiança faz isso para uma asserção, de forma reversível, e Salvar grava no teste, no perfil que a execução usou.

Posso executar cada variação em um pipeline de CI/CD?

Sim, uma execução por perfil.O gtr-cli recebe --baseline-profile seguido do nome do perfil, então um pipeline executa o teste uma vez com o padrão e uma vez por perfil, cada uma com os seus próprios resultados.

Devo criar um perfil para cada navegador?

Não para um teste web.O GUI Test Studio gera uma versão de um teste web gravado para o Chrome, o Edge, o Firefox e celulares e tablets emulados, com imagens recortadas de cada um.Os perfis de linha de base servem para o que muda o visual do mesmo aplicativo: um tema, um idioma, uma tela ou uma versão do Windows.

Playwright, Selenium, Cypress, Microsoft Word e Windows são marcas de seus respectivos proprietários.

Todos os artigos