Pruebas de telefonía del ACTS

El conjunto de pruebas de comunicaciones de Android (ACTS) realiza pruebas automatizadas de pilas de conectividad, como Wi-Fi, Bluetooth y servicios celulares. 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, luego, instalar compilaciones de userdebug en los dispositivos que deseas probar.

Cómo descargar un repositorio de Android

Sigue las instrucciones que se indican en Descarga la fuente para descargar un repositorio de Android en una máquina que tenga una conexión USB a los dispositivos que deseas probar.

  • AOSP es una base de código de varios gigabytes que sigue creciendo. Ajusta tus expectativas de 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

Verifica las compilaciones de userdebug en los dispositivos

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

  • Compila el repositorio con las instrucciones que se indican en Cómo compilar Android.
  • Escribe el dispositivo 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 de userdebug permite ejecutar la shell de adb como raíz (terminal #).

Compila e instala 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 SLA4, el último mensaje de registro contiene 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

Cómo configurar dispositivos para realizar pruebas

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

  • Si las claves de 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 de proveedor de ADB en tu árbol de origen deben agregarse a ~/.bashrc (o un equivalente) con export ADB_VENDOR_KEYS=/path/to/directory/with/vendor/keys, donde /path/to/directory es tu 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 se instalan los controladores de adb, los dispositivos adb pueden activar un mensaje en el dispositivo para permitir la depuración por USB.

  • Instala 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 o versiones posteriores 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 los comandos disponibles.

Cómo escribir 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 los números de serie del dispositivo para proporcionar la información mínima que ACTS necesita 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 Hacer comentarios sobre el contenido de todo el archivo de configuración
testbed Especificación de un entorno en el que se pueden ejecutar las pruebas
(plataforma de pruebas) _description Haz comentarios en cada plataforma de pruebas, ya que ACTS puede orientarse a plataformas de pruebas individuales.
(plataforma de pruebas) name Nombre del testbed para llamar desde la línea de comandos
(plataforma de pruebas) AndroidDevice Es la lista de dispositivos específicos a los que se orienta la prueba.
Nota: Se pueden enumerar varios dispositivos. 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, esta 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 las pruebas
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 Es la ubicación del archivo .json que enumera las tarjetas SIM disponibles.
La lista de tarjetas SIM incluye el ID de la tarjeta, sus capacidades, 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 extraer el número de teléfono del dispositivo en Sistema > Acerca del teléfono. Por lo general, el ID de la tarjeta SIM está impreso en ella o está disponible en el dispositivo en Sistema > Acerca del teléfono > Estado de la 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 tiene definiciones para las principales opciones de configuración de la línea de comandos.

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 sencilla 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

Ejecuta 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 ejemplo del conjunto de pruebas de regresión:

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.