Pruebas de telefonía del ACTS

El conjunto de pruebas de comunicaciones (ACTS) de Android realiza pruebas automatizadas de pilas de conectividad, como Wi-Fi, Bluetooth y servicios móviles. La herramienta de prueba requiere adb y Python. La herramienta se encuentra en tools/test/connectivity/acts.

En esta página, se describe cómo ejecutar las pruebas de telefonía básicas disponibles en el Proyecto de código abierto de Android (AOSP) para un usuario con dos teléfonos.

Requisitos previos

Para ejecutar pruebas de telefonía de ACTS, debes tener acceso a un repositorio de Android completo y, además, instalar las compilaciones userdebug en los dispositivos que deseas probar.

Descarga un repositorio de Android

Sigue las instrucciones que se indican en Cómo descargar el código fuente para descargar un repositorio de Android en una máquina que tenga una conexión USB a los dispositivos que quieres probar.

  • AOSP es una base de código multigigabytes que sigue creciendo. Ajusta tus expectativas en cuanto a los tiempos de descarga según corresponda.
    • Si una máquina tiene restricciones de tamaño, agrega --depth=1 al comando repo init.
  • Para obtener actualizaciones futuras sobre las herramientas de ACTS, ve al directorio raíz de Android:
    • Usa repo sync tools/test/connectivity
    • Y repo sync external/sl4a

Cómo verificar compilaciones de userdebug en dispositivos

Instala una versión userdebug de Android en tus dispositivos de prueba.

  • Compila el repositorio según las instrucciones que se indican en Cómo compilar para Android.
  • Escribe el dispositivo en la memoria flash como se describe en Cómo escribir en la memoria flash de un dispositivo.
    • El comando adb shell getprop ro.build.type debería mostrar userdebug.
    • Si ro.build.type no está disponible, una compilación userdebug permite ejecutar el shell de adb como raíz (terminal #).

Cómo compilar e instalar SL4A

Para compilar e instalar la capa de secuencias de comandos para Android (SL4A), sigue las instrucciones de la Capa de secuencias de comandos para Android. La sección Cómo agregar compilaciones de SL4A a compilaciones de Android de forma predeterminada es opcional.

Después de compilar ANS4, el último mensaje de registro contendrá la ubicación del archivo sl4a.apk, que debes instalar en TODOS los dispositivos. Este es un ejemplo de un mensaje de registro:

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

Configura dispositivos para realizar pruebas

Configura los dispositivos con estos requisitos de compilación o herramienta de ACTS:

  • Si las claves del proveedor de ADB no están disponibles, presiona la ventana emergente Confiar en esta computadora en el DUT cuando aparezca. Si las claves de proveedor de ADB están disponibles, haz lo siguiente:

    • Las claves y los controladores del proveedor de ADB deben ser exclusivos del DUT.
    • Para habilitar siempre la depuración por USB, las claves del proveedor de ADB de tu árbol de fuentes deben agregarse a ~/.bashrc (o equivalente) con export ADB_VENDOR_KEYS=/path/to/directory/with/vendor/keys, donde /path/to/directory es la ruta de acceso completamente calificada en el host. Para solucionar problemas de ADB, consulta Cómo ejecutar apps en un dispositivo de hardware.
  • Permitir la depuración por USB: Cuando están instalados los controladores adb, estos pueden activar un mensaje en el dispositivo para permitir la depuración por USB.

  • Instalar sl4a.apk con $ adb install -r <ANDROID_ROOT>/path/to/sl4a.apk

  • Asegúrate de que los teléfonos usen una conexión USB 2.0 al servidor de prueba.

  • Estas pruebas dependen de redes móviles activas, por lo que debes colocar las tarjetas SIM en los teléfonos y mantenerlos en un área que tenga un buen servicio de telefonía.

  • Agrega todas las tarjetas SIM a un archivo JSON como se describe en Cómo escribir un archivo de configuración.

Configura el entorno

Antes de configurar el entorno, verifica que Python 3.4+ esté instalado.

Ejecuta:

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

Instala ACTS

Ejecuta:

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

Para verificar la instalación, ejecuta act.py -h, que imprime una lista de comandos disponibles.

Escribe un archivo de configuración

Para ejecutar pruebas, debes crear un archivo con información de configuración. Este es un archivo .config de ejemplo. Hay un archivo similar disponible en el repositorio de Android, en tools/test/connectivity/acts/framework/sample_config.json. Reemplaza XXXXXXX por números de serie del dispositivo a fin de proporcionar la información mínima que necesita ACTS para ejecutar una prueba de telefonía.

{
  "_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"
}

Usa las claves de la tabla para configurar los parámetros de prueba. Consulta Opciones de configuración adicionales para obtener más opciones.

Clave Valor
_description Comenta el contenido de todo el archivo de configuración
testbed Especificación de un entorno en el que se pueden ejecutar las pruebas
(pruebas) _description Hacer comentarios en cada grupo de pruebas, ya que el ACTS puede atacar a grupos de pruebas individuales
(pruebas) name Nombre del testbed para llamar desde la línea de comandos
(pruebas) AndroidDevice Lista de dispositivos específicos a los que se orienta la prueba
Nota: Puede haber varios dispositivos en la lista. Una prueba que ejecuta teléfonos que se llaman entre sí espera que haya dos dispositivos y falla si hay menos. Si hay dos dispositivos en la lista y la prueba espera solo uno, se ejecutará en el primero.
(testbed)(AndroidDevice) serial Número de serie del dispositivo (impreso desde adb devices)
(testbed)(AndroidDevice) adb_logcat_param Parámetros que se pasan cuando se llama a adb logcat durante la prueba
logpath La ubicación en el servidor de prueba donde se guardan los registros
testpaths La ubicación del código del caso de prueba
sim_conf_file La ubicación del archivo .json en el que se enumeran las tarjetas SIM disponibles
La lista de tarjetas SIM incluye el ID de la tarjeta, las capacidades de la tarjeta, el operador y el número de teléfono.
{
    "sim-card-ID-here": {
        "capability": [
            "voice",
            "ims",
            "volte",
            "vt",
            "sms",
            "tethering",
            "data"
        ],
        "operator": "tmo",
        "phone_num": "12345678901"
    },
...
}

Puedes obtener el número de teléfono del dispositivo en Sistema > Acerca del teléfono. Por lo general, el ID de la tarjeta SIM se imprime en la tarjeta SIM o está disponible en el dispositivo en Sistema > Acerca del teléfono > Estado de SIM. La cadena del operador se define en tools/test/connectivity/acts_tests/acts_contrib/test_utils/tel/tel_defines.py y, luego, se busca CARRIER_.

Parámetros de configuración adicionales

El archivo entries.py, ubicado en tools/test/connectivity/acts/framework/acts/config/entries.py en el repositorio de Android, incluye definiciones para las opciones de configuración de la línea de comandos principales.

También puedes encontrar parámetros específicos de la prueba en el código buscando self.user_params.get.

Cómo ejecutar pruebas

Ejecuta pruebas desde la línea de comandos después de escribir el archivo de configuración. Si bien hay muchas opciones, la más simple es usar -c filename.config -tc TestCase:name. En este ejemplo, se usa un archivo de configuración llamado minimum.config:

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

Una ejecución de prueba exitosa debería tener un mensaje de salida final como este:

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

Cómo ejecutar varias pruebas

Para ejecutar casos de prueba específicos en varios archivos, crea un archivo de prueba y pásalo con la marca -tf , como se muestra en el paquete de pruebas de regresión de ejemplo:

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

En este comando de ejemplo, se supone que el archivo se llama regression_suite.

act.py -c minimum.config -tf regression_suite

Cómo ejecutar pruebas varias veces

Para ejecutar un caso de prueba (-tc) o un archivo de prueba (-tf) varias veces, agrega -ti # (iteraciones de prueba) al comando.