GTAC 2013: presentaciones

Todas las grabaciones y diapositivas de video de GTAC 2013 están disponibles para todos. Puedes verlas en la lista de reproducción de GTAC 2013 en YouTube o explorar las siguientes charlas:

Inicio del discurso de apertura

Tony Voellm (Google)

Vínculos: Video

Discurso de apertura: Evolución de la garantía de calidad a la ingeniería de pruebas

Ari Shamash (Google)

Compilaste una app y la iniciaste. Suponga que podría lograrlo, aumentar su volumen, obtener financiación, deshacerse de él y, luego, comenzar desde cero para poder hacerlo de manera correcta. Pero las demandas de nuevos atributos son completamente altas, ahora se les pide que se adopten hacia una escala sin precedentes a una velocidad sin precedentes. ¡Ouch! ¿Cuál es el próximo paso?

No puedes deshacerte de ellos y comenzar de cero. Solo debes desarrollar lo que tienes y agregar funciones de alta calidad a una velocidad impresionante. Además, debes asegurarte de que lo que ya está ahí no se rompa. ¿Cómo lo haces? Afortunadamente, se está creando un nuevo campo dentro de la industria de la ingeniería de software que aborda esta situación común: en Google lo llamamos "ingeniería de prueba".

Esta charla se centrará en qué es la ingeniería de prueba, cómo evolucionó a partir del control de calidad y cómo la industria en general implementó la ingeniería de prueba (con ejemplos específicos de cómo se implementa en Google).

Vínculos: Video, Presentaciones

Pruebas de los sistemas a gran escala en @Twitter

James Waldrop (Twitter)

James hablará sobre las herramientas, el proceso y la filosofía que se usan para probar el rendimiento en Twitter. Se pondrá especial énfasis en la biblioteca de prueba de carga de código abierto de Iago, que escribió para permitir que los equipos de ingeniería de Twitter realicen pruebas de carga antes de implementar código en producción. En esta charla, se analizarán en detalle los detalles de la implementación de algunas de estas pruebas (incluido el código fuente) y se explica cómo se manejan los factores complicados, como OAuth y los protocolos arbitrarios de Thrift.

Vínculos: Video, Presentaciones

¿Cómo se prueba un SO para dispositivos móviles?

David Burns (Mozilla) y Malini Das (Mozilla)

Este es el problema que enfrentaba Mozilla cuando decidimos aventurarnos en el mundo de FirefoxOS. Dónde comenzar y cómo hacerlo iba a ser una tarea interesante. Descubre cómo resolvimos este problema y cómo creamos un marco de trabajo nuevo.

Vínculos: Video, Presentaciones

Automatización de dispositivos móviles en la canalización de entrega continua

Igor Dorovskikh (Expedia) y Kaustubh Gawande (Expedia)

Expedia comenzó a invertir en la Web móvil y las aplicaciones para iOS y Android a principios de 2012. Al mismo tiempo, los ingenieros de pruebas comenzaron a desarrollar soluciones de automatización de pruebas para crear calidad y capacidad de prueba en los productos desde el principio. En esta charla, compartiremos nuestra experiencia y aprendizaje sobre el uso de herramientas de código abierto para crear pruebas automatizadas en el entorno de desarrollo ágil y entrega continua de Expedia. Hablaremos sobre la pirámide de pruebas y analizaremos en detalle herramientas específicas de código abierto que nos han funcionado. Algunas de las herramientas de código abierto que usamos son las herramientas de BDD, como Cucumber, la herramienta de automatización web Selenium-WebDriver, la herramienta de automatización de iOS Frank, las herramientas de automatización de Android, Robotium y Calabash, y el sistema de integración continua Jenkins. Además, compartiremos algunos de los principios de entrega ágil que nos esforzamos por adoptar, como la TDD, la programación de parejas, la compilación y la prueba de radiadores. Por último, compartiremos algunos de los beneficios que obtuvimos de nuestra inversión en Agile y en la automatización de pruebas, y cómo nos permiten alcanzar nuestros objetivos de entrega continua.

Vínculos: Video, Presentaciones

Pruebas de decodificador automatizadas con GStreamer y OpenCV

David Röthlisberger (YouView)

Crearemos un sistema de reconocimiento de imágenes con captura de video en 3 minutos, mediante las herramientas de línea de comandos de GStreamer y OpenCV. (GStreamer es un framework de manejo de contenido multimedia de código abierto; OpenCV, "Open Computer Vision", es una biblioteca de procesamiento de imágenes de código abierto).

Un ejemplo líder de este sistema es http://stb-tester.com, una herramienta de código abierto desarrollada en YouView para automatizar las pruebas de IU de nuestros decodificadores. Describiremos la herramienta de pruebas de Stb-Tester, la flexibilidad que ofrecen los fundamentos de GStreamer, algunas de las posibilidades que presenta y los desafíos que se acercan.

Vínculos: Video

WebDriver para Chrome

Ken Kania (Google)

Desde sus inicios como navegador solo para Windows, Chrome se expandió a Mac, Linux, ChromeOS y, más recientemente, a iOS y Android. La prueba a nivel de usuario de las aplicaciones web en estas plataformas ha sido difícil y requería varios enfoques de automatización. En esta charla, se describe el trabajo que realiza el equipo de Chrome para que WebDriver esté disponible en Chrome en todas las plataformas. Esto incluirá una vista técnica del enfoque subyacente, pero se centrará en cómo los desarrolladores pueden usar el nuevo ChromeDriver para escribir pruebas en las distintas plataformas de Chrome. También se cubrirán el estado actual del proyecto y una hoja de ruta para su futuro.

Vínculos: Video, Presentaciones

Karma, ejecutor de pruebas para JavaScript

Vojta Jina (Google)

Introducción a Karma, un ejecutor de pruebas que facilita y disfruta la prueba de aplicaciones de JavaScript en navegadores reales.

Las pruebas no son opcionales cuando se compila una aplicación de JavaScript que debe funcionar en muchos navegadores y dispositivos. Sin embargo, ejecutar pruebas en todos estos entornos es difícil. Karma convierte esta tarea típica en una tarta. Te permite ejecutar pruebas de JavaScript en navegadores o dispositivos reales, como tu teléfono o tablet, directamente desde la comodidad de tu terminal o tu IDE favorito.

Vínculos: Video

Mediciones automatizadas de calidad de video

Patrik Höglund (Google)

Sí, es posible probar automáticamente mediciones subjetivas y complejas, como la calidad de video. Esta charla mostrará cómo construimos una prueba automatizada y continua de extremo a extremo de una videollamada de WebRTC. Hablaremos sobre la cadena de herramientas a nivel general y los desafíos a los que nos enfrentamos durante la construcción. Esto es perfecto si desea obtener inspiración para llevar sus pruebas de medios al siguiente nivel.

Vínculos: Video, Presentaciones

Cuando suceden cosas malas a las buenas aplicaciones...

Minal Mishra (Netflix)

El auge de la computación en dispositivos móviles y tablets inunda la industria del software con plataformas de desarrollo de aplicaciones. El desarrollo de aplicaciones para consumidores en plataformas informáticas tiene su propia experiencia mágica para los usuarios finales. Las empresas de software orientadas al consumidor siempre intentan dar una buena impresión cuando desarrollan una aplicación para estas plataformas. Sin embargo, el mayor desafío en el desarrollo de aplicaciones solo comienza después de que las empresas lanzan la primera versión de la aplicación. Los consumidores y las empresas de software quieren que las funciones y funcionalidades más recientes salgan del desarrollo lo antes posible y con la mejor calidad. Esto produce una deserción de código constante en cada capa de la pila. Nosotros, los ingenieros de automatización de la IU, creamos una variedad de sistemas de detección para detectar problemas de las aplicaciones lo antes posible. En esta charla, compartiré algunos de nuestros desafíos y éxitos detrás de uno de esos sistemas de detección que nos ayudaron a encontrar problemas fuera de la capa de la aplicación, pero que igualmente afectaron negativamente la experiencia del usuario.

Vínculos: Video, Presentaciones

Pruebas para juegos educativos y videojuegos educativos para realizar pruebas

Tao Xie (Universidad Estatal de Carolina del Norte)

Esta charla presenta a Pex4Fun (http://www.pexforfun.com/), que aprovecha la generación de pruebas automatizada para respaldar las calificaciones automáticas en un sistema de programación en línea que se puede escalar a cientos de miles de usuarios. Proporciona una experiencia de videojuegos orientada a la programación fuera del aula, que permite a los usuarios aprender varias habilidades de programación e ingeniería de software, incluidas las de prueba, como la escritura de pruebas de unidades parametrizadas. Pex4Fun contribuye de forma significativa al problema conocido de la calificación de tareas y brinda una experiencia de aprendizaje divertida basada en juegos interactivos. Pex4Fun se ha vuelto muy popular en la comunidad: desde que se lanzó al público en junio de 2010, la cantidad de clics del botón "Preguntar a Pex" (que indica los intentos realizados por los usuarios para resolver juegos en Pex4Fun) ha llegado a más de un millón a principios de 2013.

Vínculos: Video, Presentaciones

Discurso de apertura: Cómo Facebook prueba Facebook en Android

Simon Stewart (Facebook)

Facebook es una de las aplicaciones de Android más populares que existen. En esta charla, descubrirás qué hace Facebook para garantizar que cada versión sea lo mejor posible. Abarcaremos todo, desde cómo administramos nuestro código, desde nuestros enfoques hasta las pruebas y desde la etapa de pruebas internas.

Vínculos: Video, Presentaciones

Discurso de apertura: JavaScript comprobable: Diseña la aplicación para la capacidad de prueba

Mark Trostler (Google)

JavaScript es un proceso que se puede probar. Ya sea que comiences con una pizarra en blanco o una aplicación ya implementada (o una que esté en el medio), poder probar tu código JavaScript de forma sencilla, limpia y eficaz. Se reescribirá el código que no se pueda probar.

Si bien JavaScript es único debido a la gran cantidad de entornos en los que se ejecuta, existen varias metodologías "verificables" de otros lenguajes que también son verdaderas para JavaScript. Y, por supuesto, siguen existiendo los desafíos únicos que los desarrolladores de JavaScript deben enfrentar cuando escriben y prueban su código.

¿Qué patrones hacen que el código se pueda probar? ¿Qué antipatrones dificultan las pruebas? ¿Qué métricas y guías de sentido común se pueden usar para medir la capacidad de prueba de nuestro código? ¿Qué es lo que comenzó el proceso de crear código que se puede probar?

Acompáñame a analizar el proceso de escritura de JavaScript que se puede probar. Investigaremos las ideas, los patrones y las metodologías que aumenten en gran medida la capacidad de prueba y, por lo tanto, la capacidad de mantenimiento, corrección y longevidad de tu código. Ya sea que escribas en JavaScript del cliente o del servidor, este proceso mejorará en gran medida la calidad de tu código.

Vínculos: Video, Presentaciones

Breaking the Matrix: pruebas de Android a gran escala

Thomas Knych (Google), Stefan Ramsauer (Google) y Valera Zakharov (Google)

¿Todo listo para tomar la píldora roja?

Los dispositivos móviles cambiaron el modo en que las personas interactúan con las computadoras. Esto es genial, pero, como ingenieros, nos encontramos con una matriz de entornos en constante crecimiento en la que se ejecuta nuestro código. No han vuelto los días en los que se había tenido en cuenta solo unos pocos navegadores y resoluciones de pantalla. ¿Qué pueden hacer los ingenieros para lidiar con Matrix? Explicaremos cómo Google combate este problema de las pruebas en las estaciones de trabajo, en la nube y en su cabeza...

“Intento liberar tu mente, Neo. Pero solo puedo mostrarte la puerta. Tú eres quien tiene que superarlo".

Vínculos: Video, Presentaciones

Automatización de la IU de Android

Guang Zhu (朱光) (Google) y Adam Momtaz (Google)

A medida que Android se hace más popular en el mundo de los dispositivos móviles, los desarrolladores de aplicaciones y proveedores de OEM están explorando formas de realizar pruebas de aplicaciones de extremo a extremo basadas en la IU o de toda la plataforma. Con una revisión breve de las soluciones de automatización de IU existentes en Android, en esta charla se presenta el framework de IU de Android lanzado recientemente y se sigue proporcionando información detallada sobre el framework, los casos de uso típicos y los flujos de trabajo.

Vínculos: Video, Presentaciones

Appium: Automatización para aplicaciones móviles

Jonathan Lipps (Sauce Labs)

Appium es un servidor de Node.js que automatiza aplicaciones nativas y híbridas para dispositivos móviles (iOS y Android). La filosofía de Appium determina que las apps no deben modificarse para automatizarse, y que debes poder escribir el código de prueba en cualquier lenguaje o framework. El resultado es un servidor Selenium WebDriver que habla en dispositivos móviles como un nativo. Appium se ejecuta en emuladores y dispositivos reales, y es completamente de código abierto, lo que lo convierte en una forma excelente de comenzar a usar la automatización de pruebas en dispositivos móviles. En esta charla, describiré los principios que rigen el diseño de Appium, hablaremos sobre Appium en el espacio de otros frameworks de automatización para dispositivos móviles y presentaremos la arquitectura que hace realidad la magia. Por último, analizaremos el código con el fin de realizar una prueba sencilla de una nueva app para dispositivos móviles y demostrarle a Appium cómo ejecutar esta prueba en iPhone y Android.

Vínculos: Video, Presentaciones

Cómo crear infraestructura escalable de pruebas para dispositivos móviles para Google+ para dispositivos móviles

Eduardo Bravo (Google)

Probar las aplicaciones nativas de manera significativa, estable y escalable es un desafío. G+ ha desarrollado soluciones eficientes para resolver estos problemas al proporcionar la infraestructura adecuada para cada una de las situaciones de prueba complejas que presentan los dispositivos móviles. Nuestra infraestructura de pruebas actual proporciona las herramientas adecuadas a las apps para iOS y Android a fin de darle a nuestro equipo de desarrollo la seguridad de que los cambios nuevos no afectarán a los clientes existentes.

Vínculos: Video, Presentaciones

Espresso: Inicio nuevo a las pruebas de IU de Android

Valera Zakharov (Google)

Actualización [octubre de 2013]: Espresso ahora es de código abierto. Consulta https://code.google.com/p/android-test-kit/.

Desarrollar una prueba confiable de Android debería ser tan rápido y fácil como tomar una dosis de expreso. Lamentablemente, con las herramientas existentes, es posible que parezca más complicado preparar una salsa doble de caramelo, al revés, solo con látigo, confundido y poco convencional. Espresso es un nuevo framework de prueba de Android que te permite escribir rápidamente pruebas de IU concisas, hermosas y confiables. La API principal es pequeña, predecible y fácil de aprender, pero también está abierta para la personalización. Las pruebas de Espresso establecen sus expectativas, interacciones y aserciones con claridad sin distraer a los estándares, la infraestructura personalizada ni los desordenados detalles de implementación que obstaculizan la experiencia. Las pruebas se ejecutan de manera óptima: deja atrás las esperas, las sincronizaciones, las suspensiones y las encuestas, y deja que el framework manipule y confirme tu IU sin inconvenientes cuando esté en reposo. Comienza a disfrutar de escribir y ejecutar pruebas de IU. Prueba una toma de Espresso.

Vínculos: Video, Presentaciones

Pruebas de rendimiento web con WebDriver

Michael Klepikov (Google)

En las pruebas de rendimiento web, sabemos bastante bien cómo analizar la carga de una página. Sin embargo, debemos ir más allá de la carga de la página: las apps modernas son muy interactivas y las operaciones no suelen volver a cargar toda la página, sino actualizarla. Varias personas, yo misma, integré WebDriver a arneses para pruebas de rendimiento web, lo cual es útil, pero mantiene las pruebas de rendimiento separadas del resto del paquete de pruebas de IU. Propongo incorporar funciones de prueba de rendimiento en WebDriver por medio de la API de Logging que se agregó recientemente. Esto permite recopilar métricas de rendimiento mientras se ejecutan pruebas funcionales regulares, lo que permite una integración mucho más fluida de las pruebas de rendimiento en el flujo general de desarrollo y pruebas. Además, es mucho menos perjudicial para las cadenas de herramientas de compilación y prueba personalizadas que crea casi cualquier organización grande.

Voy a demostrarlo con el ChromeDriver de nueva generación (WebDriver para el navegador Chromium).

Vínculos: Video, Presentaciones

Pruebas continuas de datos de Maps

Yvette Nameth (Google) y Brendan Dhein (Google)

Por lo general, las pruebas continuas se centran en ejecutar pruebas de unidades y de integración. Pero cuando los datos que procesa su servidor son, en realidad, la mayor causa de los cambios, ¿cómo se asegura de que los consumidores de los datos sigan utilizándolos y que nada falle con la frecuencia de cambio o un cambio incorrecto? Analizaremos técnicas para realizar pruebas de datos continuas con ejemplos de Google Maps.

Vínculos: Video, Presentaciones

Encontrar culpas automáticamente en compilaciones fallidas - es decir, ¿Quién rompió la compilación?

Celal Ziftci (UCSD) y Vivek Ramavajjala (Google)

La compilación continua es una de las infraestructuras clave de Google. Cuando una compilación falla, es fundamental identificar rápidamente la lista de cambios responsable de cambios o las listas de cambios a fin de corregirla para que vuelva a ser verde.

Existen soluciones de detección de culpabilidad para compilaciones pequeñas y medianas, pero no para compilaciones de integración grandes.

Nuestro buscador de culpables busca encontrar automáticamente el culpable de CL para grandes compilaciones, en un plazo muy corto de alto éxito. En función del uso de producción en varios proyectos de los últimos 9 meses, el buscador de culpables proporciona resultados muy prometedores. Ven a hablar con nosotros para ver cómo implementamos el buscador de culpables, qué tan exitoso es en producción y cómo se ve.

Vínculos: Video, Presentaciones

Investigación empírica de la calidad de líneas de productos de software

Katerina Goseva-Popstojanova (Universidad de Virginia Occidental)

Las líneas de productos de software muestran un alto grado de común entre los sistemas de la línea de productos y un número bien especificado de variaciones posibles. Sobre la base de los datos extraídos de dos casos de éxito: una línea de productos industrial de tamaño mediano y una gran línea de productos de código abierto en evolución, exploramos empíricamente si la reutilización sistemática mejora la calidad y respalda la predicción exitosa de fallas futuras a partir de fallas experimentadas con anterioridad, métricas del código fuente y métricas de cambios. En los resultados de una investigación, al confirmar la configuración de una línea de productos de software, los hallazgos de otros que se relacionan con los errores se relacionan más con las métricas de cambio que con las métricas estáticas. Los resultados de la evaluación de calidad mostraron que, aunque los paquetes anteriores (incluidas las similitudes) cambiaban continuamente, conservan bajas densidades de error. Además, la línea de productos de código abierto mejoró la calidad a medida que evolucionó a través de los lanzamientos. La predicción basada en modelos de regresión lineal generalizados clasificó con precisión los paquetes según sus fallas posteriores al lanzamiento con los modelos compilados en la versión anterior. Los resultados también revelaron que las predicciones de errores posteriores al lanzamiento se benefician de información adicional de la línea de productos.

Vínculos: Video, Presentaciones

AddressSanitizer, ThreadSanitizer y MemorySanitizer: herramientas de prueba dinámica para C++

Kostya Serebryany (Google)

AddressSanitizer (ASan) es una herramienta que encuentra errores de desbordamiento de búfer (en pila, pila y globales) y errores de uso después de liberación en programas C/C++. ThreadSanitizer (TSan) encuentra carreras de datos en los programas C/C++ y Go. MemorySanitizer (MSan) es una herramienta de trabajo en curso que encuentra usos de memoria no inicializada (C++). Estas herramientas se basan en la instrumentación de compiladores (LLVM y GCC), lo que las hace muy rápidas (p.ej., ASan genera solo 2 veces más lento). Compartiremos nuestra experiencia en pruebas a gran escala con estas herramientas.

Vínculos: Video, Presentaciones

Discurso de apertura: Beber el océano: encontrar XSS en Google Scale

Claudio Criscione (Google)

La secuencia de comandos entre sitios, o XSS, es el equivalente moderno de la peste negra de la Edad Media en el mundo de las aplicaciones web: es generalizado, no es bueno y existen pocas o ninguna manera técnica de detectarlo hasta que es demasiado tarde. DOM XSS es una variante particularmente desagradable, ya que se necesita un navegador real o un equivalente para ser detectado: un problema difícil con poca solución automatizada disponible.

Necesitábamos herramientas potentes y autónomas para identificar el XSS de DOM al principio del ciclo de vida de desarrollo, que los ingenieros fuera del equipo de seguridad pudieran usar: todo lo que queríamos era un producto que pudiera escanear nuestro enorme corpus de aplicaciones, de gran velocidad y con movimientos rápidos arquitectónicos... y, por supuesto, no encontramos ninguno. Por ello, creamos uno propio: un escáner de aplicaciones web dirigido a un XSS de DOM diseñado sobre las tecnologías estándar de Google. Se ejecuta en App Engine y aprovecha el potente navegador Chrome y algunos cientos de CPU como plataforma de análisis de seguridad.

También es un buen ciudadano del arsenal de pruebas de Google: se encuentra dentro de nuestra infraestructura de pruebas, en lugar de ser el instrumento del equipo de seguridad.

En esta charla, describimos nuestro enfoque novedoso, los desafíos que afrontamos al escalar nuestro sistema al tamaño de Google y las ideas detrás de nuestros modelos de detección y rastreo en aplicaciones de uso intensivo de JavaScript.

Vínculos: Video, Presentaciones