GTAC 2015: apresentações

Comentários iniciais

Yvette Nameth (Google)

Palestra de abertura

Jürgen Allgayer (Google)

O desafio da Uber entre os testes de vários aplicativos/dispositivos

Apple Chow (Uber) e Bian Jiang (Uber)

Links: Vídeo, Apresentações

Logo depois de entrar na Uber, em março de 2015, encontramos um desafio único da empresa para as ferramentas de teste de IU dos nossos apps para dispositivos móveis. Muitos dos nossos testes de integridade exigem que o aplicativo de passageiros e o de driver se comuniquem/coordenem as ações entre si para concluir o cenário de teste completo. Nesta palestra, apresentaremos nossa solução independente de plataforma, chamada Octopus, e discutiremos como ela coordena a comunicação em diferentes apps executados em diferentes dispositivos. Essa solução pode ser usada para qualquer teste que exija coordenação/comunicação em diferentes apps ou dispositivos (por exemplo, um jogo multiusuário, app multiusuário de mensagens/comunicação etc.).

Automação de teste assistido por robôs

Hans Kuosmanen (OptoFidelity) e Natalia Leinonen (OptoFidelity)

Links: Vídeo, Apresentações

A OptoFidelity é uma empresa finlandesa de alta tecnologia com 10 anos de experiência no desenvolvimento e na entrega de soluções de automação de testes de P&D. Esta palestra incluirá nossas experiências e perspectivas futuras dos métodos de teste não intrusivos usados nos testes de desempenho da IU de dispositivos móveis. Você sabia que a equipe do Chrome OS usa uma solução de robô da OptoFidelity para medir a latência de ponta a ponta de dispositivos Android e Chrome OS?

Malabarismo de diversão e lucro: lições aprendidas com o teste de integração entre plataformas móveis

Dan Giovannelli (Google)

Links: Vídeo, Apresentações

O desenvolvimento para dispositivos móveis é difícil. Criar uma infraestrutura de teste é difícil. Trabalhar em várias plataformas é difícil. Combine os três e você terá uma receita para o desastre. Nesta palestra, Dan Giovannelli compartilhará as experiências dele trabalhando em um projeto de infraestrutura de teste para dispositivos móveis multiplataforma. Ele falará sobre o que deu certo, o que deu (muito) errado e o que ele gostaria de saber no início. Receba insights sobre como projetar ferramentas móveis para engenheiros que não sejam móveis, fique por dentro de tudo que é The Matrix e enfrente o desafio no próprio jogo.

Automação de teste de jogos para dispositivos móveis usando dispositivos reais

Jouko Kaasila (Bitbar/Testdroid)

Links: Vídeo, Apresentações

Os jogos para dispositivos móveis são a categoria que mais gera receita nas app stores de hoje. Por isso, garantir que todas as versões de cada jogo funcionem no dispositivo de qualquer usuário são uma alta prioridade para qualquer desenvolvedor de jogos. Apesar da importância de validar isso, há muito poucos exemplos ou frameworks para automatizar testes de jogos para dispositivos móveis, forçando os desenvolvedores de jogos a recorrer a testes manuais que não são ajustados na medida em que as empresas de jogos precisam cobrir o mercado global. Um dos principais motivos é a natureza exclusiva dos jogos como apps para dispositivos móveis, porque eles acessam a tela diretamente e ignoram todos os serviços de IU fornecidos pelo SO, tornando a maioria dos frameworks de automação de teste inúteis, já que os objetos tradicionais não são expostos.

Felizmente, há maneiras de usar frameworks de automação de testes padrão para promover a automação de testes em dispositivos móveis reais para jogos, usando alguma criatividade e bibliotecas disponíveis publicamente. Na apresentação, Jouko Kaasila, do Testdroid, discutirá três abordagens diferentes com exemplos do mundo real e alguns exemplos de código.

Como testar bolinhos de sopa

Toni Chang (Google)

Links: Vídeo, Apresentações

As pessoas que passaram muito tempo estabilizando testes instáveis concordariam que precisamos descompor testes. No entanto, alguns acham difícil e não têm certeza de como outros podem ser desafiados por colegas de equipe que acreditam que precisamos de um teste de E2E para validar todos os cenários. Como às vezes é difícil conseguir a ideia quando você não está acostumado a visualizar seu produto em componentes, vamos usar um exemplo abstrato de um Dumpling de sopa para demonstrar como dividir o que parece ser uma peça inseparável em componentes e aplicar testes a eles.

Vou guiar você em uma jornada divertida para transformar os testes E2E em testes de componentes que vão proporcionar confiança no produto final. Esperamos ter uma nova perspectiva ao analisar seu produto.

Automação de testes do Chromecast

Brian Gogan (Google)

Links: Vídeo, Apresentações

A Internet das coisas levou a uma proliferação de dispositivos conectados. Validar o comportamento em vários dispositivos interoperacionais é um desafio significativo de teste. Para testar o Chromecast, várias abordagens foram tomadas. Descrevemos estruturas de teste, infraestrutura de laboratório e ferramentas de teste que desenvolvemos para gerar sinais de qualidade confiáveis do produto. Detalhamos os desafios de testar um produto que opera em ambientes de rede com ruídos. Propomos que as ferramentas de teste para dispositivos como o Chromecast estejam no começo e apresentem oportunidades de inovação em engenharia de teste de software.

Como usar robôs para testar apps Android

Dr.Shauvik Roy Choudhary (Georgia Tech/Checkdroid)

Links: Vídeo, Apresentações

Robôs de software, como o Monkey, podem ser usados para testar um aplicativo Android sem muito esforço manual. Existem várias dessas ferramentas propostas na academia com o objetivo de gerar entradas de teste automaticamente para apps Android. Nesta palestra, apresentarei um conjunto representativo de ferramentas de geração de entrada de teste e apresentarei um estudo comparativo para destacar os pontos fortes e as limitações deles. Você vai aprender sobre os componentes internos dessas ferramentas e como usá-las para testar o aplicativo. Os detalhes do estudo e a configuração da VM com as ferramentas estão disponíveis em: http://bear.cc.gatech.edu/~shauvik/androtest/

Seus testes não estão instáveis

Alister Scott (Automatizado)

Links: Vídeo, Apresentações

Os testes irregulares são o urso de bug de qualquer engenheiro de testes automatizado. Como alguém (provavelmente Alister) disse "uma vez que a loucura está executando os mesmos testes várias vezes e gerando resultados diferentes", os testes instáveis não têm fim no desespero, mas talvez não exista um teste instável ou não instável, talvez seja preciso analisar esse problema com outra perspectiva. Devemos dedicar mais tempo à criação de sistemas mais determinísticos e testáveis do que ao criar testes resilientes e persistentes. Alister vai compartilhar alguns exemplos de quando a inconsistência do teste ocultou problemas reais do sistema e como é possível resolver a instabilidade do teste criando sistemas melhores.

Teste visual visual em grande escala

Adam Carmi (aplicativos)

Links: Vídeo, Apresentações

Os testes visuais automatizados são uma grande tendência emergente na comunidade de desenvolvedores / testes. Nesta palestra, você aprenderá o que são testes visuais e por que eles precisam ser automatizados. Vamos analisar alguns desafios tecnológicos envolvidos na automação de testes visuais e mostrar como as ferramentas modernas enfrentam esses desafios. Vamos demonstrar tecnologias modernas que permitem executar testes visuais entre navegadores e dispositivos, e fornecemos dicas importantes para ter sucesso com testes visuais em grande escala.

Teste de regressão de entrega

Karin Lundberg (Twitter) e Puneet Khanduri (Twitter)

Links: Vídeo, Apresentações

Sua equipe acabou de concluir uma grande refatoração de um serviço, e todos os testes de unidade e integração foram aprovados. Bom trabalho! Mas você ainda não terminou. Agora, você precisa ter certeza de que não quebrou nada e de que não há bugs escondidos que ainda não foram detectados. É hora de colocar algo difícil para funcionar.

Ao contrário de ferramentas que garantem que seu código seja seguro, como testes de unidade ou de integração, o Diffy compara o comportamento do serviço modificado mostrando instâncias do novo serviço e do serviço antigo lado a lado, roteando solicitações de exemplo para cada um, comparando as respostas e fornecendo qualquer regressão que tenha surgido dessas comparações.

A ferramenta ainda está em código aberto, e ela está rapidamente se tornando a mais comum entre os projetos de código aberto do Twitter.

Teste de acessibilidade automatizado para apps Android

Casey Burkhardt (Google)

Links: Vídeo, Apresentações

Esta palestra apresentará os principais recursos de acessibilidade da Plataforma Android e ilustrará algumas armadilhas comuns dos desenvolvedores relacionadas à acessibilidade. Você vai conhecer o novo framework de teste de acessibilidade do Android e a integração dele nos frameworks de testes Espresso e Robolectric. Por fim, você aprenderá como é fácil adicionar a verificação de acessibilidade automatizada aos testes de projetos Android existentes.

Amostragem de dados estatísticos

Celal Ziftci (Google) e Ben Greenberg (estudante de pós-graduação do MIT)

Links: Vídeo, Apresentações

É comum usar uma amostra dos dados de produção em testes. Os exemplos são:

  • Teste de integridade: envie uma amostra de dados de produção ao sistema para ver se algo falha.
  • Teste A/B: realize uma grande parte dos dados de produção, execute-os nas versões nova e atual do seu sistema e diferencie as saídas para inspeção.

Para ter uma amostra dos dados de produção, as equipes geralmente usam soluções ad-hoc, como as seguintes:

  • Analisar manualmente a distribuição de campos específicos (por exemplo, campos numéricos)
  • Como escolher uma amostra totalmente aleatória

No entanto, essas abordagens têm uma desvantagem grave: podem perder eventos raros (por exemplo, casos extremos), o que aumenta o risco de bugs não detectados na produção. Para reduzir esse risco, as equipes escolhem amostras muito grandes. No entanto, com amostras tão grandes, há ainda mais desvantagens:

  • Eventos raros ainda podem ser perdidos,
  • o tempo de execução dos testes aumenta bastante,
  • As diferenças são grandes demais para o ser humano, por isso há muitas repetições.

Nesta proposta, sugerimos uma nova técnica de amostragem de dados estatísticos para escolher de maneira "inteligente" uma amostra "boa" de dados de produção que:

  • Garantem que eventos raros não serão perdidos,
  • Minimiza o tamanho da amostra escolhida eliminando cópias.

Nossa técnica identifica casos raros/limites, reduz o tamanho da amostra e diminui implicitamente a carga manual de verificar as saídas/diferenças de teste nos desenvolvedores. Ele também aceita a execução paralela (por exemplo, MapReduce) para que grandes quantidades de dados possam ser processadas em um curto período para escolher a amostra.

Infraestrutura de automação do Nest

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

Links: Vídeo, Apresentações

A visão do Nest para a Thoughtful Home envolve dispositivos interconectados e inteligentes trabalhando juntos para tornar sua casa mais segura, eficiente com relação ao consumo de energia e mais consciente. O foco dessa palestra é a infraestrutura de automação e as ferramentas de teste que foram criadas para tornar essa visão uma realidade. Várias equipes na Nest estão trabalhando em sistemas multiplataforma e específicos a dispositivos/recursos para testes e análises de regressão automatizados. Com exemplos específicos de testes de produtos do mundo real, vamos abordar o hardware entre produtos na infraestrutura de testes de loop e nas ferramentas de análise de regressão de energia, além de conjuntos específicos de ferramentas de detecção de movimento e câmera.

Geradores de eventos

Roussi Roussev (Splunk)

Links: Vídeo, Apresentações

Esta palestra aborda nossas experiências no desenvolvimento e uso de geradores de eventos de software na Splunk. Inspirados pela física de partículas em que os geradores de eventos foram indispensáveis para entender o mundo físico sem executar máquinas experimentais grandes, os geradores de registros melhoraram a forma como testamos várias integrações com softwares modernos e legados de terceiros. A palestra aborda a funcionalidade básica e os desafios na geração de registros realistas.

Síntese de teste de várias linhas de execução

Murali Krishna Ramanathan (Instituto Indiano de Ciências, Bangalore)

Links: Vídeo, Apresentações

Erros sutis de simultaneidade em bibliotecas com várias linhas de execução que surgem devido à sincronização incorreta ou inadequada geralmente são difíceis de identificar com precisão usando apenas técnicas estáticas. Por outro lado, a eficácia dos detectores dinâmicos depende dos conjuntos de testes de várias linhas de execução, que podem ser usados para identificar e acionar bugs de simultaneidade, incluindo disputas de dados, impasses e violações de atomicidade. Normalmente, esses testes de várias linhas de execução precisam invocar uma combinação específica de métodos com objetos envolvidos nas invocações sendo compartilhados adequadamente para expor um bug. Sem um conhecimento prévio do bug, a criação desses testes pode ser desafiadora.

Nesta palestra, apresentarei uma técnica leve e escalonável para sintetizar testes para detectar violações de segurança da linha de execução. Considerando uma biblioteca com várias linhas de execução e um pacote de testes sequenciais, vou descrever uma análise totalmente automatizada que examina os traces de execução sequenciais e produz como saída um programa cliente simultâneo que direciona objetos compartilhados por chamadas de método de biblioteca para estados propícios para acionar um bug de simultaneidade. Os resultados experimentais em várias bibliotecas Java bem testadas demonstram a eficácia da nossa abordagem na revelação de muitos bugs complexos.

Como ativar experimentos de streaming na Netflix

Minal Mishra (Netflix)

Links: Vídeo, Apresentações

A experiência de streaming de mais de 69 milhões de usuários é de suma importância para a Netflix. Para melhorar isso rapidamente, movemos os algoritmos de streaming adaptáveis para a camada JavaScript. Isso representava um desafio único do lançamento frequente de um software JavaScript cliente que afetava diretamente a experiência de streaming do consumidor. Emprestando o paradigma de entrega contínua, que foi amplamente adotado com sucesso para aplicativos de serviço, nós o usamos para desativar o risco ao longo do ciclo de vida de um check-in e fornecer atualizações com frequência. Nesta palestra, vamos descrever um componente essencial desse paradigma para permitir atualizações de software. Vamos nos aprofundar no procedimento de lançamento do cliente JavaScript e nas ferramentas para comparar com precisão a integridade com a versão atual. Também compartilharemos os desafios enfrentados nesse processo.

Simular a Internet

Yabin Kang (LinkedIn)

Links: Vídeo, Apresentações

Simulando a Internet, falando sobre um novo sistema de simulação no LinkedIn que ajuda a simular todo o tráfego de saída para testes de integração de nível de serviço, também falará um pouco sobre a visão geral da estratégia de simulação do LinkedIn. Compartilhe o conhecimento e o que aprendemos com todos.

Teste eficaz de um receptor de estação de monitoramento por GPS

Andrew Knodt (Lockheed Martin)

Links: Vídeo, Apresentações

As estações de monitoramento de GPS usadas pela Força Aérea estão difíceis de manter, e há um esforço para substituí-las por uma abordagem de Definição de software (SDR, na sigla em inglês) acelerada por GPU. Uma visão geral dos desafios exclusivos de teste deste receptor de GPS especializado e uma análise de várias abordagens de teste serão apresentadas. Focados em um aplicativo de GPS, essas abordagens de teste podem ser facilmente aplicadas a outros esforços de SDR no nível de produção.

Automação em dispositivos wearable

Anurag Routroy (Intel)

Links: Vídeo, Apresentações

Com o aumento do uso pessoal e comercial de tecnologias wearable, todas as empresas com um espaço sólido no mercado Android mudaram o foco para essa tecnologia futura. Assim, eles criam apps com suporte para wearables, o que também aumenta o esforço de testar o app em dispositivos wearable. Portanto, a automação dos wearables se torna importante para reduzir o esforço de teste e aumentar a eficiência.

Teste unificado de integração de CI e infraestrutura (Docker/Vagrant)

Maxim Guenis (supersônico)

Links: Vídeo, Apresentações

Os desenvolvedores têm dificuldade todos os dias para ter um ambiente de desenvolvimento local pronto para desenvolvimento, depuração e passando pelo ciclo de integração contínua.Conseguimos resolver isso integrando o docker e vaga para ser usado com a ferramenta de CI. Essa combinação permite controlar aplicativos no nível da pilha em máquinas de desenvolvimento e, ao mesmo tempo, usar a mesma pilha em testes de integração. Nesta palestra, discutiremos:

  • Uso do Docker em testes de integração de CI
  • Controle da pilha em vez de um único docker ou app.
  • Controle de versões de ambientes de desenvolvimento e teste, de fácil distribuição com ferramentas git e docker.
  • Suporte integrado para executar Dockers no Mac e no Windows.

Eliminação dos bits de teste inúteis

Patrick Lam (Universidade de Waterloo)

Links: Vídeo, Apresentações

Especializar técnicas de análise estática para conjuntos de testes tem gerado resultados interessantes. Aprendemos anteriormente que a maioria dos testes é um código de linha reta simples, ou seja, uma sequência de instruções de configuração seguidas por um payload composto de declarações. Mostramos como a análise estática pode identificar instruções de configuração inúteis, permitindo que os desenvolvedores simplifiquem e acelerem os casos de teste.

A cobertura não está fortemente correlacionada com a eficácia do conjunto de testes

Laura Inozemtseva (Universidade de Waterloo)

Links: Vídeo, Apresentações

A cobertura de um pacote de testes geralmente é usada como um proxy para detectar falhas. No entanto, estudos anteriores que investigaram a correlação entre a cobertura do código e a eficácia do conjunto de testes não conseguiram chegar a um consenso sobre a natureza e a força da relação entre essas características dos conjuntos de testes. Além disso, muitos dos estudos foram feitos com programas pequenos ou sintéticos, deixando claro se os resultados generalizam para programas maiores, e alguns desses estudos não consideraram a influência confusa do tamanho do conjunto de testes. Ampliamos esses estudos avaliando a relação entre o tamanho do conjunto de testes, a cobertura e a eficácia de programas Java realistas. Nosso estudo é o maior da literatura até o momento. Medimos a cobertura da instrução, a cobertura da decisão e a cobertura da condição modificada desses pacotes e usamos testes de mutação para avaliar a eficácia da detecção de falhas. Descobrimos que há uma correlação de baixa a moderada entre cobertura e eficácia quando o número de casos de teste no conjunto é controlado. Além disso, descobrimos que formas mais fortes de cobertura não fornecem mais insights sobre a eficácia do pacote.

Back-ends falsos com RpcReplay

Matt Garrett (Google)

Links: Vídeo, Apresentações

É essencial manter os testes rápidos e estáveis. Isso é difícil quando os servidores dependem de muitos back-ends. Os desenvolvedores precisam escolher entre testes longos e instáveis ou escrever e manter implementações falsas. Em vez disso, os testes podem ser executados usando o tráfego registrado desses back-ends. Isso proporciona o melhor dos dois mundos, permitindo que os desenvolvedores testem rapidamente em back-ends reais.

Laboratório de automação de testes do Chrome OS

Simran Basi (Google) e Chris Sosa (Google)

Links: Vídeo, Apresentações

No momento, o ChromeOS está enviando mais de 60 caixas/Chromebooks diferentes, cada um executando o próprio software. Em campo, os clientes recebem um sistema novo a cada seis semanas. Isso não seria possível sem um sistema de integração contínua verificado por nossos mais de 200 desenvolvedores. Nesta palestra, descrevemos a arquitetura geral com ênfase específica no laboratório de automação de testes. Além disso, discutimos o Moblab (abreviação de laboratório para teste de dispositivos móveis), toda a infraestrutura de automação de testes executada em um chromebox. Esse sistema é usado por muitos dos nossos parceiros para que também possam executar testes dessa maneira.