GTAC 2015: Presentaciones

Comentarios de apertura

Yvette Nameth (Google)

Discurso de apertura

Jürgen Allgayer (Google)

El Desafío de Uber para las pruebas en varias aplicaciones o en varios dispositivos

Apple Chow (Uber) y Bian Jiang (Uber)

Vínculos: Video, Presentaciones

Poco después de unirte a Uber en marzo de 2015, encontramos un desafío exclusivo de Uber durante la investigación de herramientas de prueba de IU para nuestras aplicaciones para dispositivos móviles. Muchas de nuestras pruebas de estado requieren que la aplicación del pasajero y la del controlador se comuniquen o coordinen sus acciones entre sí a fin de completar la situación de prueba de extremo a extremo. En esta charla, presentaremos nuestra solución independiente de la plataforma, llamada Octopus, y analizaremos cómo coordina la comunicación en las diferentes apps que se ejecutan en distintos dispositivos. Esta solución puede adoptarse para cualquier prueba que requiera coordinación o comunicación en diferentes apps o dispositivos (p.ej., un juego multiusuario, una app de mensajería/comunicación multiusuario, etcétera).

Automatización de pruebas asistidas por robots

Hans Kuosmanen (OptoFidelity) y Natalia Leinonen (OptoFidelity)

Vínculos: Video, Presentaciones

OptoFidelity es una empresa finlandesa de alta tecnología con 10 años de experiencia en el desarrollo y la entrega de soluciones de automatización de pruebas de investigación y desarrollo. Esta charla incluirá nuestras experiencias y perspectivas futuras sobre los métodos de prueba no intrusivos que se usan en las pruebas de rendimiento de la IU para dispositivos móviles. ¿Sabías que el equipo del Sistema operativo Chrome usa una solución robot de OptoFidelity para medir la latencia de extremo a extremo de los dispositivos Android y Chrome OS?

Malabares con diversión y ganancias: lecciones aprendidas con las pruebas de integración multiplataforma

Dan Giovannelli (Google)

Vínculos: Video, Presentaciones

El desarrollo para dispositivos móviles es difícil. Compilar infraestructura de prueba es difícil. Es difícil trabajar en varias plataformas. Combine los tres para obtener una receta para el desastre. En esta charla, Dan Giovannelli compartirá sus experiencias trabajando en un proyecto multiplataforma de infraestructura de prueba para dispositivos móviles. Hablará sobre lo que salió bien, las cosas que salieron (muy) y lo que desearía que supiera desde el principio. Ven y obtén información valiosa sobre el diseño de herramientas para dispositivos móviles para ingenieros que no usan apps para dispositivos móviles. No te pierdas lo que es The Matrix y cómo superarlo en su propio juego.

Automatización de pruebas de juegos para dispositivos móviles con dispositivos reales

Jouko Kaasila (Bitbar/Testdroid)

Vínculos: Video, Presentaciones

Los juegos para dispositivos móviles son la categoría de generación de ingresos más grande en las tiendas de aplicaciones actuales, por lo que garantizar que todas las versiones de cada juego funcionen en los dispositivos de los usuarios es una prioridad para todos los desarrolladores. A pesar de la importancia de validar esto, hay muy pocos ejemplos o marcos de trabajo para automatizar las pruebas de los juegos para dispositivos móviles, lo que obliga a los desarrolladores a recurrir a las pruebas manuales que no se ajustan al alcance de las empresas de videojuegos para cubrir su mercado global. Un motivo principal es la naturaleza única de los juegos como apps para dispositivos móviles, ya que acceden a la pantalla directamente y evitan todos los servicios de IU proporcionados por el SO y renderizan la mayoría de los marcos de trabajo de prueba de automatización inútiles, ya que los objetos tradicionales no están expuestos.

Afortunadamente, existen formas de usar los frameworks estándar de automatización de pruebas en dispositivos móviles a fin de impulsar la automatización de pruebas en dispositivos móviles reales para juegos mediante algo de creatividad y bibliotecas disponibles de manera pública. En su presentación, Jouko Kaasila de Testdroid analizará tres enfoques diferentes con ejemplos reales y ejemplos de código.

Cómo probar los bollitos asiáticos con los componentes

Toni Chang (Google)

Vínculos: Video, Presentaciones

Las personas que dedicaron demasiado tiempo a estabilizar las pruebas inestables coinciden en que debemos descomponer las pruebas. Sin embargo, a algunos les resulta difícil y no saben cómo hacerlo, otros pueden ser desafiados por compañeros de equipo que creen que necesitamos la prueba E2E para validar todas las situaciones. Como a veces es difícil tener la idea cuando no estás acostumbrado a ver tu producto en componentes, usaré un ejemplo abstracto de una sopa de bollitos asiáticos para demostrar cómo desglosar lo que parece inseparable de los componentes y aplicarles pruebas.

Te guiaré en un recorrido entretenido por la traducción de pruebas de E2E a pruebas de componentes que te darán confianza en el producto final. Con suerte, esto te dará una perspectiva nueva cuando mires tu propio producto.

Automatización de pruebas de Chromecast

Brian Gogan (Google)

Vínculos: Video, Presentaciones

La Internet de las cosas ha provocado la proliferación de los dispositivos conectados. La validación del comportamiento en varios dispositivos interoperables es un desafío significativo de pruebas. Para probar Chromecast, se tomaron varias medidas. Describimos los marcos de trabajo, la infraestructura y las herramientas de prueba que desarrollamos para generar señales de calidad confiables a partir del producto. Detallamos los desafíos de probar un producto que opera en entornos ruidosos en red. Proponemos que las herramientas de prueba para dispositivos como Chromecast recién comienzan y ofrecen oportunidades de innovación en ingeniería de software.

Cómo usar robots para probar apps de Android

Dr.Shauvik Roy Choudhary (Georgia Tech/Checkdroid)

Vínculos: Video, Presentaciones

Los robots de software, como Monkey, se pueden usar a fin de probar una aplicación para Android sin mucho esfuerzo manual. En el ámbito académico, se proponen varias herramientas de este tipo, cuyo objetivo es generar de forma automática entradas de prueba para impulsar aplicaciones para Android. En esta charla, presentaré un conjunto de herramientas de generación de entradas de prueba representativas y presentaré un estudio comparativo para destacar sus fortalezas y limitaciones. Aprenderá los componentes internos de estas herramientas y cómo puede usarlos para probar su aplicación. Los detalles del estudio y la configuración de la VM con las herramientas se encuentran disponibles en http://bear.cc.gatech.edu/~shauvik/androtest/.

Sus pruebas no son inestables

Alister Scott (automático)

Vínculos: Video, Presentaciones

Las pruebas inestables son las rupturas de cualquier ingeniero de pruebas automatizado. Como alguien (probablemente Alister) dijo una vez: "La locura está ejecutando las mismas pruebas una y otra vez y obtiene resultados diferentes". Las pruebas inestables no causan desesperación, pero tal vez no haya algo así como una prueba inestable o inestable, tal vez debamos mirar este problema a través de una perspectiva diferente. Deberíamos dedicar más tiempo a la creación de sistemas más deterministas y más fáciles de probar que dedicarnos a compilar pruebas resilientes y persistentes. Alister compartirá algunos ejemplos de casos en los que las pruebas pueden mostrar errores reales debajo del sistema y cómo se puede solucionar un problema de pruebas.

Pruebas visuales automatizadas a gran escala

Adam Carmi (aplicación)

Vínculos: Video, Presentaciones

Las pruebas visuales automatizadas son una tendencia emergente importante en la comunidad de desarrolladores y pruebas. En esta charla, aprenderás qué son las pruebas visuales y por qué deberían automatizarse. Analizaremos en detalle algunos de los desafíos tecnológicos relacionados con la automatización de pruebas visuales y mostraremos cómo las herramientas modernas los abordan. Demostraremos las tecnologías de vanguardia que permiten ejecutar pruebas visuales en varios dispositivos y navegadores, y proporcionamos sugerencias clave para tener éxito con pruebas visuales a gran escala.

Pruebas de regresión manuales

Karin Lundberg (Twitter) y Puneet Khanduri (Twitter)

Vínculos: Video, Presentaciones

Tu equipo acaba de terminar una refactorización importante de un servicio, y todas tus pruebas de integración y unidad se aprueban. ¡Buen trabajo! Pero eso no es todo. Ahora debes asegurarte de que no hayas dañado nada y de que no haya errores al azar que no hayas detectado. Es hora de poner a funcionar a Diffy.

A diferencia de las herramientas que garantizan que tu código sea sólido, como las pruebas de unidades o de integración, Diffy compara el comportamiento del servicio modificado mediante la preparación de las instancias del servicio nuevo y el servicio anterior, comparando las solicitudes de ejemplo con cada una, comparando las respuestas y proporciona las regresiones que surgieron a partir de esas comparaciones.

Además, acabamos de comenzar a usar la herramienta de código abierto y rápidamente se está convirtiendo en una de las más populares entre los proyectos de código abierto de Twitter.

Pruebas de accesibilidad automatizadas para aplicaciones de Android

Casey Burhardt (Google)

Vínculos: Video, Presentaciones

En esta charla, se presentarán las principales funciones de accesibilidad de la plataforma de Android y se ilustrarán algunos de los errores comunes de los desarrolladores relacionados con la accesibilidad. Aprenderás sobre el nuevo framework de prueba de accesibilidad de Android y su integración en los frameworks de prueba Espresso y Robolectric. Por último, aprenderás lo fácil que es agregar las verificaciones de accesibilidad automatizadas a tus pruebas de proyecto de Android existentes.

Muestreo de datos estadísticos

Celal Ziftci (Google) y Ben Greenberg (estudiante de posgrado del MIT)

Vínculos: Video, Presentaciones

Es una práctica común usar una muestra de datos de producción en las pruebas. Por ejemplo:

  • Prueba de sanidad: Ingresa una muestra de los datos de producción en tu sistema para ver si algo falla.
  • Prueba A/B: toma una gran parte de los datos de producción, ejecútala en las versiones actuales y nuevas del sistema y diferencia las salidas para la inspección.

Para obtener una muestra de los datos de producción, los equipos suelen usar soluciones ad hoc, como las siguientes:

  • Analizar manualmente la distribución de campos específicos (p.ej., campos numéricos)
  • Elige una muestra totalmente aleatoria

Sin embargo, estos enfoques tienen un inconveniente grave: pueden pasar por alto eventos poco frecuentes (p.ej., casos extremos), lo que aumenta el riesgo de errores no detectados en la producción. Para mitigar este riesgo, los equipos eligen muestras muy grandes. Sin embargo, con esas muestras tan grandes, hay aún más desventajas:

  • Los eventos raros aún pueden perderse,
  • El tiempo de ejecución de las pruebas aumenta considerablemente
  • Las diferencias son demasiado grandes para que las personas las comprendan, y hay muchas repeticiones.

En esta charla, proponemos una nueva técnica de muestreo de datos estadísticos para elegir “de manera inteligente” una muestra “buena” de los datos de producción que:

  • Garantiza que no se pierdan los eventos inusuales,
  • Minimiza el tamaño de la muestra elegida mediante la eliminación de los duplicados.

Nuestra técnica detecta casos excepcionales o de límite, mantiene el tamaño de la muestra al mínimo y disminuye de forma implícita la carga manual de observar las salidas/diferencias de prueba en los desarrolladores. También admite la ejecución paralela (p.ej., MapReduce) para que se puedan procesar grandes cantidades de datos en un período corto a fin de elegir la muestra.

Infraestructura de automatización de Nest

Usman Abdullah (Nest), Giulia Guidi (Nest) y Sam Gordon (Nest)

Vínculos: Video, Presentaciones

La visión de Nest para la Casa Reflexiva implica dispositivos inteligentes interconectados que trabajan juntos para hacer de tu casa un lugar más seguro, más eficiente en términos de energía y más consciente. Esta charla se centrará en la infraestructura de automatización y las herramientas de prueba que se crearon para ayudar a hacer realidad esa visión. Varios equipos de Nest han trabajado en sistemas multiplataforma y de dispositivos o funciones específicas para las pruebas de regresión automatizada y los análisis. Con ejemplos específicos de las pruebas de productos reales, abarcaremos el hardware para todos los productos de la infraestructura de pruebas de bucle y las herramientas de análisis de regresión de energía, junto con conjuntos específicos de herramientas de detección de movimiento y cámara.

Generadores de eventos

Roussi Roussev (Splunk)

Vínculos: Video, Presentaciones

Esta charla aborda nuestras experiencias en el desarrollo y el uso de generadores de eventos de software en Splunk. Inspirados en la física de partículas en la que los generadores de eventos han sido indispensables para comprender el mundo físico sin ejecutar grandes máquinas experimentales, los generadores de registros han mejorado la forma en que probamos nuestras numerosas integraciones con software de terceros moderno y heredado. La charla trata sobre la funcionalidad básica y los desafíos para generar registros realistas.

Síntesis de pruebas multiproceso

Murali Krishna Ramanathan (Indian Institute of Science, Bangalore)

Vínculos: Video, Presentaciones

A menudo, es difícil identificar con precisión los errores de simultaneidad sutiles en las bibliotecas multiproceso que surgen debido a una sincronización incorrecta o inadecuada a través de técnicas estáticas únicamente. Por otro lado, la eficacia de los detectores dinámicos depende de manera crítica de los conjuntos de pruebas multiproceso cuya ejecución se puede usar para identificar y activar errores de simultaneidad, incluidas las carreras de datos, los interbloqueos y las infracciones de atomicidad. Por lo general, estas pruebas de subprocesos múltiples deben invocar una combinación específica de métodos con objetos involucrados en que las invocaciones se compartan de manera adecuada para exponer un error. Sin un conocimiento previo del error, la construcción de tales pruebas puede ser un desafío.

En esta charla, presentaré una técnica liviana y escalable para sintetizar pruebas a fin de detectar incumplimientos de seguridad de subprocesos. Dada una biblioteca de varios subprocesos y un conjunto de pruebas secuenciales, describiré un análisis completamente automatizado que examina seguimientos de ejecución secuenciales y produce como resultado un programa de cliente simultáneo que conduce objetos compartidos a través de llamadas de método de la biblioteca a estados propicios para activar un error de simultaneidad. Los resultados experimentales en una variedad de bibliotecas de Java bien probadas demuestran la efectividad de nuestro enfoque para revelar muchos errores complejos.

Cómo habilitar los experimentos de transmisión en Netflix

Minal Mishra (Netflix)

Vínculos: Video, Presentaciones

La experiencia de transmisión de más de 69 millones de usuarios es de suma importancia para Netflix. Para mejorar rápidamente este proceso, trasladamos los algoritmos de transmisión adaptable a la capa de JavaScript. Esto planteaba un desafío único: lanzar con frecuencia software de JavaScript del cliente que afectaba directamente la experiencia de transmisión del consumidor. Tomamos prestado el paradigma de entrega continua, que se adoptó de manera amplia y exitosa para las aplicaciones de servicio, y lo usamos a fin de retirar el riesgo durante el ciclo de vida de un registro y entregar actualizaciones con frecuencia. En esta charla, describiremos un componente clave de este paradigma para habilitar las actualizaciones de software. Analizaremos el procedimiento de lanzamiento del cliente de JavaScript y las herramientas para comparar con precisión el estado con la versión actual. También compartiremos los desafíos que enfrenta este proceso.

Simular la conexión a Internet

Yabin Kang (LinkedIn)

Vínculos: Video, Presentaciones

Simular Internet y hablar sobre un nuevo sistema ficticio en LinkedIn que ayuda a simular todo el tráfico saliente para las pruebas de integración de nivel de servicio también explicará la descripción general de la estrategia de Simulación de LinkedIn. Comparta el conocimiento y lo que aprendimos con todo el mundo.

Pruebas efectivas de un receptor de estación de monitoreo GPS

Andrew Knodt (Lockheed Martin)

Vínculos: Video, Presentaciones

Las estaciones de supervisión de GPS existentes que utiliza la Fuerza Aérea se volvieron difíciles de mantener y hay un esfuerzo en marcha para reemplazarlas por un enfoque de radio definida por software (SDR) con GPU. Se presentarán una descripción general de los desafíos de prueba exclusivos de este receptor GPS especializado y un análisis de varios enfoques de prueba. Si bien se centran en una aplicación de GPS, estos enfoques de prueba pueden aplicarse fácilmente a otras iniciativas de SDR de nivel de producción.

Automatización en dispositivos wearable

Anurag Routroy (Intel)

Vínculos: Video, Presentaciones

A medida que la tecnología wearable aumenta cada vez más el uso personal y comercial, todas las empresas que disponen de un espacio sólido en el mercado de Android cambiaron su enfoque hacia esta tecnología futura. Por lo tanto, crean sus apps con compatibilidad para wearables, lo que también aumenta el esfuerzo de probarla en dispositivos wearable. Por lo tanto, la automatización en los wearables se vuelve importante para reducir el esfuerzo de las pruebas y aumentar la eficiencia.

Pruebas de integración de infraestructura y IC unificadas (Docker/Vagrant)

Maxim Guenis (supersónico)

Vínculos: Video, Presentaciones

Los desarrolladores tienen dificultades todos los días para tener un entorno de desarrollo local en funcionamiento cuando desarrollen, depuren y pasen por el ciclo de integración continua.Podemos solucionar este problema integrando Docker y vagabundo para usarlo con la herramienta de IC. Esta combinación permite controlar aplicaciones a nivel de la pila en máquinas de desarrollo y usar la misma pila en las pruebas de integración. En esta charla, analizaremos lo siguiente:

  • Uso de Docker en las pruebas de integración de CI
  • Control de pila en lugar de una sola Docker o app
  • Control de versiones de los entornos de desarrollo y de prueba, que se distribuyen fácilmente con las herramientas de git y Docker.
  • Compatibilidad continua para ejecutar Docker en Mac y Windows

Eliminación de bits de prueba inútiles

Patrick Lam (Universidad de Waterloo)

Vínculos: Video, Presentaciones

La especialización de las técnicas de análisis estático de los paquetes de pruebas arrojó resultados interesantes. Anteriormente, aprendimos que la mayoría de las pruebas son código simple y directo, es decir, una secuencia de instrucciones de configuración seguida de una carga útil que consta de aserciones. Mostramos cómo el análisis estático puede identificar declaraciones de configuración inútiles, lo que permite a los desarrolladores simplificar y acelerar sus casos de prueba.

La cobertura no está estrechamente relacionada con la efectividad del conjunto de pruebas

Laura Inozemtseva (Universidad de Waterloo)

Vínculos: Video, Presentaciones

La cobertura de un conjunto de pruebas suele usarse como proxy para detectar fallas. Sin embargo, los estudios anteriores que investigaron la correlación entre la cobertura de código y la efectividad del conjunto de pruebas no lograron un consenso sobre la naturaleza y la fortaleza de la relación entre estas características del conjunto de pruebas. Además, muchos de los estudios se realizaban con programas pequeños o sintéticos, lo que dejaba en claro si sus resultados se generalizaban en programas más grandes, y algunos de ellos no tenían en cuenta la influencia confusa del tamaño del conjunto de pruebas. Ampliamos estos estudios mediante la evaluación de la relación entre el tamaño, la cobertura y la efectividad del conjunto de pruebas para programas Java realistas. Nuestro estudio es el más grande hasta la fecha en la literatura. Medimos la cobertura de la declaración, la cobertura de decisiones y la cobertura de condiciones modificadas de estos paquetes, y usamos pruebas de mutación para evaluar la efectividad de la detección de errores. Descubrimos que existe una correlación baja o moderada entre la cobertura y la eficacia cuando se controla la cantidad de casos de prueba en el paquete. Además, descubrimos que las formas de cobertura más sólidas no proporcionan más información valiosa sobre la efectividad del conjunto de herramientas.

Backends falsos con RpcReplay

Matt Garrett (Google)

Vínculos: Video, Presentaciones

Mantener pruebas rápidas y estables es muy importante. Esto es difícil cuando los servidores dependen de muchos backends. Los desarrolladores deben elegir entre pruebas largas y inestables, o escribir y mantener implementaciones falsas. En cambio, las pruebas se pueden ejecutar mediante el tráfico registrado de estos backends. Esto proporciona lo mejor de ambos mundos, lo que permite a los desarrolladores probar rápidamente backends reales.

Test Lab de automatización de Chrome OS

Simran Basi (Google) y Chris Sosa (Google)

Vínculos: Video, Presentaciones

Actualmente, Chrome OS está enviando más de 60 Chromebooks o cajas diferentes, cada una con su propio software. En el campo, los clientes obtienen un sistema actualizado cada 6 semanas. Esto no sería posible sin un sólido sistema de integración continua que revisa los registros de nuestros más de 200 desarrolladores. En esta charla, describimos la arquitectura general con énfasis específico en nuestro lab de automatización de pruebas. Además, analizaremos Moblab (abreviatura de laboratorio móvil, prueba), toda nuestra infraestructura de automatización de pruebas que se ejecuta desde un solo cuadro multifunción. Muchos de nuestros socios usan este sistema para que ellos también puedan ejecutar pruebas de la manera en que lo hacemos nosotros.