Teste de aplicativos macOS: crie testes de ponta a ponta para aplicativos Mac e Safari a partir do Windows
Teste de aplicativos macOS a partir do Windows: crie testes de ponta a ponta e funcionais de um aplicativo Mac ou do Safari por área de trabalho remota, e execute-os a cada build.
Para testar um aplicativo macOS de ponta a ponta a partir do Windows, conecte-se a um Mac de verdade com um visualizador de área de trabalho remota, grave um fluxo nessa janela com o GUI Test Studio, adicione verificações do que o aplicativo mostra e execute o teste a cada build.
O que é um teste de ponta a ponta de um aplicativo macOS?
Definição
Um teste de ponta a ponta de um aplicativo macOS percorre um fluxo real do jeito que um usuário faz, da primeira tela até o resultado, e verifica o que o aplicativo mostra a cada passo.
- Um teste funcional verifica um recurso do mesmo jeito: o botão funciona, o registro é salvo, o total está certo.
Muitas equipes de QA trabalham no Windows e ainda assim têm uma versão para Mac do aplicativo a verificar, ou um site cujos visitantes usam o Safari.Normalmente elas testam isso à mão no único Mac do escritório, então os testes de aplicativos macOS acontecem tarde, e raramente a cada build.
Este guia mostra como profissionais de QA e engenheiros de software criam testes funcionais e de ponta a ponta de um aplicativo Mac, ou de um site no Safari, a partir do computador Windows que já usam.Cada teste é gravado uma vez e roda a cada build, sem escrever código.
Por que não é possível testar o Safari diretamente no Windows
A Apple deixou de fazer o Safari para Windows em 2012, e a última versão dele é antiga demais para exibir um site moderno.O Safari, e os aplicativos escritos para macOS, rodam apenas em um Mac.
Cada uma das soluções de contorno habituais deixa algo de fora.
- Um navegador baseado no WebKit, o motor por trás do Safari, não é o Safari: ele não tem os formulários, as fontes, as barras de rolagem e as configurações próprios do Safari.
- Um Mac que uma pessoa verifica à mão é real, mas é lento, e ninguém verifica cada build.
- Um Mac acessado a partir do Windows e testado por software é real e repetível.
Ferramentas de teste de interface no macOS: XCUITest, Appium Mac2 e um teste gravado
O caminho da própria Apple é o XCUITest, a parte do XCTest dedicada a testes de interface: os testes são escritos em Swift ou Objective-C, no Xcode, em um Mac.O driver Appium Mac2 controla aplicativos macOS pelo mesmo framework XCTest, então os testes podem ser escritos em outras linguagens, e ele precisa de um Mac com Xcode, como diz o seu guia de primeiros passos.
| O que você compara | XCUITest | Driver Appium Mac2 | GUI Test Studio |
|---|---|---|---|
| Como um teste é criado | Escrito em Swift ou Objective-C | Escrito como código, em Java, Python, JavaScript ou outra linguagem | Gravado e depois editado em uma linha do tempo, sem código |
| Do que precisa | Um Mac com Xcode | Um Mac com macOS 11.3 ou mais recente, Xcode 13 ou mais recente e um servidor Appium | Um PC com Windows e um visualizador de área de trabalho remota, e um Mac para se conectar |
| Como encontra os elementos | Pelas informações de acessibilidade do aplicativo | Pelas informações de acessibilidade do aplicativo, com o XCTest | Pela visão, na imagem da tela do Mac |
| Para quem serve | Desenvolvedores responsáveis pelo código do aplicativo | Equipes que já escrevem testes com Appium | Equipes de QA no Windows que testam o aplicativo como os usuários o veem |
Um teste programado lê a estrutura do aplicativo, então continua funcionando quando a aparência muda, e precisa de um Mac para cada desenvolvedor que escreve um.Um teste gravado vê a tela como um usuário, então também pega o que aparece errado, e qualquer pessoa da equipe pode criar um a partir do Windows.
Como funciona: o visualizador é apenas uma janela
Um visualizador de área de trabalho remota mostra a tela do Mac em uma janela no Windows e envia o seu mouse e o seu teclado para o Mac.Para o GUI Test Studio, essa janela é um aplicativo como qualquer outro.
Seu PC com Windows
GUI Test Studio
Grava a janela do visualizador, reproduz nela o mouse e o teclado e verifica o que ela mostra.
O Mac
Em uma mesa, em um rack ou na nuvem
Executa seu aplicativo para Mac ou o Safari, com um usuário com sessão iniciada.
Conectar
Abrir o visualizador conectado ao Mac
Gravar
Escolher a janela do visualizador
Verificar
O que o Mac mostra
Relatar
Esperado e obtido, lado a lado
O GUI Test Runner-Recorder grava a janela do visualizador, com Um aplicativo na pergunta O que você deseja testar?, ou uma parte da tela com Uma área.Quando o teste é executado, ele move o mouse real e pressiona as teclas reais nessa janela, e o visualizador as repassa ao Mac.Como uma gravação funciona é explicado em Gravar um teste.
Qual visualizador de área de trabalho remota usar
| Visualizador no Windows | O que roda no Mac |
|---|---|
| Um visualizador VNC, como o RealVNC Viewer ou o TightVNC | O Compartilhamento de Tela do próprio Mac, ativado nos Ajustes do Sistema.Nada a instalar no Mac. |
| NoMachine | O programa NoMachine, instalado no Mac. |
| Parsec | O aplicativo Parsec, instalado no Mac. |
| Jump Desktop | O Jump Desktop Connect, instalado no Mac. |
| Chrome Remote Desktop | O host do Chrome Remote Desktop, instalado no Mac. |
Qualquer um deles funciona, porque o GUI Test Studio só precisa do que todo visualizador oferece: uma janela que mostra a tela do Mac e recebe o mouse e o teclado.Escolha o que a sua equipe já usa, ou o Compartilhamento de Tela do próprio Mac com um visualizador VNC gratuito.
De onde vem o Mac: uma mesa, um rack ou um Mac na nuvem para testes
Três lugares podem abrigar o Mac, e para o teste tanto faz qual.
Um Mac em uma mesa é o começo mais simples: o Mac que os seus designers ou desenvolvedores já têm, mantido ligado e com um usuário com sessão iniciada.
Um Mac mini em um rack atende a equipe inteira a partir de uma sala de servidores, muitas vezes sem nenhum monitor conectado.
Um Mac na nuvem, como uma instância Mac do Amazon EC2 ou um Mac do MacinCloud ou do MacStadium, é um Mac real que você aluga e acessa pela internet.
Um Mac na nuvem muitas vezes vem só com uma linha de comando.Siga o guia do provedor para ativar uma área de trabalho que você possa ver, iniciar a sessão de um usuário e permitir o compartilhamento de tela, e então conecte-se a ele como a um Mac na sua mesa.
Planejar um teste funcional de um aplicativo Mac
Um bom teste de ponta a ponta segue um fluxo que importa para os seus usuários e comprova o resultado.Escreva-o em poucas linhas antes de gravar: onde começa, o que o usuário faz e o que a tela deve mostrar no final.
Um teste funcional de um aplicativo Mac
- 1Abrir o aplicativo e entrarAsserção visual: o botão Entrar está lá e tem a aparência certa
- 2Clicar em Novo cliente e digitar o nome do clienteAsserção visual: o botão e o campo são encontrados antes de cada ação
- 3Clicar em SalvarAsserção textual: a mensagem diz Cliente salvo
- 4Abrir a nova faturaAsserção textual dinâmica: o número da fatura tem o formato certo, seja qual for o valor
- 5Verificar a lista de clientesAsserção textual: o nome do novo cliente está na lista
- Comece cada execução na mesma tela, como a primeira janela do aplicativo quando ele abre.
- Mantenha um fluxo por teste, para que uma falha aponte para um só recurso.
- Verifique o resultado, não só os cliques: uma mensagem de salvamento, uma nova linha em uma lista, um total.
- Use dados de teste que não mudam entre execuções, como o mesmo nome de cliente.
Qual verificação combina com qual elemento é explicado em Escolher a verificação certa.
Criar um teste automatizado do seu aplicativo Mac, passo a passo
A conexão com o Mac é configurada uma vez.Depois disso, criar um teste de Mac é igual a criar qualquer teste.
- 1
Ter um Mac com um usuário com sessão iniciada
Use um Mac na sua mesa, um Mac mini em um rack ou um Mac na nuvem.Um usuário precisa estar com a sessão iniciada, com uma área de trabalho na tela, porque uma conexão que só abre uma linha de comando não mostra nada para testar.
Impeça que o Mac entre em repouso, e desative a proteção de tela e o bloqueio de tela, para que a área de trabalho esteja lá quando uma execução começar.
- 2
Ativar o acesso remoto no Mac
Nos Ajustes do Sistema, em Geral e Compartilhamento, ative o Compartilhamento de Tela, ou o Gerenciamento Remoto.Nas opções dele, permita que visualizadores VNC controlem a tela com uma senha.Com outra ferramenta de área de trabalho remota, instale o host dela no Mac em vez disso.
- 3
Conectar a partir do Windows em um tamanho fixo
Abra o visualizador no computador Windows, conecte-se ao Mac e mantenha a janela dele no mesmo tamanho em todas as execuções, com a tela do Mac exibida a 100%.Desative qualquer ajuste ao tamanho da janela que mude a imagem quando a janela muda.
Dê ao Mac uma resolução de tela fixa.Ajuste a qualidade de imagem do visualizador para alta, ou sem perdas onde houver essa configuração, para que bordas e letras continuem nítidas.
- 4
Gravar o fluxo pelo visualizador
No GUI Test Runner-Recorder, clique em Gravar, escolha Um aplicativo e selecione o visualizador.Faça o fluxo no Mac pelo visualizador, da primeira tela até o resultado, e depois pressione a tecla Encerrar.
Para começar cada execução do mesmo jeito, marque Iniciar o aplicativo no começo do teste e fechá-lo no fim.Uma etapa Executar aplicativo também pode iniciar o visualizador com o endereço do Mac, quando o visualizador o aceita na linha de comando, e abri-lo maximizado.
- 5
Escolher o que o teste verifica
Quando a gravação terminar, deixe Verificar elementos visuais ligado, e ligue Verificar texto quando as palavras na tela importarem.Deixe Verificar o que aparece ligado, para que uma caixa de diálogo ou uma mensagem de confirmação ganhe suas próprias verificações.
Cada cartão dessa pergunta é explicado em Escolher o que um teste verifica.
- 6
Adicionar as verificações que comprovam o resultado
Abra o teste no GUI Test Studio e adicione uma asserção textual para a mensagem que comprova que o fluxo funcionou, e uma asserção textual dinâmica para um valor que muda a cada execução, como um número de pedido ou uma data.
Agrupe os passos em cenários, como Login e Criar um cliente, para que uma falha diga qual parte do fluxo quebrou.
- 7
Executá-lo e ler o Relatório de confiança
Clique em Executar teste no GUI Test Runner-Recorder.O Relatório de confiança mostra cada passo e, para cada verificação, o que era esperado e o que o Mac mostrou.
- 8
Executar a cada build
Execute o teste com o gtr-cli em um agente de build Windows que tenha uma área de trabalho com sessão iniciada e o visualizador conectado ao Mac.
As verificações de um teste de interface no macOS, encontradas pela visão
Em um aplicativo Windows, o GTS Engine primeiro pergunta ao aplicativo onde está um elemento, pelas informações de acessibilidade que os aplicativos Windows fornecem, e o encontra pela visão quando o aplicativo não diz.Por um visualizador, a tela do Mac chega como uma imagem: não há nada a perguntar, então cada elemento é encontrado pela visão.
| Verificar | O que comprova no Mac | Exemplo |
|---|---|---|
| Asserção visual | Um elemento está na tela e tem a aparência gravada.Ela também diz ao próximo clique onde o elemento está agora. | O botão Salvar, um ícone da barra de ferramentas, um gráfico |
| Asserção textual | Um texto diz o esperado, seja qual for a fonte ou a cor. | Cliente salvo, o título de uma janela, um total |
| Asserção textual dinâmica | Um valor tem o formato certo, seja qual for. | Um número de fatura, a data de hoje, um preço |
| Asserção textual de ausência | Um texto sumiu, ou nunca aparece. | Uma mensagem de erro depois de um login correto |
| Asserção de grupo | Tudo o que apareceu em uma tela está lá, junto. | Uma caixa de diálogo com o título, os campos e os botões |
Cada verificação espera pelo que procura até o seu tempo limite, então um Mac que responde um pouco atrasado não é uma falha.Por que encontrar pela visão é confiável, e como isso distingue elementos parecidos, é explicado em como o GUI Test Studio encontra os elementos.
Automação de testes no Safari: um teste de ponta a ponta no Safari de verdade
Um teste de ponta a ponta de um aplicativo web no Safari é criado exatamente do mesmo jeito.Abra o Safari no Mac, vá até a página e grave a janela do visualizador enquanto percorre o fluxo: cadastrar-se, adicionar um produto ao carrinho, pagar com um cartão de teste e verificar a confirmação.
- O teste roda no próprio Safari, com o motor dele, os controles de formulário dele e as fontes dele.
- Um layout que quebra só no Safari quebra no teste também.
- Uma asserção textual lê o que o Safari realmente mostra, e uma asserção visual compara o que o Safari desenha com o que ele desenhou quando o teste foi gravado.
Comece cada teste no Safari em uma página conhecida, como a página de login em uma janela privada, para que nenhuma sessão anterior mude o que o teste vê.
Como os outros navegadores e os dispositivos emulados são cobertos, e quais navegadores testar primeiro, está no nosso guia de testes entre navegadores.
Ler o resultado de uma execução
Depois de cada execução, o Relatório de confiança abre com o veredito no topo e cada passo abaixo.Uma verificação que falhou mostra o que era esperado ao lado do que o Mac mostrou, com a diferença destacada, para você ver na hora se o aplicativo está errado ou se a tela só se mexeu.
Cada parte do relatório é explicada em Ler o Relatório de confiança.
Dicas para testes confiáveis por área de trabalho remota
Um teste por um visualizador passa sempre quando a imagem e o tempo são os mesmos em todas as execuções.Estes hábitos levam você até lá.
| Tema | O que fazer |
|---|---|
| Latência | Cada asserção aguarda até o seu tempo limite, 5 segundos por padrão, pelo que procura, então um Mac que responde um pouco tarde não é uma falha.Onde o Mac é lento, como depois que um aplicativo inicia, aumente o tempo limite dessa asserção ou adicione uma espera. |
| A tecla Command | Muitos visualizadores enviam a tecla Windows como Command e o Alt como Option, mas o próprio Windows pode capturar alguns atalhos da tecla Windows.Ative a opção do visualizador que envia as teclas do sistema ao computador remoto, e teste cada atalho uma vez durante a gravação. |
| Qualidade de imagem | Um visualizador que comprime a imagem desfoca as bordas de um jeito um pouco diferente a cada execução.Ajuste a qualidade para alta ou sem perdas, e use o rigor da verificação Flexível em uma conexão que você não pode mudar. |
| Tamanho da janela e escala | Mantenha a janela do visualizador em um só tamanho e a tela do Mac a 100% dentro dela.Uma imagem redimensionada para caber em outra janela é outra imagem. |
| Retina e resolução | Dê ao Mac uma única resolução fixa.Um Mac mini sem monitor pode escolher sozinho uma resolução pequena: defina-a, ou conecte um emulador de tela. |
| Notificações e janelas pop-up | Ative o Não Perturbe no Mac, para que uma notificação nunca cubra o que o teste procura. |
| O ponto de partida | Antes de uma execução, volte o Mac para a tela onde a gravação começou.O GUI Test Runner-Recorder verifica isso e avisa quando a tela não está onde o teste começa. |
Um perfil de linha de base por Mac mantém uma imagem esperada separada para cada um, quando dois Macs desenham a mesma janela de forma um pouco diferente, como duas versões do macOS.
Executar seus testes de Mac em CI/CD a partir de um agente Windows
Os seus agentes de build continuam no Windows.Só é necessário um Mac, acessado pelo visualizador, e o gtr-cli, o executor de linha de comando, executa os testes de Mac como qualquer outro teste.
gtr-cli run tests\mac --countdown 0 --junit results\junit.xml --artifacts results\artifactsA preparação da máquina de build, os códigos de saída e os resultados JUnit são explicados em Executar testes em CI/CD.
O que saber antes de começar
| Limite | O que significa |
|---|---|
| É preciso um Mac | O aplicativo ou o Safari roda em um Mac real, em uma mesa, em um rack ou na nuvem.O próprio GUI Test Studio roda no Windows. |
| Só o que o visualizador mostra | O teste vê e controla o que a janela do visualizador mostra.Mantenha dentro dela a parte da tela do Mac que você testa. |
| Sem informações de acessibilidade | Um visualizador transmite uma imagem da tela do Mac, então cada elemento é encontrado pela visão e cada texto é lido a partir da imagem. |
| Safari somente em um Mac | O Safari em um iPhone ou um iPad roda no próprio dispositivo, que esta configuração não alcança. |
Principais conclusões
- 1Um teste de ponta a ponta segue um fluxo inteiro no Mac, como entrar, criar, salvar, e verifica o resultado a cada passo.
- 2É preciso um Mac real, porque não existe um Safari atual para Windows e os aplicativos para Mac rodam apenas em um Mac.
- 3O Mac pode estar em qualquer lugar: em uma mesa, em um rack ou na nuvem, acessado por um visualizador de área de trabalho remota.
- 4O visualizador é uma janela, então o GUI Test Studio a grava, reproduz nela ações reais e verifica o que ela mostra com asserções visuais e asserções textuais.
- 5Mantenha a imagem estável: um tamanho de janela fixo, escala de 100%, uma resolução fixa e alta qualidade de imagem, e então execute com o gtr-cli a cada build.
Perguntas
Como criar testes de ponta a ponta para um aplicativo macOS?
Grave um fluxo real no Mac, como entrar, criar um registro e salvá-lo, e depois adicione verificações do que o aplicativo mostra.Com o GUI Test Studio você faz isso a partir do Windows: um visualizador de área de trabalho remota mostra o Mac, e o GUI Test Runner-Recorder grava essa janela.Depois o teste roda a cada build com ações reais de mouse e teclado.
Posso testar o Safari no Windows?
Não com o Safari rodando no Windows: a Apple deixou de fazer o Safari para Windows em 2012.Você pode testar o Safari real a partir do Windows acessando um Mac por um visualizador de área de trabalho remota e gravando essa janela com o GUI Test Studio.O teste então roda no próprio Safari, no Mac, com entradas reais de mouse e teclado.
Qual é uma alternativa ao XCUITest para testes de interface no macOS?
Os testes do XCUITest são escritos em código, no Xcode, em um Mac.O driver Appium Mac2 permite escrevê-los em outras linguagens, e ainda precisa de um Mac com Xcode.O GUI Test Studio grava o teste em vez disso, a partir de um computador Windows, e verifica o que a tela do Mac mostra sem nenhum código.
Preciso de um Mac para testar um aplicativo para Mac?
Sim, em algum lugar.O Mac pode estar na sua mesa, em um rack ou na nuvem, como uma instância Amazon EC2 Mac ou um Mac da MacinCloud ou da MacStadium, e ninguém precisa ficar na frente dele.Os testes são gravados e executados a partir de um computador Windows, por um visualizador de área de trabalho remota.
Posso rodar o macOS em uma máquina virtual no Windows para testar?
A licença do macOS da Apple só permite máquinas virtuais macOS em hardware da Apple, então um PC com Windows não é o lugar para uma.Rode a máquina virtual em um Mac, com uma ferramenta como o Parallels Desktop, o UTM ou o VMware Fusion, e acesse-a a partir do Windows por um visualizador de área de trabalho remota como qualquer outro Mac.
O teste consegue ler texto na tela do Mac?
Sim.As asserções textuais leem o que o Mac mostra com o reconhecimento de texto do próprio GUI Test Studio, como fazem em qualquer tela.Mantenha alta a qualidade de imagem do visualizador, para que as letras conservem bordas nítidas.
Como o teste pressiona a tecla Command?
Pelo visualizador, do mesmo jeito que o seu próprio teclado.Muitos visualizadores enviam a tecla Windows como Command e o Alt como Option, mas o Windows pode guardar para si alguns atalhos da tecla Windows.Ative a opção do visualizador que envia as teclas do sistema ao computador remoto, e teste cada atalho uma vez durante a gravação.
Os testes de Mac podem rodar em um pipeline de CI?
Sim.O gtr-cli executa o teste em um agente de build Windows e entrega ao seu pipeline um código de saída e resultados JUnit.O agente precisa de uma área de trabalho Windows real e com sessão iniciada, porque um serviço do Windows não tem tela, e o visualizador precisa estar conectado ao Mac quando a execução começar.
Mac, macOS, Mac mini, Safari, Xcode, XCTest, iPhone, iPad, Appium, Parallels Desktop, UTM, VMware Fusion, Amazon EC2, MacinCloud, MacStadium, RealVNC, TightVNC, NoMachine, Parsec, Jump Desktop, Chrome Remote Desktop e Windows são marcas comerciais de seus respectivos proprietários.
Continue lendo
Todos os artigos
Testes visuais
Teste de capturas de tela pixel perfect: por que ele falha e o que pega os bugs visuais reais
12 min de leitura

Automação de testes
Teste manual vs. teste automatizado: por que o teste manual fica aquém nos testes de ponta a ponta
15 min de leitura

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