Esta seção descreve os aspectos internos do Tradefed e seus relacionamentos. Consulte as subpáginas vinculadas para obter mais detalhes.
1. Configuração de teste (configurações XML)
Visão geral
As configurações de teste no Tradefed são descritas em um formato XML. Compreender a estrutura da configuração é fundamental para executar e personalizar os testes.
Estrutura das configurações do TF
Configurações globais de TF
A Configuração Global é uma configuração XML do Tradefed especial que é carregada quando o Tradefed é iniciado por meio da variável de ambiente TF_GLOBAL_CONFIG
. Ele carrega objetos relacionados ao escopo da instância Tradefed que afetará o comportamento geral do chicote.
Detalhes da configuração global
Armazenamento de chaves
O keystore permite a injeção de opções de linha de comando para Tradefed provenientes de um keystore para evitar referenciar o valor diretamente na linha de comando. Isso pode ser usado para ocultar senhas da linha de comando recuperando senhas diretamente do keystore.
Detalhes do armazenamento de chaves
2. Gerenciador de dispositivos
O Gerenciador de Dispositivos é responsável por acompanhar o estado dos dispositivos em uma instância em execução do Tradefed. Aspectos como status de alocação e status online são monitorados.
3. Agendador de Comandos de Teste
O Test Command Scheduler no Tradefed executa comandos, associa-os a dispositivos e inicia uma chamada de teste.
4. Construir provedor
O Build Provider é a primeira etapa de qualquer invocação de teste. Ele baixa os recursos necessários para configurar e executar os testes (criar imagens, testar APKs e muito mais). Ele também faz referência a eles em um objeto BuildInfo
que será passado para o teste. Os recursos disponíveis localmente também podem ser vinculados no objeto BuildInfo
.
5. Preparador e limpador de alvos
O Target Preparer oferece ações opcionais que podem ser executadas para configurar o destino em teste em um determinado estado, por exemplo, piscando o dispositivo, definindo determinadas propriedades e conectando-se ao Wi-Fi.
6. Executor de Testes
Um Test Runner no Tradefed refere-se ao objeto responsável pela execução real do teste. Diferentes executores de teste conduzem a execução do teste de maneiras diferentes; por exemplo, um executor de teste de instrumentação será muito diferente de um executor de teste JUnit.
7. Reporter de Resultados
O Result Reporter no Tradefed refere-se ao objeto que enviará os resultados para um determinado destino. Cada implementação geralmente é especializada para diferentes back-ends de resultados. E o Result Reporter é responsável por converter o formato de resultados do Tradefed no formato de destino.
Esse design flexível permite que qualquer teste se reporte a qualquer um dos destinos de resultados e tenha facilmente mais testes adicionados de maneira isolada.
8. Coletor de Métricas
O Metrics Collector é um objeto especial no Tradefed, ortogonal à execução do teste. Ele permite a coleta de informações em diferentes pontos do ciclo de vida do teste (por exemplo, início do teste, final do teste). Como o coletor é desacoplado do próprio teste, os pontos podem ser trocados, adicionados e removidos sem a necessidade de alterar o próprio teste.
9. Configuração em todo o host
Esta seção descreve as configurações aplicáveis à execução de uma instância Tradefed completa. Essas opções afetam o comportamento do chicote como um todo para se adaptar a diferentes ambientes, por exemplo, estar em uma rede restrita.
10. Recursos adicionais
As seções a seguir descrevem o uso geral de objetos Tradefed em vez de Tradefed.
Fragmentação negociada
Quando o corpus de teste é grande ou demora muito para ser executado, é possível dividi-lo em vários dispositivos. Referimo-nos a esta divisão como sharding . Esta seção descreve como a fragmentação funciona e como ela é configurada.
Usando SL4A
Tradefed suporta a camada de script para Android, SL4A; este é um conjunto de ferramentas de automação para chamar as APIs do Android de maneira independente da plataforma.
Download dinâmico da @Option
Em alguns casos, os arquivos necessários para um teste ou alguma operação específica não estão disponíveis localmente. Esse recurso permite que o Tradefed obtenha esses arquivos de um local remoto sem passar por um Build Provider.