Partilhar via


Execução Distribuída entre Máquinas

O TAEF suporta a capacidade de executar Te.exe em uma máquina, mas executar os testes em uma máquina separada. O TAEF autentica, autoriza e implanta os binários necessários para executar os testes e registra todas as informações de volta no console de origem.

Pré-requisitos

Os seguintes requisitos são necessários para executar testes remotamente:

  • Você deve instalar e executar o Te.Service (x86 ou x64) na máquina de destino.

Execução com contas de domínio

  • A conta de domínio deve ser um administrador ou um membro do grupo local "Usuários TAEF remotos" na máquina de destino.

Execução com contas que não sejam de domínio

  • A conta local (sem domínio) deve existir com o mesmo nome de usuário e senha em ambas as máquinas.

  • Esse usuário deve ser membro do grupo local "Usuários TAEF remotos" na máquina de destino.

  • Na máquina host, o usuário local pode executar Te.exeou, alternativamente, você pode adicionar credenciais genéricas para o usuário local ao gerenciador de credenciais.

    cmdkey /generic:<targetmachine> /user:<user_name> /pass:[PLACEHOLDER]
    
  • Se você estiver executando em uma máquina associada a um domínio, a máquina associada ao domínio deverá ter uma exclusão de limite IPSec.

Executando testes remotamente

/runOn:

Para executar testes remotamente, você deve especificar o parâmetro /runOn:<machine name> para Te.exe junto com o restante dos comandos. Se você atender aos pré-requisitos, o restante da experiência do usuário será idêntica à encontrada ao executar testes localmente. Toda a saída de log será salva/gravada na máquina local.

Por exemplo:

te unittests\wex.common.tests.dll /runon:TAEFTest1
  • Envia todos os binários necessários para o seu teste para a máquina de destino (TAEFTest1) e executa remotamente todos os testes TAEF existentes no wex.common.tests.dll, enquanto efetua login novamente no seu console.

Se você não conseguir se conectar à máquina remota devido ao HRESULT 0x800706BA e tiver certeza de que digitou o nome da máquina corretamente, tente usar o endereço IP da máquina ou a opção /disableTimeouts . Às vezes, o atraso de DNS pode ser grande o suficiente para fazer com que a tentativa de conexão atinja o tempo limite.

Observação: Se esta for a primeira vez especificando o comando /runOn: , talvez seja necessário clicar em Desbloquear em uma caixa de diálogo de exclusão de firewall para Te.exe.

Dependências de teste

Te.exe determina automaticamente todas as dependências do módulo nativo e gerenciado do teste e as envia para a máquina remota junto com a DLL de teste. Isso exclui binários do sistema , bem como quaisquer bibliotecas COM que seu teste exija.

Você pode especificar manualmente dependências de teste adicionais por meio do parâmetro de linha de comando /TestDependencies na forma de uma lista delimitada por ponto-e-vírgula de arquivos ou diretórios a serem copiados.

  • Ficheiros

    Cada especificação de arquivo pode conter caracteres curinga (test.txt; test*.dll; etc.). Por exemplo:

    te unittests\wex.common.tests.dll /runon:TAEFTest1 /TestDependencies:*verification*.jpg;mysample.txt
    
    • Envia todos os binários necessários para seu teste para TAEFTest1, bem como quaisquer arquivos encontrados que correspondam aos arquivos especificados no parâmetro /TestDependencies .
  • Diretórios

    O TAEF suporta pesquisas recursivas de diretórios que existem no diretório ou abaixo dele que contém o binário de teste. Por exemplo:

    te unittests\wex.common.tests.dll /runon:TAEFTest1 /TestDependencies:unittests\...
    
    • Envia todos os binários necessários para o seu teste para o TAEFTest1, bem como todos os ficheiros/diretórios dentro ou abaixo do diretório unittests . O TAEF mantém a hierarquia de diretórios.
    _    te unittests\wex.common.tests.dll /runon:TAEFTest1 /TestDependencies:unittests\*.jpg...
    
    • Envia todos os binários necessários para o seu teste para TAEFTest1, bem como todos os arquivos jpg dentro ou abaixo do diretório unittests . O TAEF mantém a hierarquia de diretórios.

    Observação:Se você especificar uma pesquisa de diretório recursiva ou não recursiva para um diretório que não existe no diretório de teste ou abaixo dele, todos os arquivos serão copiados para a máquina remota, mas a hierarquia de diretórios será nivelada.

Você pode também especificar dependências de teste por meio de DeploymentItem metadados.

Contexto do usuário

Por padrão, o TAEF tenta executar os testes na máquina remota com seu contexto de usuário. Fá-lo através de:

  • Enumerar todas as sessões ativas na máquina remota e procurar uma sessão que lhe pertença.
    • Se o TAEF detectar uma sessão que lhe pertence na máquina remota, os testes são executados nessa sessão (na área de trabalho, etc.).

      Observação: Esta não será necessariamente a sessão da consola. Pode ser uma sessão de área de trabalho remota.

    • Se o TAEF não encontrar uma sessão que seja de sua propriedade na máquina remota, ele executa os testes como o usuário que está conectado à sessão do console (na área de trabalho, etc.).

    • Finalmente, se você não possui uma sessão na máquina remota e ninguém está conectado à sessão do console, o TAEF executará os testes na sessão 0 (não interativa).

RunAs

Se você especificar um valor /runAs além de /runOn, o TAEF usará as heurísticas acima, além daquelas que são necessárias para cumprir a configuração /runAs . Por exemplo:

te unittests\wex.common.tests.dll /runon:TAEFTest1 /runas:system
  • Executa todos os testes TAEF existentes dentro wex.common.tests.dll no TAEFTest1 com a conta do sistema.

Como funciona

  • Te.exe se conecta à instância do Te.Service que está sendo executada na máquina remota
    • A autenticação do Windows (Negociar) autentica você com o Te.Service.
    • O Te.Service autoriza você verificando se você é um administrador ou um membro do grupo local "Usuários TAEF remotos" na máquina remota.
  • Te.Service cria um diretório em RemoteTests, com o mesmo nome da dll de teste.
  • Te.exe cria uma lista de arquivos que são necessários para executar seus testes na máquina remota. Esta lista inclui:
    • Os binários TAEF necessários
    • Todas as dependências binárias nativas e/ou gerenciadas para sua dll de teste (excluindo binários do sistema)
    • Quaisquer arquivos adicionais especificados por você no parâmetro /TestDependencies
  • Te.exe envia a lista de dependência de teste, juntamente com os CRCs de cada arquivo, para o Te.Service.
  • O Te.Service procura cada ficheiro na máquina remota e compara os valores de CRC. Quaisquer correspondências são removidas da lista, e a lista é devolvida ao cliente.
  • Se houver algum arquivo restante na lista de dependência, Te.exe enviará cada dependência para o Te.Service.
    • Te.Service salva-os no <diretório Te.Service>\RemoteTests\<nome da dll de teste>.
  • Te.exe solicita que o Te.Service inicie uma nova instância de Te.ProcessHost.exe na máquina remota usando o contexto de usuário correto.
  • Te.exe se conecta à instância de Te.ProcessHost.exe remota e começa a executar os testes.