GTAC 2013: apresentações

Todas as gravações de vídeo e slides do GTAC 2013 estão disponíveis ao público. Assista esses vídeos na playlist do YouTube de 2013 do GTAC (em inglês) ou confira as palestras abaixo:

Comentários de abertura

Tony Voellm (Google)

Links: vídeo

Abordagem de abertura - Evolução do controle de qualidade para engenharia de teste

Ari Shamash (Google)

Você criou um app e o lançou. Você imaginou que conseguiria isso, aumentaria o volume, financiaria, descartaria tudo e começaria do zero para poder "fazer isso do jeito certo". No entanto, a demanda por novos recursos está alta, e agora você está sendo solicitado a avançar em uma escala sem precedentes a uma velocidade inédita. Opa! E agora?

Não é possível jogá-lo fora e começar do zero. Você só precisa evoluir o que tem, sem deixar de adicionar recursos de alta qualidade a uma velocidade incrível. Além disso, você precisa garantir que o que já está lá não apresente falhas. Como fazer isso? Felizmente, há um novo campo formado no setor de engenharia de software que aborda esse cenário comum: no Google, chamamos isso de "engenharia de teste".

Esta palestra se concentrará no que é a engenharia de testes, como ela evoluiu do controle de qualidade e como a indústria como um todo a implementou (com exemplos específicos de como ela é implementada no Google).

Links: Vídeo, Apresentações

Teste de sistemas em grande escala no Twitter

James Waldrop (Twitter)

James falará sobre as ferramentas, o processo e a filosofia que serão abordados nos testes de desempenho no Twitter. Há uma ênfase especial na biblioteca de teste de carga de código aberto Iago, que foi escrita para permitir que as equipes de engenharia do Twitter realizem testes de carga antes de implantar o código na produção. A palestra abordará os detalhes da implementação de alguns desses testes (incluindo o código-fonte) e como os fatores complicadores, como o OAuth e os protocolos arbitrários do Thrift, são gerenciados.

Links: Vídeo, Apresentações

Como testar um sistema operacional móvel?

David Burns (Mozilla) e Malini Das (Mozilla)

Esse é o problema que a Mozilla enfrentava quando decidimos entrar no mundo do FirefoxOS. Por onde começar e como fazer isso seria uma tarefa interessante. Venha ouvir como resolvemos esse problema e como criamos uma nova estrutura.

Links: Vídeo, Apresentações

Automação de dispositivos móveis no pipeline de entrega contínua

Igor Dorovskikh (Expedia) e Kaustubh Gawande (Expedia)

A Expedia começou a investir em aplicativos da Web para dispositivos móveis e iOS/Android no início de 2012. Ao mesmo tempo, os engenheiros de teste começaram a desenvolver soluções de automação de teste para aumentar a qualidade e a capacidade de teste dos produtos desde o início. Nesta palestra, compartilharemos nossa experiência e aprendizado de como usar ferramentas de código aberto para criar testes automatizados no ambiente de desenvolvimento ágil e entrega contínua da Expedia. Falaremos sobre a pirâmide de testes e nos aprofundaremos nas ferramentas específicas de código aberto que funcionaram bem para nós. Algumas das ferramentas de código aberto que usamos são o BDD, como Cucumber, a ferramenta de automação da Web Selenium-WebDriver, a ferramenta de automação do iOS Frank, as ferramentas de automação do Android Robotium e Calabash e o sistema de integração contínua Jenkins. Além disso, vamos compartilhar alguns dos princípios de entrega Agile que nos esforçamos para adotar, como TDD, Programação de pareamento, Radiadores de teste e de criação. Por fim, compartilharemos alguns dos benefícios que obtivemos com nosso investimento em Agile e automação de testes e como isso está nos levando às nossas metas de Entrega Contínua.

Links: Vídeo, Apresentações

Teste automatizado de conversor com GStreamer e OpenCV

David Röthlisberger (YouView)

Construiremos um sistema de reconhecimento de imagem de captura de vídeo em três minutos, usando as ferramentas de linha de comando do GStreamer e o OpenCV. O GStreamer é uma estrutura de manipulação de mídia de código aberto. O OpenCV Computer Vision é uma biblioteca de processamento de imagens de código aberto.

Um exemplo líder desse tipo de sistema é o http://stb-tester.com, uma ferramenta de código aberto desenvolvida no YouView para automatizar os testes de IU de nossos conversores. Descreveremos o testador de stb, a flexibilidade oferecida por suas bases do GStreamer, algumas das possibilidades abertas e os desafios pela frente.

Links: vídeo

Webdriver para Chrome

Ken Kania (Google)

Desde o início, como apenas um navegador Windows, o Chrome foi expandido para Mac, Linux, ChromeOS e, mais recentemente, para Android e iOS. Os testes no nível do usuário dos aplicativos da Web nessas plataformas foram difíceis e precisaram de várias abordagens de automação. Esta palestra descreve o trabalho que a equipe do Chrome está fazendo para disponibilizar o WebDriver para o Chrome em todas as plataformas. Isso inclui uma perspectiva técnica da abordagem subjacente, mas se concentra em como os desenvolvedores podem usar o novo ChromeDriver para criar testes para as várias plataformas do Chrome. Além disso, serão abordados o estado atual do projeto e um roteiro para o futuro dele.

Links: Vídeo, Apresentações

Karma - Test Runner para JavaScript

Vojta Jina (Google)

Introdução ao Karma - executor de testes que torna os testes de aplicativos JavaScript em navegadores reais fáceis e agradáveis.

O teste não é opcional quando se está criando um aplicativo JavaScript que deve funcionar em muitos navegadores e dispositivos. No entanto, é difícil executar testes em todos esses ambientes. Karma transforma essa tarefa tipicamente difícil em um pedaço de bolo. Ele permite que você execute testes de JavaScript em navegadores ou dispositivos reais, como seu telefone ou tablet, diretamente do conforto de seu terminal ou de seu IDE favorito.

Links: vídeo

Avaliações automatizadas de qualidade de vídeo

Patrik Höglund (Google)

Sim, é possível testar automaticamente medições subjetivas e complexas, como a qualidade do vídeo. Esta palestra mostra como construímos um teste contínuo e automatizado de ponta a ponta de uma vídeo chamada de WebRTC. Vamos analisar a cadeia de ferramentas em alto nível e os desafios que enfrentamos durante a construção dela. Isso é perfeito para quem quer inspiração e como elevar o nível dos testes de mídia.

Links: Vídeo, Apresentações

Quando coisas ruins acontecem com bons aplicativos...

Minal Mishra (Netflix)

O boom da computação em smartphones e tablets inundou o setor de software com plataformas de desenvolvimento de aplicativos. O desenvolvimento de aplicativos para o consumidor em plataformas de computação tem uma experiência mágica para os usuários finais. As empresas de software voltadas para o consumidor sempre tentam se destacar quando desenvolvem um aplicativo para essas plataformas. No entanto, o maior desafio no desenvolvimento de aplicativos só começa depois que as empresas lançam a primeira versão do aplicativo. Os consumidores e as empresas de software querem os recursos e as funcionalidades mais recentes o mais rápido possível com a melhor qualidade. Isso leva à rotatividade constante do código em todas as camadas da pilha. Nós, engenheiros de automação de IU, criamos uma série de sistemas de detecção para detectar problemas em aplicativos com antecedência. Nesta palestra, compartilharei alguns de nossos desafios e sucessos por trás desse sistema de detecção, que ajudou a encontrar problemas fora da camada de aplicativos, mas que ainda assim afetaram negativamente a experiência do usuário.

Links: Vídeo, Apresentações

Testes para jogos educacionais e para jogos educacionais

Tao Xie (Universidade do Estado da Carolina do Norte)

Esta palestra apresenta a Pex4Fun (http://www.pexforfun.com/), que aproveita a geração automatizada de testes para sustentar a avaliação automática em um sistema de programação on-line que pode ser escalonado para centenas de milhares de usuários. Ele oferece uma experiência de jogos orientada para programação fora da sala de aula, treinando os usuários para aprender várias habilidades de programação e engenharia de software, incluindo a criação de testes de unidade parametrizados. A Pex4Fun é uma contribuição significativa para o problema conhecido da atribuição de notas e oferece uma experiência de aprendizado divertida baseada em jogos interativos. O Pex4Fun tem ganhado muita popularidade na comunidade: desde que foi lançado ao público em junho de 2010, o número de cliques do botão "Ask Pex!" (indicando as tentativas dos usuários de resolver jogos no Pex4Fun) atingiu mais de um milhão de vezes no início de 2013.

Links: Vídeo, Apresentações

Palestra de abertura: como o Facebook testa o Facebook no Android

Simon Stewart (Facebook)

O Facebook é um dos aplicativos Android mais populares que existem. Nesta palestra, você descobrirá o que o Facebook faz para garantir que cada versão seja a melhor possível. Abordaremos tudo, desde como gerenciamos nosso código até abordagens de teste e dogfood.

Links: Vídeo, Apresentações

Abertura da palestra - JavaScript testável - Como arquitetar seu aplicativo para capacidade de teste

Mark Trostler (Google)

O JavaScript testável é um processo. Se é necessário começar com uma folha em branco ou um aplicativo já implementado (ou em algum lugar intermediário), a capacidade de testar o código JavaScript de forma simples, limpa e eficaz é um recurso necessário. O código que não puder ser testado será reescrito.

Embora o JavaScript seja único devido à infinidade de ambientes em que é executado, há diversas metodologias "testáveis" testadas e verdadeiras de outras linguagens que também são verdadeiras para JavaScript. E, claro, ainda existem os desafios exclusivos que os desenvolvedores de JavaScript enfrentam ao escrever e testar seus códigos.

Quais padrões tornam o código testável? Quais antipadrões impedem os testes? Quais métricas e indicadores de bom senso podem ser usados para medir a capacidade de teste do nosso código? Agora que o processo de criação de código testável foi iniciado, o que isso significa?

Junte-se a mim para detalhar o processo de criação de JavaScript testável. Investigaremos ideias, padrões e metodologias que aumentam muito a capacidade de teste e, portanto, a manutenção, a exatidão e a longevidade de seu código. Se você escrever em JavaScript no lado do cliente ou do servidor, esse processo melhorará muito a qualidade do seu código.

Links: Vídeo, Apresentações

Quebrando a matriz - testes do Android em grande escala

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

Você está pronto para tomar o comprimido vermelho?

Os dispositivos móveis mudaram a forma com que as pessoas interagem com computadores. Isso é ótimo, mas, como engenheiros, estamos enfrentando uma matriz cada vez maior de ambientes em que o código é executado. Os dias em que apenas alguns navegadores e resoluções de tela não são mais considerados. Como os engenheiros podem lidar com a matriz? Veremos como o Google está enfrentando esse problema de teste em estações de trabalho, na nuvem e na sua cabeça...

"Estou tentando libertar sua mente, Neo. Mas só posso mostrar a porta. É você quem tem que dar uma olhada."

Links: Vídeo, Apresentações

Automação da IU do Android

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

À medida que o Android ganha popularidade no mundo móvel, os desenvolvedores de aplicativos e os fornecedores de OEM estão explorando maneiras de executar testes de interface de usuário completos para aplicativos ou toda a plataforma. Com uma breve revisão das soluções de automação de IU existentes no Android, esta palestra apresenta a biblioteca Android UI Automator recém-lançada e continua a apresentar uma visão geral da estrutura, dos casos de uso típicos e dos fluxos de trabalho.

Links: Vídeo, Apresentações

Appium: automação de aplicativos para dispositivos móveis

Jonathan Lipps (Laboratórios de molho)

O Appium é um servidor Node.js que automatiza aplicativos nativos e híbridos para dispositivos móveis (iOS e Android). A filosofia do Appium determina que os aplicativos não devem ser modificados para serem automatizados e que você deve ser capaz de escrever o código de teste em qualquer linguagem ou framework. O resultado é um servidor WebDriver Selenium que fala celular como um nativo. O Appium é executado em dispositivos e emuladores reais e tem o código totalmente aberto, o que o torna uma maneira maravilhosa de começar a automação de testes para dispositivos móveis. Nesta palestra, descreverei os princípios que informam o design do Appium, falarei sobre o Appium no espaço de outras estruturas de automação móvel e apresentarei a arquitetura que faz a mágica acontecer. Por fim, vou analisar o código para um teste simples de um app para dispositivos móveis totalmente novo e demonstrar o Appium executando esse teste no iPhone e no Android.

Links: Vídeo, Apresentações

Como criar uma infraestrutura de teste para celular escalonável para o Google+ Mobile

Eduardo Bravo (Google)

Testar aplicativos nativos de maneira significativa, estável e escalonável é um desafio. O Google+ desenvolveu soluções eficientes para lidar com esses problemas, fornecendo a infraestrutura certa para cada um dos cenários complexos de teste apresentados pelos dispositivos móveis. Nossa infraestrutura de teste atual fornece as ferramentas certas para aplicativos iOS e Android para dar à nossa equipe de desenvolvimento a confiança de que novas alterações não prejudicarão os clientes existentes.

Links: Vídeo, Apresentações

Espresso: novo teste de IU para Android

Valera Zakharov (Google)

Atualização [outubro de 2013]: o Espresso agora tem código aberto. Consulte https://code.google.com/p/android-test-kit/.

Desenvolver um teste Android confiável deve ser tão rápido e fácil quanto fazer uma dose de café expresso. Infelizmente, com as ferramentas existentes, pode parecer mais do que fazer duas cenas, duas ou duas vezes, um molho de caramelo-molho de cima para baixo, o que é confuso e raramente consistente. O Espresso é um novo framework de testes do Android que permite criar testes de IU concisos, bonitos e confiáveis rapidamente. A API principal é pequena, previsível e fácil de aprender, mas também está aberta para personalização. Os testes do Espresso declaram expectativas, interações e declarações de forma clara, sem atrapalhar os detalhes padrão, a infraestrutura personalizada ou os detalhes confusos de implementação. Os testes são executados de maneira ideal: deixe suas esperas, sincronizações, suspensão e enquetes para trás e deixe o framework manipular e confirmar sua interface do usuário quando estiver imóvel. Comece a gostar de programar e executar testes de IU. Tente uma sequência do Espresso.

Links: Vídeo, Apresentações

Teste de desempenho na Web com WebDriver

Michael Klepikov (Google)

Nos testes de desempenho na Web, sabemos muito bem como analisar o carregamento de uma página. No entanto, precisamos ir além do carregamento de página: os apps modernos são altamente interativos, e as operações tendem a não recarregar a página inteira, mas a atualizar. Pessoas diferentes, inclusive eu, integrei o WebDriver aos arcabouços de testes de desempenho da Web, o que ajuda, mas ainda mantém os testes de desempenho separados do restante do conjunto de testes de IU. Proponho criar recursos de teste de desempenho diretamente no próprio WebDriver, aproveitando a recém-adicionada API Logging. Isso possibilita a coleta de métricas de desempenho durante a execução de testes funcionais regulares, permitindo uma integração muito mais integrada dos testes de desempenho no fluxo geral de desenvolvimento e teste. Ele também é muito menos disruptivo aos conjuntos de ferramentas de compilação/teste personalizados que quase todas as grandes organizações criam.

Demonstrarei isso com o ChromeDriver de nova geração (WebDriver para o navegador Chromium).

Links: Vídeo, Apresentações

Teste de dados contínuos no Google Maps

Yvette Nameth (Google) e Brendan Dhein (Google)

O teste contínuo geralmente envolve a execução de testes de unidade e integração. Mas quando os dados que seu servidor processa são, na verdade, a maior causa de mudança, como garantir que os consumidores dos dados ainda os considerem úteis e que nada falhe sob a taxa de alteração ou uma alteração ruim? Discutiremos técnicas para testes contínuos de dados com exemplos do Google Maps.

Links: Vídeo, Apresentações

Como encontrar os culpados automaticamente em construções que falharam. Por exemplo, quem quebrou a construção?

Celal Ziftci (UCSD) e Vivek Ramavajjala (Google)

A criação contínua é uma das principais infraestruturas do Google. Quando uma versão falha, é fundamental identificar rapidamente a lista de alterações/CLC para que ela possa ser corrigida para que fique verde novamente.

Existem soluções de detecção de culpado para versões pequenas e médias, mas não para versões de integração grandes.

Nosso localizador de culpados encontra automaticamente o CL de culpado para grandes construções, em um período de tempo muito curto com alto sucesso. Com base no uso da produção em vários projetos nos últimos nove meses, o localizador de culpados fornece resultados muito promissores. Participe da nossa palestra para saber como implementamos o localizador de culpados, o sucesso que ele tem na produção e como é a sensação.

Links: Vídeo, Apresentações

Investigação empírica da qualidade da linha de produtos de software

Katerina Goseva-Popstojanova (Universidade da Virgínia Ocidental)

As linhas de produtos de software exibem um alto grau de semelhança entre os sistemas na linha de produtos e um número bem especificado de variações possíveis. Com base nos dados extraídos de dois estudos de caso: uma linha de produtos industriais de tamanho médio e uma linha de produtos de código aberto grande e em evolução, exploramos empiricamente se a reutilização sistemática melhora a qualidade e possibilita uma previsão bem-sucedida de possíveis falhas futuras de falhas anteriores, métricas de código-fonte e métricas de mudança. Nossos resultados de pesquisa confirmaram, em uma configuração de linha de produtos de software, as descobertas de outras pessoas de que as falhas estão mais correlacionadas às métricas de mudança do que às métricas de código estático. Os resultados da avaliação de qualidade mostraram que embora pacotes mais antigos (incluindo semelhanças) tenham mudado continuamente, eles mantiveram baixas densidades de falha. Além disso, a qualidade da linha de produtos de código aberto melhorou à medida que ela evoluiu com os lançamentos. A previsão com base em modelos de regressão linear generalizados classificou com precisão os pacotes de acordo com as falhas pós-lançamento usando os modelos criados na versão anterior. Os resultados também revelaram que as previsões de falha pós-lançamento se beneficiam de informações adicionais da linha de produtos.

Links: Vídeo, Apresentações

AddressSanitizer, ThreadSanitizer e MemorySanitizer: ferramentas de teste dinâmicas para C++

Kostya Serebryany (Google)

AddressSanitizer (ASan) é uma ferramenta que encontra estouros de buffer (em pilha, heap e globais) e bugs de uso após o uso em programas C/C++. O ThreadSanitizer (TSan) encontra disputas de dados em programas C/C++ e Go. O MemorySanitizer (MSan) é uma ferramenta de trabalho em andamento que encontra usos de memória não inicializada (C++). Essas ferramentas são baseadas na instrumentação do compilador (LLVM e GCC), o que as torna muito rápidas (por exemplo, o ASan incorre em apenas duas vezes mais lentidão). Compartilharemos nossa experiência em testes de grande escala usando essas ferramentas.

Links: Vídeo, Apresentações

Palestra de encerramento - Bebendo o oceano - Como encontrar XSS na escala do Google

Claudio Criscione (Google)

Scripting em vários locais, ou XSS, é o equivalente atual da praga negra de meia-idade no mundo dos aplicativos da web: é generalizado, é ruim e há pouca ou nenhuma forma técnica de detectá-lo até que seja tarde demais. O XSS do DOM é uma variante particularmente desagradável, já que exige que um navegador real ou equivalente seja detectado: um problema difícil com pouca solução automatizada disponível.

Precisávamos de ferramentas poderosas e com direção automática para identificar o XSS do DOM no início do ciclo de desenvolvimento, utilizáveis por engenheiros fora da equipe de segurança. O que queríamos era um produto que pudesse verificar nosso enorme, rápido e altamente complexo e corpus arcano de aplicativos... e, é claro, não encontramos nenhum. Por isso, criamos o nosso próprio: um scanner de aplicativo da web voltado para o XSS do DOM, desenvolvido com base nas tecnologias padrão do Google. Ele é executado no App Engine e utiliza o navegador Chrome poderoso e algumas centenas de CPUs como uma plataforma de verificação de segurança.

Ele também é um bom cidadão do arsenal de testes do Google: ele fica dentro da nossa infraestrutura de testes, em vez de ser o instrumento da equipe de segurança.

Nesta palestra, descreveremos nossa nova abordagem, os desafios enfrentados no escalonamento de nosso sistema para o tamanho do Google e as ideias por trás de nossos modelos de detecção e rastreamento em aplicativos com uso intensivo de JavaScript.

Links: Vídeo, Apresentações