GTAC 2015: Präsentationen

Eröffnungsbemerkungen

Yvonne Nameth (Google)

Eröffnungs-Keynote

Jürgen Allgayer (Google)

Die Uber-Herausforderung: anwendungs- und geräteübergreifende Tests

Apple Chow (Uber) und Bian Jiang (Uber)

Links: Video, Präsentationen

Kurz nach der Zusammenarbeit mit Uber im März 2015 stellten wir uns mit Uber der Herausforderung, die Tools zum Testen unserer Benutzeroberfläche für mobile Apps zu entdecken. Bei vielen unserer Sanity-Tests müssen unsere Fahrgastanwendung und die Treiberanwendung kommunizieren/koordinieren, um das End-to-End-Testszenario abzuschließen. In diesem Vortrag werden wir unsere plattformunabhängige Lösung Octopus vorstellen und erklären, wie sie die Kommunikation zwischen verschiedenen Anwendungen, die auf verschiedenen Geräten ausgeführt werden, koordiniert. Diese Lösung kann für alle Tests verwendet werden, die eine Koordination/Kommunikation zwischen verschiedenen Apps oder Geräten erfordern, z.B. ein Multi-User-Spiel, eine Messaging-/Kommunikations-App für mehrere Nutzer usw.

Robotgestützter Testautomatisierung

Hans Kuosmanen (OptoFidelity) und Natalia Leinonen (OptoFidelity)

Links: Video, Präsentationen

OptoFidelity ist ein finnisches Hightech-Unternehmen mit zehnjähriger Erfahrung in der Entwicklung und Bereitstellung von Lösungen für F&E-Testautomatisierung. Diese Gesprächsrunde umfasst unsere Erfahrungen und zukünftige Perspektiven der unaufdringlichen Testmethoden, die beim Testen der UI-Leistung auf Mobilgeräten verwendet werden. Wusstest du, dass das Chrome OS-Team eine Robot-Lösung von OptoFidelity verwendet, um die End-to-End-Latenz von Android- und Chrome OS-Geräten zu messen?

Jonglierketten für Spaß und Gewinn: Erkenntnisse aus plattformübergreifenden Integrationstests für Mobilgeräte

Dan Giovannelli (Google)

Links: Video, Präsentationen

Die Entwicklung mobiler Anwendungen ist anstrengend. Der Aufbau einer Testinfrastruktur ist schwierig. Die plattformübergreifende Arbeit ist nicht einfach. Wenn Sie die drei kombinieren, haben Sie ein Rezept für die Katastrophe. In diesem Vortrag teilt Dan Giovannelli seine Erfahrungen bei der Entwicklung eines plattformübergreifenden Projekts für die mobile Testinfrastruktur. Er wird darüber sprechen, was gut gelaufen ist, was (sehr) schiefgelaufen ist und was er jetzt wünschte. Hier finden Sie Informationen zur Entwicklung mobiler Tools für Entwickler, die nichts mit Mobilgeräten zu tun haben. Außerdem erfahren Sie, was die Matrix ausmacht und wie Sie sie in ihrem Spiel schlagen können.

Testautomatisierung für Mobilgeräte mit echten Geräten

Jouko Kaasila (Bitbar/Testdroid)

Links: Video, Präsentationen

Mobile Spiele sind in den heutigen App-Shops die lukrativste Kategorie für Einnahmen. Daher hat jede Spieleentwickler-Version, die auf dem Gerät eines Nutzers funktioniert, eine hohe Priorität für jeden Spieleentwickler. Trotz der Bedeutung der Validierung gibt es nur sehr wenige Beispiele oder Frameworks für die Automatisierung von Spielen für Mobilgeräte. Spieleentwickler müssen daher manuelle Tests durchführen, die nicht so groß sind, dass Gaming-Unternehmen ihren globalen Markt abdecken müssen. Ein Hauptgrund ist, dass Spiele als mobile Apps einzigartig sind, weil sie direkt auf den Bildschirm zugreifen und alle vom Betriebssystem bereitgestellten UI-Dienste umgehen und die meisten Testautomatisierungs-Frameworks nutzlos machen, da traditionelle Objekte nicht verfügbar sind.

Glücklicherweise gibt es Möglichkeiten zur Verwendung von standardmäßigen Testautomatisierungs-Frameworks für Mobilgeräte, um die Testautomatisierung auf echten Mobilgeräten für Spiele voranzutreiben. Dazu werden einige kreative und öffentlich verfügbare Bibliotheken eingesetzt. In seiner Präsentation erläutert Jouko Kaasila von Testdroid drei verschiedene Ansätze mit Beispielen aus der Praxis und Beispielcode.

Soßen in Teig mischen

Toni Chang (Google)

Links: Video, Präsentationen

Personen, die zu viel Zeit damit verbracht haben, instabile Tests zu stabilisieren, würden zustimmen, dass wir Tests zerlegen müssen. Für einige ist es jedoch schwierig und sie sind nicht sicher, wie das geht. Bei anderen Teammitgliedern ist ein E2E-Test erforderlich, um alle Szenarien zu validieren. Da es manchmal schwierig ist, sich eine Idee zu verschaffen, wenn Sie es nicht gewöhnt sind, Ihr Produkt in Komponenten zu betrachten, verwende ich ein abstraktes Beispiel für Suppen-Teigtaschen, um zu demonstrieren, wie ein scheinbar nicht zusammenhängendes Stück für Komponenten aussieht, und Tests auf diese anzuwenden.

Ich werde Sie auf unterhaltsame Weise dabei unterstützen, den E2E-Test in einen Komponententest zu übersetzen, der Ihnen das endgültige Ergebnis vermittelt. Hoffentlich verschafft Ihnen dies einen neuen Überblick über Ihr eigenes Produkt.

Chromecast-Testautomatisierung

Brian Gogan (Google)

Links: Video, Präsentationen

Das Internet der Dinge hat zu einer Verbreitung von internetfähigen Geräten geführt. Die Validierung des Verhaltens auf verschiedenen betriebsbereiten Geräten ist eine wichtige Testherausforderung. Zum Testen von Chromecast wurden verschiedene Ansätze verfolgt. Wir beschreiben Test-Frameworks, Lab-Infrastruktur und Testtools, die wir entwickelt haben, um zuverlässige Qualitätssignale aus dem Produkt zu generieren. Wir beschreiben die Herausforderungen beim Testen eines Produkts, das in einer vernetzten Umgebung funktioniert. Wir schlagen vor, dass Testtools für Geräte wie Chromecast noch in den Kinderschuhen stecken und Möglichkeiten für Innovationen im Softwaretesttechnikbereich bieten.

Robots zum Testen von Android-Apps verwenden

Dr.Shauvik Roy Choudhary (Georgia Tech/Checkdroid)

Links: Video, Präsentationen

Software-Robots wie Monkey können ohne großen manuellen Aufwand zum Testen einer Android-App verwendet werden. Im akademischen Bereich gibt es mehrere dieser Tools, deren Ziel darin besteht, automatisch Testeingaben zu generieren, um Android-Apps voranzutreiben. In diesem Vortrag werde ich eine Reihe von repräsentativen Testeingabe-Tools vorstellen und eine Vergleichsstudie vorstellen, um deren Stärken und Schwächen hervorzuheben. Sie erfahren mehr über das Innere dieser Tools und wie Sie damit Ihre Anwendung testen können. Die Details der Studie und eine VM-Einrichtung mit den Tools finden Sie unter http://bear.cc.gatech.edu/~shauvik/androtest/.

Ihre Tests sind nicht instabil

Alister Scott (Automattik)

Links: Video, Präsentationen

Instabile Tests sind der stärkste Fehler eines automatisierten Testentwicklers. Wie jemand (wahrscheinlich Alister) einmal gesagt hat, dass Wahnsinn immer wieder dieselben Tests durchführen und verschiedene Ergebnisse erhalten. Wir sollten mehr Zeit für den Aufbau deterministischer, testbarerer Systeme aufwenden, als für den Aufbau robuster und persistenter Tests. Alister erläutert anhand von Beispielen, wann Testflanken echte Probleme unter dem System versteckt haben und wie es möglich ist, Testflanken durch bessere Systeme zu lösen.

Umfangreiche automatische automatisierte Tests

Adam Carmi (Anwendungs-Tools)

Links: Video, Präsentationen

Automatisierte visuelle Tests sind ein wichtiger Trend in der Entwicklungs- und Test-Community. In diesem Vortrag erfahren Sie, was visuelle Tests sind und warum sie automatisiert werden sollten. Wir werden uns eingehend mit einigen technologischen Herausforderungen befassen, die mit der Automatisierung visueller Tests verbunden sind, und zeigen, wie sich moderne Tools damit meistern lassen. Wir stellen modernste Technologien vor, mit denen visuelle und browserübergreifende Tests durchgeführt werden können, sowie wichtige Tipps für erfolgreiche visuelle Tests.

Hands Off-Tests für Regressionen

Karin Lundberg (Twitter) und Puneet Khanduri (Twitter)

Links: Video, Präsentationen

Ihr Team hat gerade einen wichtigen Refaktorierungsvorgang für einen Dienst abgeschlossen und alle Einheiten- und Integrationstests wurden bestanden. Gut gemacht! Aber das ist noch nicht alles. Jetzt musst du darauf achten, dass du nichts kaputtgemacht hast und dass es keine lauernden Fehler gibt, die du noch nicht erkannt hast. Es ist an der Zeit, Diffy zu nutzen.

Im Gegensatz zu Tools, die dafür sorgen, dass Ihr Code fehlerfrei ist, z. B. Einheiten- oder Integrationstests, vergleicht Diffy das Verhalten Ihres geänderten Dienstes, indem es Instanzen Ihres neuen Dienstes und Ihres alten Dienstes nebeneinander aufstellt, Beispielanfragen an die einzelnen Dienste weiterleitet, die Antworten vergleicht und alle Regressionen aus diesen Vergleichen zurückgibt.

Außerdem haben wir das Tool gerade als Open-Source-Tool zur Verfügung gestellt und es wird schnell zu einem der beliebtesten Open-Source-Projekte von Twitter.

Automatische Bedienungshilfentests für Android-Apps

Katja Burkhardt (Google)

Links: Video, Präsentationen

In diesem Vortrag werden die wichtigsten Vorteile der Barrierefreiheit auf der Android-Plattform vorgestellt. Außerdem werden einige häufige Fallstricke im Zusammenhang mit der Barrierefreiheit erläutert. Hier erfährst du mehr über das neue Android-Framework für Barrierefreiheit im Web und seine Integration in das Espresso- und Robolectric-Test-Framework. Abschließend erfahren Sie, wie einfach es ist, Ihre vorhandenen Android-Projekttests automatisch zu prüfen.

Statistische Datenerhebung

Celal Ziftci (Google) und Ben Greenberg (Hochschulabsolvent)

Links: Video, Präsentationen

Es wird häufig verwendet, eine Stichprobe von Produktionsdaten in Tests zu verwenden. Beispiele:

  • Integritätstest: Sie können eine Stichprobe von Produktionsdaten in Ihr System einspeisen, um festzustellen, ob etwas schiefgeht.
  • A/B-Test: Führen Sie einen großen Teil der Produktionsdaten durch die aktuelle und die neue Version Ihres Systems und vergleichen Sie die Ausgaben zur Prüfung.

Um eine Stichprobe von Produktionsdaten zu erhalten, verwenden Teams in der Regel Ad-hoc-Lösungen wie die folgenden:

  • Manuelle Verteilung der Verteilung bestimmter Felder (z.B. numerische Felder)
  • Beliebige Stichprobe auswählen

Diese Ansätze haben jedoch erhebliche Nachteile: Sie können seltene Ereignisse übersehen, z.B. Grenzfälle, wodurch das Risiko nicht abgefangener Fehler in der Produktion erhöht wird. Zur Risikominimierung wählen Teams sehr große Stichproben aus. Bei solchen großen Stichproben gibt es jedoch noch mehr Nachteile:

  • Seltene Ereignisse können übersehen werden,
  • Die Laufzeit von Tests ist erheblich gestiegen,
  • Unterschiede sind zu groß für ein menschliches Wesen und es gibt viele Wiederholungen.

In diesem Vortrag schlagen wir ein neues Verfahren zur Stichprobenerhebung für statistische Daten vor, um ein "gutes" Beispiel aus Produktionsdaten "intelligent" auszuwählen.

  • Garantiert seltene Ereignisse,
  • Minimiert die Größe der ausgewählten Stichprobe, da Duplikate entfernt werden.

Unser Verfahren fängt seltene oder grenzwertige Fälle ein, verringert die Stichprobengröße auf ein Minimum und senkt implizit die manuelle Belastung von Testergebnissen/-unterschieden für Entwickler. Es unterstützt auch die parallele Ausführung (z.B. MapReduce), sodass große Datenmengen in einem kurzen Zeitraum verarbeitet werden können, um die Stichprobe auszuwählen.

Automatisierungsinfrastruktur von Nest

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

Links: Video, Präsentationen

Die Vision von Nest für ein durchdachtes Zuhause umfasst intelligente, vernetzte Geräte, die dein Zuhause sicherer, energieeffizienter und intelligenter machen. In dieser Gesprächsrunde geht es um die Automatisierungsinfrastruktur und die Testtools, die mit dieser Vision umgesetzt werden können. Verschiedene Teams bei Nest haben an plattform- und geräte- bzw. funktionsspezifischen Systemen für automatisierte Regressionstests und -analysen gearbeitet. Anhand spezieller Beispiele aus realen Produkttests werden produktübergreifende Hardware in der Infrastruktur für Schleifentests und Energieanalyse analysiert sowie spezifische Tools für Kamera- und Bewegungserkennung behandelt.

Ereignisgeneratoren

Roussi Roussev (Splunk)

Links: Video, Präsentationen

In diesem Vortrag geht es um unsere Erfahrungen bei der Entwicklung und Verwendung von Software-Event-Generatoren in Splunk. Inspiriert von der Teilchenphysik konnten Event-Generatoren für das Verständnis der physischen Welt unverzichtbar sein, ohne dass große experimentelle Maschinen ausgeführt werden müssen. Mit Log-Generatoren können wir unsere zahlreichen Integrationen in moderne und ältere Drittanbietersoftware besser testen. Dabei werden die grundlegenden Funktionen und die Herausforderungen beim Erstellen realistischer Logs behandelt.

Multithread-Testsynthese

Murali Krishna Ramanathan (Indian Institute of Science, Bangalore)

Links: Video, Präsentationen

Geringe Gleichzeitigkeitsfehler in Multithread-Bibliotheken, die aufgrund einer falschen oder unzureichenden Synchronisierung entstehen, sind oft nur mit statischen Verfahren schwierig zu ermitteln. Die Wirksamkeit dynamischer Detektoren hängt dagegen in erster Linie von Multithread-Testsuiten ab, deren Ausführung zum Erkennen und Auslösen von Gleichzeitigkeitsfehlern wie Datenrennen, Deadlocks und Atomaritätsverstößen verwendet werden kann. Normalerweise müssen solche Multithread-Tests eine bestimmte Kombination von Methoden mit Objekten aufrufen, die an den Aufrufen beteiligt sind, um einen Fehler zu erkennen. Ohne vorherige Kenntnisse des Fehlers kann das Erstellen solcher Tests eine Herausforderung sein.

In diesem Vortrag möchte ich Ihnen eine einfache und skalierbare Technik vorstellen, mit der Sie Tests zur Erkennung von Verstößen gegen die Threadsicherheit synthetisieren können. Mit einer Multi-Thread-Bibliothek und einer sequenziellen Testsuite beschreibe ich eine vollautomatische Analyse, die sequenzielle Ausführungs-Traces untersucht und als Ausgabe ein gleichzeitiges Client-Programm produziert, das gemeinsam genutzte Objekte über Bibliotheksmethodenaufrufe an Zustände sendet, die zum Auslösen eines Nebenläufigkeitsfehlers dienen. Die experimentellen Ergebnisse für eine Vielzahl bewährter Java-Bibliotheken veranschaulichen die Effektivität unseres Ansatzes bei der Erkennung vieler komplexer Fehler.

Streaming-Tests bei Netflix aktivieren

Minal Mishra (Netflix)

Links: Video, Präsentationen

Streamingdienste von über 69 Millionen Nutzern sind für Netflix von entscheidender Bedeutung. Um dies schnell zu verbessern, haben wir die adaptiven Streaming-Algorithmen in die JavaScript-Ebene verschoben. Dies stellte eine einzigartige Herausforderung dar, weil häufig Client-JavaScript-Software veröffentlicht wurde, die sich direkt auf das Streaming der Nutzer auswirkte. Wir haben das Continuous Delivery-Paradigma übernommen, das weit verbreitet und erfolgreich für Dienstanwendungen eingesetzt wurde. Wir haben damit das Risiko über den Lebenszyklus eines Check-ins ausgeräumt und regelmäßig Updates geliefert. In diesem Vortrag wird eine Schlüsselkomponente dieses Paradigmas beschrieben, um Softwareupdates zu ermöglichen. Wir werden das Roll-out-Verfahren des JavaScript-Clients und der Tools genauer betrachten, um den Zustand mit der aktuellen Version genau zu vergleichen. Wir werden auch über die Herausforderungen sprechen, mit denen dieses Verfahren konfrontiert ist.

Das Internet simulieren

Yabin Kang (LinkedIn)

Links: Video, Präsentationen

Mock hat über ein neues Mocking-System in LinkedIn gesprochen, das dazu dient, den gesamten ausgehenden Traffic für Service Level Integration-Tests zu simulieren. Teilen Sie Ihr Wissen und unsere Erkenntnisse mit anderen.

Effektiver Test eines Empfängers von GPS-Stationen

Andrew Knodt (Lockheed Martin)

Links: Video, Präsentationen

Die vorhandenen, von der Air Force verwendeten GPS-Überwachungsstationen sind schwierig zu verwalten und werden derzeit durch einen GPU-beschleunigten Software-Defined-Radio-Ansatz (SDR) ersetzt. Eine Übersicht über die besonderen Testherausforderungen dieses speziellen GPS-Empfängers und eine Beschreibung verschiedener Testansätze. Während sie sich auf eine GPS-Anwendung konzentrieren, können diese Testansätze problemlos auf andere SDR-Maßnahmen auf Produktionsebene angewendet werden.

Automatisierung auf Wearable-Geräten

Anurag Routroy (Intel)

Links: Video, Präsentationen

Da Wearables sowohl im privaten als auch im geschäftlichen Bereich auf dem Vormarsch sind, haben sich alle Unternehmen mit einer soliden Marktpräsenz auf die neue Technologie konzentriert. Dadurch werden Apps mit Wearable-Unterstützung erstellt, was den Aufwand für das Testen der App auf den Wearable-Geräten erhöht. Daher wird die Automatisierung an Wearables wichtig, um den Testaufwand zu reduzieren und die Effizienz zu steigern.

Unified Infra and CI Integration Testing (Docker/Vagrant)

Maxim Guenis (Supersonic)

Links: Video, Präsentationen

Entwickler haben jeden Tag Schwierigkeiten, eine funktionierende lokale Entwicklungsumgebung für die Entwicklung, Fehlerbehebung und den weiteren Integrationszyklus bereit zu haben.Dies lässt sich durch die Einbindung von Docker und vagrant zur Verwendung mit dem CI-Tool lösen. Mit dieser Kombination können Anwendungen auf Stack-Ebene auf Entwicklungsmaschinen gesteuert werden, wobei derselbe Stack in Integrationstests verwendet werden kann. In diesem Vortrag sprechen wir über Folgendes:

  • Docker in CI-Integrationstests verwenden
  • Kontrolle über Stack anstelle von einzelnem Docker oder einzelner App.
  • Versionskontrolle von Entwicklungs- und Testumgebungen, einfach verteilt mit Git- und Docker-Tools.
  • Nahtlose Unterstützung von Docker auf Mac und Windows.

Unnötige Test-Bits entfernen

Patrick Lam (Universität von Waterloo)

Links: Video, Präsentationen

Die Kombination statischer Analysetechniken für Testsuiten hat interessante Ergebnisse geliefert. Wir haben bereits erfahren, dass die meisten Tests einfacher geradliniger Code sind, d. h. eine Reihe von Einrichtungsanweisungen gefolgt von einer Nutzlast, die aus Assertions besteht. Wir zeigen, wie statische Analysen sinnlose Einrichtungsanweisungen erkennen können, damit Entwickler ihre Testläufe vereinfachen und beschleunigen können.

Abdeckung entspricht nicht stark der Effektivität der Testsuite

Laura Inozemtseva (University of Waterloo)

Links: Video, Präsentationen

Die Abdeckung einer Testsuite wird häufig als Proxy für die Fähigkeit verwendet, Fehler zu erkennen. Frühere Studien, die die Korrelation zwischen Codeabdeckung und Testsuite-Effektivität untersuchten, haben jedoch keine Einigung über die Art und Stärke der Beziehung zwischen diesen Testsuite-Merkmalen erzielt. Darüber hinaus wurden viele der Studien mit kleinen oder synthetischen Programmen durchgeführt, sodass unklar war, ob die Ergebnisse auf größere Programme verallgemeinert wurden. Bei einigen Studien wurde der verstörende Einfluss auf die Größe der Testsuite nicht berücksichtigt. Wir haben diese Studien erweitert, indem wir die Beziehung zwischen Größe, Abdeckung und Wirksamkeit von Testsuiten für realistische Java-Programme ausgewertet haben. Unsere Studie ist bislang die größte in der Literatur. Wir haben die Abdeckung, Entscheidungsfindung und geänderte Bedingungsabdeckung dieser Suiten gemessen und die Wirksamkeit der Fehlererkennung mithilfe von Mutationstests bewertet. Wir haben festgestellt, dass ein kleiner bis mittlerer Zusammenhang zwischen Abdeckung und Wirksamkeit besteht, wenn die Anzahl der Testläufe in der Suite kontrolliert wird. Darüber hinaus haben wir festgestellt, dass eine bessere Abdeckung keinen besseren Einblick in die Effektivität der Suite bietet.

Gefälschte Back-Ends mit RpcReplay

Matt Garrett (Google)

Links: Video, Präsentationen

Es ist sehr wichtig, Tests schnell und stabil zu halten. Das ist schwierig, wenn Server von vielen Back-Ends abhängen. Entwickler müssen zwischen langen und instabilen Tests wählen oder falsche Implementierungen schreiben und verwalten. Stattdessen können Tests mit aufgezeichnetem Traffic von diesen Back-Ends ausgeführt werden. Damit haben Entwickler das Beste aus beiden Welten und können schnell mit echten Back-Ends testen.

Chrome OS-Testautomatisierungslabor

Simran Basi (Google) und Chris Sosa (Google)

Links: Video, Präsentationen

ChromeOS bietet derzeit mehr als 60 verschiedene Chromebooks/Boxen mit eigener Software an. Auf dem Feld erhalten Kunden alle sechs Wochen ein neues System. Ohne ein solides kontinuierliches Integrationssystem, das von unseren mehr als 200 Entwicklern geprüft wird, wäre das nicht möglich. In diesem Vortrag beschreiben wir die gesamte Architektur mit besonderem Schwerpunkt auf unserem Testautomatisierungslabor. Außerdem sprechen wir über Moblab (kurz für mobiles Test-Lab), das unsere gesamte Testautomatisierungsinfrastruktur umfasst. Dieses System wird von vielen unserer Partner verwendet, damit auch sie unsere Tests durchführen können.