Generación aleatoria de casos de test Espresso para Android - Arcuschin Moreno, Iván (2024)
El testing es una parte integral del proceso de desarrollo de aplicaciones Android: al correr casos de test regularmente en sus aplicaciones, los desarrolladores pueden verificar el correcto comportamiento y la usabilidad antes de poner las aplicaciones a disposición del público. Espresso es un framework de testing que permite a los desarrolladores escribir casos de test de interfaz de usuario (UI) Android concisos, confiables y legibles, y es el único framework de testing de UI con una amplia adopción entre los desarrolladores de aplicaciones. Se han propuesto varias herramientas de generación automática de tests para ayudar a los desarrolladores en la tarea de testing. Sin embargo, muchas de estas herramientas no producen casos de test ejecutables, solo informan errores, y de las que generan tests, sólo algunas admiten el formato Espresso. Esta tesis se centra en mejorar la generación de casos de test Espresso para aplicaciones Android. Comenzamos realizando un estudio empírico que compara la efectividad de distintos algoritmos evolutivos y muestra que dichos algoritmos no son adecuados para generar casos de test Android, siendo muchas veces superados por algoritmos puramente aleatorios. A continuación, analizamos los desafíos de generar casos de test en formato Espresso, utilizando un enfoque basado en traducción que aprovecha la salida de herramientas de testing automático existentes. Encontramos que uno de los principales desafíos es la falta de propiedades únicas para identificar de manera inequívoca widgets específicos en la UI. Esto se agrava debido a que muchas herramientas utilizan el Servicio de Accesibilidad de Android, que puede devolver información inconsistente. Finalmente, esta tesis presenta una técnica para generar casos de test Espresso que son ampliamente más confiables que los generados utilizando el enfoque basado en traducción según una evaluación experimental en 1.035 apps Android. Esta técnica incluye algoritmos novedosos para generar View Matchers de Espresso que seleccionan de manera concisa widgets de Android, y para crear View Assertions de Espresso que sirven para tests de regresión. Utiliza además el framework Espresso directamente para obtener información e interactuar con la aplicación bajo test.