Testes de telefonia ACTS

O Conjunto de teste de comunicações do Android (ACTS, na sigla em inglês) realiza testes automatizados de pilhas de conectividade, como Wi-Fi, Bluetooth e serviços de celular. A ferramenta de teste requer o adb e o Python. A ferramenta está localizada em tools/test/connectivity/acts.

Esta página descreve como executar os testes básicos de telefonia disponíveis no Android Open Source Project (AOSP) para um usuário com dois smartphones.

Pré-requisitos

Para executar testes de telefonia ACTS, você precisa ter acesso a um repositório completo do Android e instalar builds de userdebug nos dispositivos que você quer testar.

Fazer o download de um repositório do Android

Siga as instruções em Fazer o download da fonte para fazer o download de um repositório do Android em uma máquina que tenha uma conexão USB com os dispositivos que você quer testar.

  • O AOSP é uma base de código com vários gigabytes que continua crescendo. Ajuste suas expectativas de tempos de download.
    • Se uma máquina tiver restrição de tamanho, adicione --depth=1 ao comando repo init.
  • Para receber atualizações futuras sobre as ferramentas do ACTS, acesse o diretório raiz do Android:
    • Usar repo sync tools/test/connectivity
    • E repo sync external/sl4a

Verificar builds de userdebug em dispositivos

Instale uma versão userdebug do Android nos dispositivos de teste.

  • Crie o repositório usando as instruções em Criar para Android.
  • Atualize o dispositivo conforme descrito em Atualizar um dispositivo.
    • O comando adb shell getprop ro.build.type retornará userdebug.
    • Se ro.build.type não estiver disponível, um build userdebug vai permitir a execução do shell do adb como raiz (terminal #).

Criar e instalar o SL4A

Para criar e instalar a Scripting Layer For Android (SL4A), siga as instruções na Scripting Layer for Android. A seção Adicionar builds do SL4A aos builds do Android por padrão é opcional.

Após a criação do SLA4, a última mensagem de registro contém a localização do arquivo sl4a.apk, que você precisa instalar em TODOS os dispositivos. Aqui está um exemplo de uma mensagem de registro:

Copy: out/target/path/to/sl4a.apk

Configurar dispositivos para teste

Configure os dispositivos usando estes requisitos de build/ferramenta ACTS:

  • Se as chaves do fornecedor do ADB estiverem indisponíveis, toque no pop-up Confiar neste computador no DUT quando ele aparecer. Se as chaves de fornecedor do ADB estiverem disponíveis:

    • As chaves e os drivers do fornecedor do ADB precisam ser exclusivos para o DUT.
    • Para sempre ativar a depuração por USB, as chaves do fornecedor do ADB na árvore de origem precisam ser adicionadas a ~/.bashrc (ou equivalente) usando export ADB_VENDOR_KEYS=/path/to/directory/with/vendor/keys, em que /path/to/directory é o caminho totalmente qualificado no host. Para resolver problemas do adb, consulte Executar apps em um dispositivo de hardware.
  • Permitir a depuração USB: quando os drivers adb são instalados, os dispositivos adb podem acionar uma solicitação no dispositivo para permitir a depuração USB.

  • Instale o app sl4a.apk usando $ adb install -r <ANDROID_ROOT>/path/to/sl4a.apk

  • Verifique se os smartphones usam uma conexão USB 2.0 com o servidor de teste.

  • Esses testes dependem de redes celulares ativas. Portanto, coloque os chips nos smartphones e mantenha-os em uma área com um bom serviço de rede celular.

  • Adicione todos os chips a um arquivo JSON, conforme descrito em Gravar um arquivo de configuração.

Configurar o ambiente

Antes de configurar o ambiente, verifique se o Python 3.4+ está instalado.

Execute:

sudo apt-get install python3-setuptools
sudo apt-get install python3-pip
sudo pip3 install --upgrade pip setuptools
sudo apt-get install protobuf-compiler

Instalar o ACTS

Execute:

cd <ANDROID_ROOT>/tools/test/connectivity/acts/framework/
sudo python3 setup.py develop
cd -

Para verificar a instalação, execute act.py -h, que mostra uma lista de comandos disponíveis.

Gravar um arquivo de configuração

Para executar testes, você precisa criar um arquivo com informações de configuração. Confira um exemplo de arquivo .config. Um arquivo semelhante está disponível no repositório do Android em tools/test/connectivity/acts/framework/sample_config.json. Substitua XXXXXXX pelos números de série do dispositivo para fornecer as informações mínimas que o ACTS precisa para executar um teste de telefonia.

{
  "_description": "Minimum Telephony Config",
  "testbed":
  [
      {
          "_description": "A testbed listing two AndroidDevices for adb.",
          "name": "ExampleTestBed",
          "AndroidDevice": [{"serial": "XXXXXXX", "adb_logcat_param": "-b all"},
                            {"serial": "XXXXXXX", "adb_logcat_param": "-b all"}]
      }
  ],
  "logpath": "/path/to/logs",
  "testpaths": "/path/to/android/repo/tools/test/connectivity",
  "sim_conf_file": "/path/to/simcard_list.json"
}

Use as chaves na tabela para configurar os parâmetros de teste. Consulte Outras opções de configuração para mais opções.

Chave Valor
_description Comente o conteúdo de todo o arquivo de configuração
testbed Especificação de um ambiente em que os testes podem ser executados
(testbed) _description Comente sobre cada ambiente de teste, já que o ACTS pode segmentar ambientes de teste individuais
(testbed) name Nome do ambiente de teste para chamadas na linha de comando
(testbed) AndroidDevice Lista de dispositivos específicos que o teste tem como alvo
Observação:podem ser listados vários dispositivos. Um teste que executa telefones que se ligam entre si espera que haja dois dispositivos e falha se houver menos. Se houver dois dispositivos listados e o teste esperar apenas um, ele será executado no primeiro dispositivo.
(testbed)(AndroidDevice) serial Número de série do dispositivo (impresso em adb devices)
(testbed)(DispositivoAndroid) adb_logcat_param Parâmetros que são transmitidos quando adb logcat é chamado durante o teste
logpath O local no servidor de teste em que os registros são salvos
testpaths O local do código do caso de teste
sim_conf_file O local do arquivo .json que lista os chips disponíveis
A lista de chips inclui o ID do chip, os recursos do chip, a operadora e o número de telefone.
{
    "sim-card-ID-here": {
        "capability": [
            "voice",
            "ims",
            "volte",
            "vt",
            "sms",
            "tethering",
            "data"
        ],
        "operator": "tmo",
        "phone_num": "12345678901"
    },
...
}

Você pode extrair o número de telefone do dispositivo em Sistema > Sobre o dispositivo. O ID do chip geralmente está impresso no próprio chip ou disponível no dispositivo em Sistema > Sobre o dispositivo > Status do chip. A string do operador é definida em tools/test/connectivity/acts_tests/acts_contrib/test_utils/tel/tel_defines.py. Em seguida, procure CARRIER_.

Outras opções de configuração

O arquivo entries.py localizado em tools/test/connectivity/acts/framework/acts/config/entries.py no repositório do Android tem definições para as principais opções de configuração da linha de comando.

Também é possível encontrar parâmetros específicos do teste no código pesquisando self.user_params.get.

Executar testes

Execute testes na linha de comando depois que o arquivo de configuração for gravado. Embora existam muitas opções, a mais simples é usar -c filename.config -tc TestCase:name. Este exemplo usa um arquivo de configuração chamado minimum.config:

act.py -c minimum.config -tc TelLiveVoiceTest:test_call_mo_voice_general

Uma execução de teste bem-sucedida terá uma mensagem de saída final como esta:

INFO Summary for test run ExampleTestBed@yyyy-mm-dd_15-23-43-614: Requested 1,
Executed 1, Passed 1, Failed 0, Skipped 0, Error 0

Executar vários testes

Para executar casos de teste específicos em vários arquivos, crie um arquivo de teste e o transmita com a flag -tf , conforme mostrado no exemplo do pacote de testes de regressão:

TelLiveVoiceTest:
test_call_mo_voice_general,
test_call_volte_to_volte,
test_call_3g_to_3g

TelLiveDataTest:
test_airplane_mode,
test_4g,
test_3g

TelLiveSmsTest:
test_sms_mo_4g,
test_sms_mt_4g,
test_sms_mo_3g,
test_sms_mt_3g,
test_mms_mo_4g,
test_mms_mt_4g

Este comando de exemplo pressupõe que o arquivo se chama regression_suite..

act.py -c minimum.config -tf regression_suite

Executar testes várias vezes

Para executar um caso de teste (-tc) ou um arquivo de teste (-tf) várias vezes, adicione -ti # (iterações de teste) ao comando.