Pruebas de la plataforma Android

Este contenido está dirigido a los desarrolladores de la plataforma Android. Antes de comprender cómo se realizan las pruebas en la plataforma Android, consulte la arquitectura de la plataforma Android para obtener una descripción general.

Luego profundice en las tecnologías precisas disponibles para usted en esta sección, como Vendor Test Suite (VTS) y su miríada de videos y tutoriales de laboratorio de código .

Tenga en cuenta también los mecanismos de prueba específicos de seguridad disponibles para detectar y fortalecer sus dispositivos contra vulnerabilidades.

Para las pruebas de aplicaciones, comience con los fundamentos de las pruebas y realice el Codelab de pruebas de Android utilizando los ejemplos proporcionados.

Finalmente, tenga en cuenta que las pruebas básicas previas al envío están disponibles para usted a través de Repo Hooks que pueden ejecutar linters, verificar el formato y activar pruebas unitarias antes de continuar, como cargar una confirmación. Tenga en cuenta que estos ganchos están deshabilitados de forma predeterminada. Consulte la introducción de Repo Hooks para obtener más detalles.

Qué y cómo probar

Una prueba de plataforma generalmente interactúa con uno o más de los servicios del sistema Android, o capas de capa de abstracción de hardware (HAL), ejercita las funcionalidades del sujeto bajo prueba y afirma la corrección del resultado de la prueba.

Como tal, una prueba de plataforma puede:

  1. ejerza las API del marco a través del marco de la aplicación; Las API específicas que se están ejercitando pueden incluir:
    • API públicas destinadas a aplicaciones de terceros
    • API ocultas destinadas a aplicaciones privilegiadas, a saber, API del sistema
    • API privadas (@hide, o protected, paquete privado)
  2. invocar los servicios del sistema Android a través de proxies IPC/aglutinante sin procesar directamente
  3. interactúe directamente con HAL a través de API de bajo nivel o interfaces IPC

Los tipos 1 y 2 suelen escribirse como pruebas de instrumentación , mientras que el tipo 3 suele escribirse como GTests .

Para obtener más información, consulte nuestros ejemplos completos:

Familiarícese con estas herramientas, ya que son intrínsecas a las pruebas en Android.

Conjunto de pruebas de compatibilidad (CTS)

Android Compatibility Test Suite es un conjunto de varios tipos de pruebas, que se utiliza para garantizar la compatibilidad de las implementaciones del marco de trabajo de Android entre los socios OEM y entre las versiones de la plataforma. La suite también incluye pruebas de instrumentación y el marco GTest.

Las pruebas de plataforma y CTS no se excluyen mutuamente, y aquí hay algunas pautas generales:

  • si una prueba afirma la corrección de las funciones/comportamientos de la API del marco, y debe aplicarse a todos los socios OEM, debe estar en CTS
  • si una prueba está destinada a detectar regresiones durante el ciclo de desarrollo de la plataforma, y ​​puede requerir un permiso privilegiado para llevarse a cabo, y puede depender de los detalles de implementación (como se publica en AOSP), solo debe ser pruebas de plataforma

Conjunto de pruebas de proveedores (VTS)

Vendor Test Suite (VTS) automatiza las pruebas del kernel HAL y OS. Para usar VTS para probar la implementación de un sistema Android incorporado, configure un entorno de prueba y luego pruebe un parche usando un plan VTS.

Infraestructura de pruebas de la federación comercial

Trade Federation (tradefed o TF para abreviar) es un marco de prueba continuo diseñado para ejecutar pruebas en dispositivos Android. TF puede ejecutar pruebas funcionales localmente, en su escritorio, dentro de su plataforma de pago. Hay dos archivos necesarios para ejecutar una prueba en TF, una fuente de prueba Java y una configuración XML. Consulte RebootTest.java y reboot.xml para ver ejemplos.

depuración

La sección Depuración resume las herramientas útiles y los comandos relacionados para la depuración, el seguimiento y la creación de perfiles del código integrado de la plataforma Android al desarrollar funciones a nivel de plataforma.