GTAC 2015: presentazioni

Commenti

Yvette Nameth (Google)

Discorso di apertura

Jürgen Allgayer (Google)

Sfida Uber del test cross-device/cross-device

Apple Chow (Uber) e Bian Jiang (Uber)

Link: Video, Presentazioni

Poco dopo l'iscrizione a Uber nel marzo 2015, abbiamo riscontrato una sfida unica durante l'analisi degli strumenti di test dell'interfaccia utente per le nostre applicazioni per dispositivi mobili. Molti dei nostri test di integrità richiedono che l'applicazione del passeggero e l'applicazione del driver comunichino/coordinano le proprie azioni per completare lo scenario di test end-to-end. In questo intervento, presenteremo la nostra soluzione indipendente dalla piattaforma, chiamata Octopus, e discuteremo di come coordina la comunicazione tra le diverse app in esecuzione su dispositivi diversi. Questa soluzione può essere adottata per tutti i test che richiedono coordinamento/comunicazione tra app o dispositivi diversi (ad es. un gioco per più utenti, un'app di messaggistica/comunicazione per più utenti e così via).

Automazione di test tramite robot

Hans Kuosmanen (OptoFidelity) e Natalia Leinonen (OptoFidelity)

Link: Video, Presentazioni

OptoFidelity è un'azienda finlandese high-tech con 10 anni di esperienza nello sviluppo e nella distribuzione di soluzioni di automazione per i test di ricerca e sviluppo. Questa discussione includerà le nostre esperienze e le prospettive future dei metodi di test non invasivi utilizzati nei test delle prestazioni dell'interfaccia utente dei dispositivi mobili. Sapevi che il team di Chrome OS utilizza una soluzione robot di OptoFidelity per misurare la latenza end-to-end dei dispositivi Android e ChromeOS?

Motociclette per gioco e divertimento: lezioni apprese dai test di integrazione multipiattaforma per dispositivi mobili

Dan Giovannelli (Google)

Link: Video, Presentazioni

Lo sviluppo mobile è difficile. Creare un'infrastruttura di test è difficile. Lavorare su più piattaforme è difficile. Combina i tre strumenti e otterrai una ricetta per il disastro. In questo intervento, Dan Giovannelli condividerà le proprie esperienze relative a un progetto di infrastruttura di test multipiattaforma per dispositivi mobili. Parlerà delle cose che sono andate a buon fine, delle cose che si sono verificate (molto) sbagliate e di ciò che vorrebbe sapere ora. Venite alla ricerca di strumenti per la progettazione di strumenti per dispositivi mobili per gli ingegneri che non utilizzano dispositivi mobili. Continuate a scoprire cos'è The Matrix e come batterlo nel suo gioco.

Automazione di test per giochi mobile utilizzando dispositivi reali

Jouko Kaasila (Bitbar/Testdroid)

Link: Video, Presentazioni

I giochi per dispositivi mobili sono la categoria più redditizia negli store di oggi, quindi garantire che ogni versione di ogni gioco funzioni sul dispositivo di qualsiasi utente è una priorità assoluta per qualsiasi sviluppatore di giochi. Nonostante l'importanza di convalidarli, ci sono pochissimi esempi o framework per automatizzare i test dei giochi per dispositivi mobili, costringendo gli sviluppatori di giochi a ricorrere a test manuali che non scalano nella misura in cui le aziende di giochi dovrebbero coprire il mercato globale. Uno dei motivi principali è la natura unica dei giochi come app per dispositivi mobili, perché accedono direttamente allo schermo e aggirano tutti i servizi di interfaccia utente forniti dal sistema operativo, rendendo inutilizzabili la maggior parte dei framework di automazione dei test, poiché gli oggetti tradizionali non vengono esposti.

Fortunatamente esistono modi per utilizzare framework di automazione dei test per dispositivi mobili standard per guidare l'automazione dei test su dispositivi mobili reali per i giochi utilizzando alcune creatività e librerie disponibili pubblicamente. Nella sua presentazione, Jouko Kaasila di Testdroid illustra tre approcci diversi con esempi reali e un esempio di codice.

Come testare i ravioli per zuppe di test

Toni Chang (Google)

Link: Video, Presentazioni

Le persone che hanno impiegato troppo tempo a stabilizzare i test irregolari concordano sul fatto che dobbiamo scomporre i test. Tuttavia, alcuni lo trovano difficile e non sanno bene come altri possano essere messi alla prova da colleghi che ritengono di aver bisogno del test E2E per convalidare tutti gli scenari. Poiché a volte è difficile capire quando non sei abituato a vedere il tuo prodotto nei componenti, userò un esempio astratto di zuppa di ravioli per dimostrare come suddividere quello che sembra essere un elemento inseparabile nei componenti e applicarvi i test.

Ti guiderò attraverso un divertente percorso di traduzione del test E2E in un test dei componenti che ti consentirà di acquisire sicurezza nel prodotto finale. Mi auguro che questo vi dia un nuovo punto di vista quando guardate il vostro prodotto.

Automazione di test con Chromecast

Brian Gogan (Google)

Link: Video, Presentazioni

L'Internet delle cose ha portato a una proliferazione di dispositivi connessi. La convalida del comportamento su diversi dispositivi di interoperabilità è una sfida significativa per i test. Per testare Chromecast, sono stati adottati diversi approcci, Delineiamo framework di test, infrastruttura di lab e strumenti di test che abbiamo sviluppato per generare indicatori di qualità affidabili dal prodotto. Descriviamo dettagliatamente le sfide di test di un prodotto che opera in ambienti di rete rumorosi. Proponiamo che gli strumenti di test per dispositivi come Chromecast sono agli inizi e presentano opportunità di innovazione nell'ingegneria dei test software.

Utilizzare i robot per il test delle app per Android

Dr.Shauvik Roy Choudhary (Georgia Tech/Checkdroid)

Link: Video, Presentazioni

I software robots, come Monkey, possono essere utilizzati per testare un'applicazione Android senza alcuno sforzo manuale. Esistono diversi strumenti di questo tipo proposti nel mondo accademico con l'obiettivo di generare automaticamente input di test per guidare le app Android. In questo intervento, presenterò un insieme di strumenti di generazione di input di test rappresentativi e presenterò uno studio comparativo per evidenziarne i punti di forza e le limitazioni. Imparerai a conoscere i componenti interni di questi strumenti e come utilizzarli per testare la tua applicazione. I dettagli dello studio e la configurazione di una VM con gli strumenti sono disponibili all'indirizzo: http://bear.cc.gatech.edu/~shauvik/androtest/

I test non sono irregolari

Alister Scott (Automattic)

Link: Video, Presentazioni

I test irregolari sono la spina dorsale di qualsiasi test automatizzato; come qualcuno (probabilmente Alister) ha affermato una volta che "il follia sta eseguendo gli stessi test più e più volte e ottenendo risultati diversi". I test irregolari non riducono la disperazione, ma forse non esiste una soluzione irregolare o non irregolabile, forse dobbiamo analizzare il problema da una prospettiva diversa. Dovremmo dedicare più tempo alla creazione di sistemi più deterministici e testabili rispetto a un tempo di creazione di test resilienti e permanenti. Alister condividerà alcuni esempi di casi in cui c'è un problema di sfasamento nei test al di sotto del sistema e come è possibile risolvere questo problema realizzando sistemi migliori.

Test visivi automatici su larga scala

Adam Carmi (Applitools)

Link: Video, Presentazioni

I test visivi automatici rappresentano una delle principali tendenze emergenti nella community di sviluppo e test. In questo intervento scoprirai che cos'è il test visivo e perché dovrebbe essere automatizzato. Approfondiremo alcune delle sfide tecnologiche coinvolte con l'automazione dei test visivi e mostreremo come affrontano gli strumenti moderni. Eseguiremo una demo di tecnologie all'avanguardia che consentono l'esecuzione di test visivi cross-device e cross-device e forniremo suggerimenti chiave per ottenere risultati ottimali con test visivi su larga scala.

Test di regressione delle mani

Karin Lundberg (Twitter) e Puneet Khanduri (Twitter)

Link: Video, Presentazioni

Il tuo team ha appena terminato un importante ripristino di un servizio e hai superato tutti i test di unità e integrazione. Ottimo! Ma non hai ancora finito. Ora devi assicurarti di non aver rotto nulla e che non ci siano ancora bug in sospeso. È il momento di metterti al lavoro.

A differenza degli strumenti che assicurano la correttezza del codice, come i test di unità o integrazioni, Diffy confronta il comportamento del servizio modificato confrontando le istanze del nuovo servizio con quelle del vecchio servizio affiancate, instradando le richieste di esempio a ciascuna, confrontando le risposte e fornendo eventuali regressioni derivanti da questi confronti.

Inoltre, abbiamo appena reso open source lo strumento e sta diventando rapidamente uno dei più popolari tra i progetti open source di Twitter.

Test automatici di accessibilità per le applicazioni Android

Casey Burkhardt (Google)

Link: Video, Presentazioni

Questo intervento introdurrà le principali opportunità di accessibilità sulla piattaforma Android e illustrerà alcune insidie comuni degli sviluppatori relative all'accessibilità. Scoprirai il nuovo framework di test di accessibilità Android e la sua integrazione nei framework di test Espresso e Robolectric. Infine, scoprirai quanto è facile aggiungere il controllo automatico dell'accessibilità ai test dei progetti Android esistenti.

Campionamento dei dati statistici

Celal Ziftci (Google) e Ben Greenberg (studente laureato al MIT)

Link: Video, Presentazioni

È prassi comune utilizzare un campione di dati di produzione nei test. Esempi:

  • Test di integrità: inserisci un campione di dati di produzione nel sistema per individuare eventuali problemi.
  • Test A/B: analizza una grande quantità di dati di produzione, analizza le versioni attuali e nuove del sistema e distribuisci gli output per l'ispezione.

Per ottenere un campione di dati di produzione, i team in genere utilizzano soluzioni ad hoc, come ad esempio:

  • Osservare manualmente la distribuzione di campi specifici (ad es. campi numerici),
  • Scegliere un campione assolutamente casuale

Tuttavia, questi approcci presentano uno svantaggio grave: possono perdere eventi rari (ad esempio casi limite), il che aumenta il rischio di bug non rilevati in produzione. Per ridurre questo rischio, i team scelgono campioni di grandi dimensioni. Tuttavia, con campioni di grandi dimensioni, ci sono ancora più aspetti negativi:

  • Gli eventi rari possono comunque essere persi,
  • L'esecuzione dei test aumenta notevolmente,
  • Le differenze sono troppo grandi per essere esseri umani e c'è molta ripetizione.

In questo intervento, proponiamo una nuova tecnica di campionamento dei dati statistici per scegliere "in modo intelligente" un campione "buono" dai dati di produzione che:

  • Garantire che gli eventi rari non vadano persi,
  • Riduci al minimo le dimensioni del campione scelto eliminando i duplicati.

La nostra tecnica individua i casi rari/confini, riduce al minimo le dimensioni del campione e riduce implicitamente il carico manuale di analisi e differenze nei test degli sviluppatori. Supporta anche l'esecuzione parallela (ad esempio MapReduce) in modo che grandi quantità di dati possano essere elaborate in un breve periodo di tempo per scegliere l'esempio.

Infrastruttura di automazione Nest

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

Link: Video, Presentazioni

La visione di Nest per la casa intelligente Questa conversazione si concentrerà sull'infrastruttura di automazione e sugli strumenti di test realizzati per aiutare a realizzare questa visione. Vari team all'interno di Nest hanno lavorato a sistemi sia multipiattaforma che specifici per dispositivo/funzionalità per il test e l'analisi automatici di regressione. Utilizzando esempi specifici di test reali dei prodotti, parleremo dell'hardware tra più prodotti nell'infrastruttura di test del loop e degli strumenti di analisi per la regressione dell'alimentazione, nonché degli insiemi di strumenti specifici per il rilevamento di movimenti e videocamere.

Generatore di eventi

Roussi Roussev (Splunk)

Link: Video, Presentazioni

Questa presentazione illustra le nostre esperienze nello sviluppo e nell'uso dei generatori di eventi software di Splunk. Ispirati dalla fisica delle particelle in cui i generatori di eventi sono stati indispensabili per comprendere il mondo fisico senza eseguire macchine sperimentali di grandi dimensioni, i generatori di log hanno migliorato la modalità di test delle nostre numerose integrazioni con il software moderno e di terze parti. La discussione riguarda le funzionalità di base e le sfide relative alla generazione di log realistici.

Sintesi di test multithread

Murali Krishna Ramanathan (Indian Institute of Science, Bangalore)

Link: Video, Presentazioni

Lievi errori di contemporaneità nelle librerie multi-thread derivanti da una sincronizzazione errata o non adeguata sono spesso difficili da identificare in modo preciso utilizzando solo tecniche statiche. D'altra parte, l'efficacia dei rilevatori dinamici dipende criticamente dalle suite di test multi-thread la cui esecuzione può essere utilizzata per identificare e attivare bug di contemporaneità, tra cui razze di dati, deadlock e violazioni dell'atomicità. Di solito, questi test multithread devono richiamare una combinazione specifica di metodi con oggetti coinvolti nelle chiamate condivise in modo appropriato per esporre un bug. Senza una conoscenza preventiva del bug, questo tipo di test può risultare una sfida impegnativa.

In questa presentazione, presenterò una tecnica leggera e scalabile per sintetizzare i test per rilevare le violazioni della sicurezza dei thread. Considerata una libreria multi-thread e una suite di test sequenziale, descriverò un'analisi completamente automatica che esamina le tracce di esecuzione sequenziali e produce come output un programma client simultaneo che indirizza oggetti condivisi tramite chiamate al metodo della libreria risultate favorevoli per l'attivazione di un bug della contemporaneità. I risultati sperimentali su una serie di librerie Java ben testate dimostrano l'efficacia del nostro approccio nel rilevamento di molti bug complessi.

Abilitazione degli esperimenti di streaming su Netflix

Minhra Mishra (Netflix)

Link: Video, Presentazioni

L'esperienza di streaming di oltre 69 milioni di utenti è di fondamentale importanza per Netflix. Per migliorarlo rapidamente, abbiamo spostato gli algoritmi di streaming adattivi nel livello JavaScript. Ciò costituiva una sfida unica nel promuovere spesso il rilascio di software JavaScript del client che incideva direttamente sull'esperienza di streaming dei consumatori. Facendo ricorso al paradigma di distribuzione continua, ampiamente ed efficace adottato per le applicazioni di servizio, lo abbiamo utilizzato per ritirare i rischi durante il ciclo di vita di un check-in e per distribuire gli aggiornamenti di frequente. In questo intervento illustreremo un componente chiave di questo paradigma per abilitare gli aggiornamenti software. Approfondiremo la procedura di implementazione del client JavaScript e degli strumenti per confrontare accuratamente l'integrità con la versione attuale. Inoltre, condivideremo le sfide che questa procedura deve affrontare.

Simulazione di Internet

Yabin Kang (LinkedIn)

Link: Video, Presentazioni

Simulare Internet, parlando di un nuovo sistema di simulazione in Linkedin che aiuta a simulare tutto il traffico in uscita per i test di integrazione a livello di servizio, parlerà anche della panoramica della strategia di simulazione di Linkedin. Condividi con tutti quello che hai imparato.

Test efficaci di un ricevitore GPS Monitoring Station

Andrew Knodt (Lockheed Martin)

Link: Video, Presentazioni

Le stazioni di monitoraggio GPS esistenti utilizzate dall'Air Force sono diventate difficili da mantenere e sono in corso dei passaggi per sostituirle con un approccio SDR (Softwaredefined Radio) accelerato da GPU. Verrà presentata una panoramica delle sfide di test uniche di questo ricevitore GPS specializzato e un esame dei diversi approcci per i test. Concentrandosi su un'applicazione GPS, questi approcci di test potrebbero essere facilmente applicati ad altri sforzi SDR di produzione.

Automazione per dispositivi indossabili

Anurag Routroy (Intel)

Link: Video, Presentazioni

Poiché la tecnologia indossabile è in aumento nell'uso personale e aziendale, tutte le aziende che hanno uno spazio solido nel mercato Android hanno spostato l'attenzione su questa tecnologia imminente. In questo modo, creiamo le loro app con il supporto indossabile, il che aumenta anche lo sforzo di testare l'app sui dispositivi indossabili. Di conseguenza, l'automazione sui dispositivi indossabili diventa importante per ridurre l'impegno di test e aumentare l'efficienza.

Test di integrazione unificata per Infra e CI (Docker/Vagrant)

Maxim Guenis (Supersonico)

Link: Video, Presentazioni

Gli sviluppatori faticano ogni giorno ad avere un ambiente di sviluppo locale funzionante durante lo sviluppo, il debug e l'esecuzione del ciclo di integrazione continua.Possiamo risolvere il problema integrando Docker e vaccini da usare con lo strumento CI. Questa combinazione consente di controllare le applicazioni a livello di stack sulle macchine di sviluppo, pur continuando a utilizzare lo stesso stack nei test di integrazione. In questa discussione parleremo di:

  • Utilizzo di Docker nei test di integrazione CI
  • Controllo dello stack invece di un singolo docker o app.
  • Controllo della versione degli ambienti di sviluppo e test, facilmente distribuito con strumenti Git e Docker.
  • Supporto senza interruzioni per l'esecuzione di Docker su Mac e Windows.

Eliminazione delle punte di test inutili

Patrick Lam (Università di Waterloo)

Link: Video, Presentazioni

La Specializzazione delle tecniche di analisi statica per le suite di test ha prodotto risultati interessanti. In precedenza abbiamo appreso che la maggior parte dei test sono semplici codice a riga di riga, vale a dire una sequenza di istruzioni di configurazione seguite da un payload composto da asserzioni. Mostriamo come l'analisi statica può identificare istruzioni di configurazione inutili, consentendo agli sviluppatori di semplificare e accelerare i loro scenari di test.

La copertura non è strettamente correlata all'efficacia della Test Suite

Laura Inozemtseva (Università di Waterloo)

Link: Video, Presentazioni

La copertura di una suite di test viene spesso utilizzata come proxy per la capacità di rilevare errori. Tuttavia, studi precedenti che hanno esaminato la correlazione tra la copertura del codice e l'efficacia della suite di test non sono riusciti a raggiungere un consenso sulla natura e sulla forza della relazione tra queste caratteristiche della suite di test. Inoltre, molti degli studi sono stati condotti con piccoli programmi o sintetici, rendendo chiaro se i risultati fossero generici per programmi più ampi e alcuni studi non hanno tenuto conto della frustrante influenza delle dimensioni della suite di test. Abbiamo esteso questi studi valutando la relazione tra dimensioni della suite di test, copertura ed efficacia per i programmi Java realistici; il nostro studio è il più grande fino ad oggi nella letteratura. Abbiamo misurato la copertura delle dichiarazioni, la copertura delle decisioni e modificato la copertura delle condizioni di queste suite e utilizzato i test di mutazione per valutare l'efficacia del rilevamento degli errori. Abbiamo riscontrato una correlazione bassa o moderata tra la copertura e l'efficacia quando viene controllato il numero di scenari di test nella suite. Inoltre, abbiamo riscontrato che forme di copertura più efficaci non forniscono informazioni più approfondite sull'efficacia della suite.

Backend falsi con RpcReplay

Matt Garrett (Google)

Link: Video, Presentazioni

Mantenere i test veloci e stabili è fondamentale. Questo è difficile quando i server dipendono da molti backend. Gli sviluppatori devono scegliere tra test lunghi e irregolari o scrivere e gestire implementazioni false. È invece possibile eseguire test utilizzando il traffico registrato da questi backend. Questo fornisce il meglio di entrambi i mondi, consentendo agli sviluppatori di eseguire test rapidi su backend reali.

Lab sull'automazione dei test di Chrome OS

Simran Basi (Google) e Chris Sosa (Google)

Link: Video, Presentazioni

Al momento ChromeOS sta vendendo oltre 60 Chromebook/scatole differenti, ognuno con il proprio software. I clienti sul campo ricevono un nuovo sistema ogni sei settimane. Questo non sarebbe possibile senza un solido sistema di integrazione continua che controlli i check-in dei nostri oltre 200 sviluppatori. In questo intervento, descriviamo l'architettura complessiva con particolare attenzione al lab di automazione dei test. Inoltre, parliamo di Moblab (abbreviazione di "lab" (test) per dispositivi mobili), l'intera infrastruttura di automazione dei test in esecuzione da un'unica casella. Questo sistema è utilizzato da molti dei nostri partner per consentire anche a loro di eseguire test come facciamo.