Considerações do teste de interface do usuário
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Ao executar testes automatizados no pipeline de CI/CD, talvez seja necessário ter uma configuração especial para executar testes de interface do usuário, como Selenium, Appium ou testes de interface do usuário codificados. Este artigo descreve as considerações típicas para a execução de testes de interface do usuário.
Pré-requisitos
Familiarize-se com agentes e implantação de um agente no Windows.
Modo sem periférico ou modo de interface do usuário visível?
Ao executar testes Selenium em um aplicativo Web, você pode iniciar o navegador de duas maneiras:
Modo sem periférico. Nesse modo, o navegador é executado normalmente, mas sem que nenhum componente de interface do usuário esteja visível. Embora esse modo não seja útil para navegar na Web, ele é útil para executar testes automatizados de maneira autônoma em um pipeline de CI/CD. Os navegadores Chrome e Firefox podem ser executados no modo sem periférico.
Esse modo geralmente consome menos recursos no computador porque a interface de usuário não é renderizada e os testes são executados mais rapidamente. Como resultado, possivelmente mais testes podem ser executados em paralelo no mesmo computador para reduzir o tempo total de execução do teste.
Capturas de tela podem ser feitas nesse modo e usadas para solucionar problemas de falhas.
Observação
No momento, o navegador Microsoft Edge não pode ser executado no modo sem periférico.
Modo de interface do usuário visível. Nesse modo, o navegador é executado normalmente e os componentes da interface do usuário ficam visíveis. Ao executar testes nesse modo no Windows, é necessário usar uma configuração especial dos agentes.
Se você estiver executando testes de interface do usuário para um aplicativo da área de trabalho, por exemplo, testes do Appium usando o WinAppDriver ou testes de interface de usuário codificados, será necessária uma configuração especial dos agentes.
Dica
Os testes de interface do usuário de ponta a ponta geralmente tendem a ser de longa execução. Ao usar o modo de interface do usuário visível, dependendo da estrutura de teste, talvez você não consiga executar testes em paralelo no mesmo computador porque o aplicativo precisa estar em foco para receber eventos de teclado e mouse. Nesse cenário, você pode acelerar os ciclos de teste executando testes em paralelo em computadores diferentes. Confira executar testes em paralelo de qualquer executor de teste e executar testes em paralelo usando a tarefa Teste do Visual Studio.
Teste de interface do usuário no modo de interface do usuário visível
Uma configuração especial é exigida para que os agentes executem testes de interface do usuário no modo de interface do usuário visível.
Teste de interface do usuário visível usando agentes hospedados pela Microsoft
O teste de interface do usuário visível não tem suporte em agentes hospedados pela Microsoft. O teste falha com a mensagem de erro "elemento não interativo". Os agentes hospedados pela Microsoft dão suporte ao teste de navegador sem periféricos.
Teste de interface do usuário do modo headless usando agentes hospedados pela Microsoft
Os agentes hospedados pela Microsoft são pré-configurados para testes de interface do usuário e testes de interface do usuário para aplicativos Web. Os agentes hospedados pela Microsoft também são pré-configurados com navegadores populares e versões de driver da Web correspondentes que podem ser usadas para executar testes do Selenium. Os navegadores e os drivers da Web correspondentes são atualizados periodicamente. Para saber mais sobre como executar testes Selenium, confira Teste de interface do usuário com o Selenium
Teste de interface do usuário visível usando agentes do Windows auto-hospedados
Os agentes configurados para execução como serviço podem executar testes Selenium somente com navegadores sem periféricos. Se você não estiver usando um navegador sem periféricos ou se estiver executando testes de interface de usuário em aplicativos da área de trabalho, os agentes do Windows precisarão estar configurados para execução como um processo interativo com logon automático habilitado.
Ao configurar agentes, selecione "Não" quando for feito o pedido de execução como um serviço. Em seguida, as etapas subsequentes permitem que você configure o agente com logon automático. Quando os testes de interface do usuário são executados, aplicativos e navegadores são iniciados no contexto do usuário especificado nas configurações de logon automático.
Se você usa a Área de Trabalho Remota para acessar o computador no qual um agente está executando o logon automático, a simples desconexão da Área de Trabalho Remota fará com que o computador seja bloqueado e qualquer teste de interface do usuário executado nesse agente poderá falhar. Para evitar falha, use o comando tscon no computador remoto para se desconectar da Área de Trabalho Remota. Por exemplo:
%windir%\System32\tscon.exe 1 /dest:console
Neste exemplo, o número '1' é a ID da sessão da área de trabalho remota. Esse número pode ser alterado entre sessões remotas, mas pode ser exibido no Gerenciador de Tarefas. Como alternativa, para automatizar a localização da ID da sessão atual, crie um arquivo em lote contendo o seguinte código:
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console
)
Salve o arquivo em lote e crie um atalho de área de trabalho para ele e, em seguida, altere as propriedades de atalho para "Executar como administrador". A execução do arquivo em lote desse atalho se desconecta da área de trabalho remota, mas preserva a sessão da interface do usuário e permite que os testes de interface do usuário sejam executados.
Provisionamento de agentes em VMs do Azure para teste de interface do usuário
Se você estiver provisionando VMs (máquinas virtuais) no Azure, a configuração do agente para teste de interface do usuário estará disponível por meio do artefato Agente para o DevTest Labs.
Configurando a resolução da tela
Antes de executar testes de interface do usuário, talvez seja necessário ajustar a resolução de tela para que os aplicativos sejam renderizados corretamente. Para isso, uma tarefa do utilitário de resolução de tela está disponível no Marketplace. Use essa tarefa em seu pipeline para definir a resolução de tela como um valor compatível com o computador do agente. Por padrão, esse utilitário define a resolução como o valor ideal compatível com o computador do agente.
Se você encontrar falhas usando a tarefa de resolução de tela, verifique se o agente está configurado para ser executado com logon automático habilitado e se todas as sessões de área de trabalho remota foram desconectadas com segurança usando o comando tscon, conforme descrito acima.
Observação
A tarefa do utilitário de resolução de tela é executada no agente de build/versão/teste unificado e não pode ser usada com a tarefa Executar Testes Funcionais preterida. A tarefa util de resolução também não funciona para máquinas virtuais do Azure.
Solução de problemas de falhas em testes de interface do usuário
Quando você executa testes de interface do usuário de maneira autônoma, a captura de dados de diagnóstico, como capturas de tela ou vídeo, é útil para descobrir o estado do aplicativo quando a falha foi encontrada.
Fazer capturas de tela
A maioria das estruturas de teste de interface do usuário fornece a capacidade de fazer capturas de tela. As capturas de tela coletadas ficam disponíveis como um anexo nos resultados do teste quando esses resultados são publicados no servidor.
Se você usar a tarefa de teste do Visual Studio para executar testes, as capturas de tela feitas precisarão ser adicionadas como um arquivo de resultado para estarem disponíveis no relatório de teste. Para isso, use o seguinte código:
Primeiro, verifique se TestContext está definido em sua classe de teste. Por exemplo: public TestContext TestContext { get; set; }
Adicionar o arquivo de captura de tela usando TestContext.AddResultFile(fileName); //Where fileName is the name of the file.
Se você usar a tarefa Publicar Resultados de Teste para publicar resultados, os anexos de resultado de teste só poderão ser publicados se você estiver usando o formato de resultados do VSTest (TRX) ou o formato de resultados NUnit 3.0.
Os anexos de resultado não poderão ser publicados se você usar os resultados do teste JUnit ou xUnit. Isso ocorre porque esses formatos de resultado de teste não têm uma definição formal para anexos no esquema de resultados. Você pode usar uma das abordagens abaixo para publicar anexos de teste.
Se você estiver executando testes no pipeline de build (CI), poderá usar a tarefa Copiar e Publicar Artefatos de Build para publicar arquivos adicionais criados em seus testes, se houver. Elas serão exibidas na página Artefatos do resumo do build.
Use as APIs REST para publicar os anexos necessários. Exemplos de código podem ser encontrados neste Repositório do GitHub.
Capturar vídeo
Se você usar a tarefa de teste do Visual Studio para executar testes, o vídeo do teste poderá ser capturado e ficará disponível automaticamente como um anexo no resultado do teste. Para isso, você precisa configurar o coletor de dados de vídeo em um arquivo .runsettingse esse arquivo precisa ser especificado nas configurações de tarefa.
Ajuda e suporte
- Confira nossa página de solução de problemas
- Obtenha conselhos sobre Stack Overflow e obtenha suporte por meio do Developer Community