GTAC 2013: Präsentationen

Alle GTAC 2013-Videoaufzeichnungen und -Folien sind öffentlich verfügbar. Du kannst sie dir auf der YouTube-Playlist „GTAC 2013“ ansehen oder dir die Vorträge unten ansehen:

Einleitung

Tony Voellm (Google)

Links: Video

Eröffnungs-Keynote – Evolution from Quality Assurance to Test Engineering

Ari Shamash (Google)

Sie haben eine App erstellt und veröffentlicht. Du überlegst dir, es in die Hand zu nehmen, etwas Volumen zu sammeln, Finanzierung zu erhalten, alles aufzugeben und dann von Grund auf neu zu beginnen. Doch die Nachfrage nach neuen Funktionen ist riesig. Daher müssen Sie in einer noch nie dagewesenen Geschwindigkeit auf eine noch nie dagewesene Skalierung drängen. So entsteht ein Teufelskreis. Wie geht es jetzt weiter?

Sie können sie nicht wegwerfen und ganz von vorn beginnen. Sie müssen lediglich Ihren Bestand erweitern und gleichzeitig weitere hochwertige Funktionen mit atemberaubender Geschwindigkeit hinzufügen. Darüber hinaus darf das bereits vorhandene Element nicht beschädigt werden. Vorgehensweise Glücklicherweise entsteht in der Softwaretechnikbranche ein neuer Bereich, der dieses häufige Szenario angeht: Bei Google nennen wir es „Test Engineering“.

In diesem Gespräch konzentrieren wir uns darauf, was Test Engineering ist, wie es sich von der Qualitätssicherung weiterentwickelt hat und wie die Branche insgesamt Test Engineering implementiert hat (mit speziellen Beispielen für die Implementierung bei Google).

Links: Videos, Präsentationen

Systeme in großem Umfang testen @Twitter

Jan Waldrop (Twitter)

Jan spricht über die Tools, den Prozess und die Philosophie, die bei Twitter für Leistungstests gelten. Besonderes Augenmerk wird auf die Open-Source-Bibliothek „Iload Open Testing“ von Iago gelegt, mit der die Entwicklerteams von Twitter Lasten testen können, bevor sie Code in der Produktionsumgebung bereitstellen. Dabei werden die Implementierungsdetails einiger Tests (einschließlich Quellcode) und die komplizierten Faktoren wie OAuth und beliebige Thrift-Protokolle behandelt.

Links: Videos, Präsentationen

Wie testest du ein mobiles Betriebssystem?

David Burns (Mozilla) und Malini Das (Mozilla)

Das ist das Problem, mit dem Mozilla konfrontiert wurde, als wir uns entschieden haben, in die Welt von FirefoxOS zu investieren. Der Einstieg und die Umsetzung der Aufgabe waren eine interessante Aufgabe. Hören Sie sich an, wie wir dieses Problem gelöst haben und wie wir ein neues Framework entwickelt haben.

Links: Videos, Präsentationen

Mobile Automatisierung in Continuous Delivery Pipeline

Igor Dorovskikh (Expedia) und Kaustubh Gawande (Expedia)

Expedia investierte Anfang 2012 in Apps für das mobile Web und iOS- bzw. Android-Apps. Gleichzeitig begannen Testentwickler mit der Entwicklung von Testautomatisierungslösungen, um von Anfang an Qualität und Testbarkeit in den Produkten zu verbessern. In diesem Vortrag sprechen wir über unsere Erfahrung und lernen, wie Open-Source-Tools zum Erstellen automatisierter Tests in der agilen Entwicklungs- und Continuous-Delivery-Umgebung von Expedia eingesetzt werden können. Wir werden über Test Pyramid sprechen und über spezifische Open-Source-Tools sprechen, die für uns gut funktioniert haben. Zu den Open-Source-Tools, die wir nutzen, gehören BDD-Tools wie Cucumber, das Web-Automatisierungstool Selenium-WebDriver, das iOS-Automatisierungstool Frank, die Android-Automatisierungstools Robotium und Calabash sowie das Continuous Integration-System Jenkins. Darüber hinaus werden wir einige der agilen Lieferprinzipien teilen, die wir anstreben, wie TDD, Paarprogrammierung, Build- und Testkühler. Abschließend stellen wir noch einige der Vorteile vor, die wir durch unsere Investitionen in agile und Testautomatisierungen gewonnen haben, und wie wir dadurch unsere Ziele für Continuous Delivery erreichen.

Links: Videos, Präsentationen

Automatisierte Set-Top-Box-Tests mit GStreamer und OpenCV

David Röthlisberger (YouView)

Mit den Befehlszeilentools von GStreamer und OpenCV erstellen wir in 3 Minuten ein Bilderkennungssystem für die Videoaufnahme. (GStreamer ist ein Open-Source-Medienbehandlungs-Framework; OpenCV – „Open Computer Vision“ – ist eine Open-Source-Bildverarbeitungsbibliothek.

Ein führendes Beispiel für ein solches System ist http://stb-tester.com, ein Open-Source-Tool, das bei YouView entwickelt wurde, um den UI-Test unserer Set-Top-Boxen zu automatisieren. Erläutern wir, wie der Stb-Tester aussieht, welche Flexibilität seine GStreamer-Basis bietet, welche Möglichkeiten er bietet und welche Herausforderungen er bewältigen muss.

Links: Video

Webdriver für Chrome

Ken Kania (Google)

Seit seiner Gründung als Windows-Browser ist Chrome auf Mac, Linux, ChromeOS und zuletzt auf Android und iOS verfügbar. Das Testen von Webanwendungen auf Nutzerebene ist komplex und erforderte verschiedene Automatisierungsansätze. In dieser Präsentation wird die Arbeit des Chrome-Teams beschrieben, um WebDriver auf allen Plattformen für Chrome verfügbar zu machen. Dabei wird ein technischer Einblick in den zugrunde liegenden Ansatz gegeben werden. Wir konzentrieren uns jedoch darauf, wie Entwickler den neuen ChromeDriver nutzen können, um Tests für die verschiedenen Plattformen von Chrome zu schreiben. Außerdem werden der aktuelle Status des Projekts und eine Roadmap für die Zukunft abgedeckt.

Links: Videos, Präsentationen

Karma – Test-Ausführer für JavaScript

Vojta Jina (Google)

Einführung in Karma – den Test-Ausführer, der das Testen von JavaScript-Anwendungen in echten Browsern reibungslos und angenehm macht

Tests sind nicht optional, wenn in einer JavaScript-Anwendung eine Vielzahl von Browsern und Geräten erstellt werden muss. Das Ausführen von Tests in all diesen verschiedenen Umgebungen ist jedoch schwierig. Karma wandelt diese schwierige Aufgabe in ein Kinderspiel. So können Sie JavaScript-Tests direkt von Ihrem Terminal oder Ihrer bevorzugten IDE aus in echten Browsern oder auf Geräten wie Ihrem Smartphone oder Tablet ausführen.

Links: Video

Automatisierte Messungen der Videoqualität

Patrik Höglund (Google)

Ja, komplexe, subjektive Messungen wie die Videoqualität können automatisch getestet werden. In diesem Vortrag wird erläutert, wie wir einen kontinuierlichen, automatisierten End-to-End-Test eines WebRTC-Videoanrufs entwickelt haben. Wir gehen auf allgemein betrachtete Toolchains ein und sehen uns an, welchen Herausforderungen wir bei der Konstruktion begegnet sind. Perfekt, wenn Sie sich inspirieren lassen möchten, um Ihre Medientests auf die nächste Stufe zu bringen.

Links: Videos, Präsentationen

Was passiert bei guten Anwendungen?

Minal Mishra (Netflix)

Der Boom im Bereich Mobilgeräte- und Tablet-Computing hat die Softwarebranche mit Plattformen zur Anwendungsentwicklung übertroffen. Bei der Entwicklung von Verbraucheranwendungen auf Computing-Plattformen hat der Endnutzer seine eigene magische Erfahrung. Softwareunternehmen, die sich mit Verbrauchern beschäftigen, versuchen immer, bei der Entwicklung einer Anwendung für diese Plattformen einen Schritt voraus zu sein. Die größte Herausforderung bei der Anwendungsentwicklung beginnt jedoch erst, wenn Unternehmen die erste Version der Anwendung einführen. Kunden und die Softwareunternehmen wollen die neuesten Funktionen so schnell wie möglich und mit höchster Qualität entwickeln. Dies führt zu einer konstanten Codeabwanderung auf jeder Ebene des Stacks. Wir als Entwickler von UI-Automatisierungen entwickeln eine Vielzahl von Erkennungssystemen, um Anwendungsprobleme schneller als später zu erkennen. In diesem Vortrag möchte ich einige unserer Herausforderungen und Erfolgsgeschichten hinter einem solchen Erkennungssystem vorstellen. Dabei hat es uns geholfen, Probleme außerhalb der Anwendungsebene zu finden, die Nutzerfreundlichkeit aber trotzdem beeinträchtigt.

Links: Videos, Präsentationen

Tests für Gaming- und Lernspiele für Bildungseinrichtungen

Tao Xie (North Carolina State University)

In diesem Vortrag wird Pex4Fun (http://www.pexforfun.com/) vorgestellt. Dieses Produkt nutzt die automatisierte Testgenerierung, um die automatische Benotung in einem Online-Programmiersystem zu unterstützen, das für Hunderttausende Nutzer ausgelegt ist. Sie bietet ein programmorientiertes Gamingerlebnis außerhalb des Klassenzimmers, in dem Nutzer verschiedene Programmier- und Softwareentwicklungskompetenzen erlernen, einschließlich Testfähigkeiten wie das Schreiben parametrierter Unittests. Pex4Fun leistet einen wichtigen Beitrag zu dem bekannten Problem der Benotung von Aufgaben und sorgt auf Grundlage des interaktiven Gamings für ein unterhaltsames Lernerlebnis. Pex4Fun ist in der Community äußerst beliebt: Seit seiner Veröffentlichung im Juni 2010 hat die Anzahl der Klicks auf die Schaltfläche „Peter fragen“ (Angaben zum Versuch, Spiele bei Pex4Fun zu lösen) Anfang 2013 mehr als eine Million erreicht.

Links: Videos, Präsentationen

Abschluss der Keynote – Facebook testet Facebook auf Android

Simon Stewart (Facebook)

Facebook ist eine der beliebtesten Android-Apps auf dem Markt. In diesem Vortrag erfahren Sie, wie Facebook dafür sorgt, dass jeder Release so gut wie möglich ist. Du erfährst alles über die Verwaltung unseres Codes, unseren Testansatz und bis hin zu Dogfood.

Links: Videos, Präsentationen

Eröffnungs-Keynote – Testable JavaScript – Anwendung für Testbarkeit entwickeln

Mark Trostler, Google

JavaScript-Test ist ein Prozess. Unabhängig davon, ob Sie mit einem leeren Slate oder einer bereits implementierten Anwendung beginnen (oder zwischendurch), können Sie Ihren JavaScript-Code einfach, sauber und effektiv testen können. Code, der nicht getestet werden kann, wird neu geschrieben.

JavaScript ist aufgrund der vielen Umgebungen, in denen es ausgeführt wird, einzigartig, aber es gibt einige bewährte und bewährte Testmethoden aus anderen Sprachen, die auch für JavaScript gelten. Natürlich bestehen nach wie vor einzigartige Herausforderungen für JavaScript-Entwickler beim Schreiben und Testen von Code.

Durch welche Muster wird Code testbar? Welche Antimuster verhindern die Tests? Welche Messwerte und gängige Leitfäden können verwendet werden, um die Testierbarkeit unseres Codes zu messen? Was hat es mit der Erstellung des testbaren Codes nun getan?

Erklären Sie mir, wie Sie testbares JavaScript schreiben. Wir untersuchen Ideen, Muster und Methoden, die die Testbarkeit erheblich verbessern, sodass der Code gut erhalten und korrekt ist. Die Qualität des Codes wird erheblich verbessert, wenn Sie clientseitige oder serverseitige JavaScript-Unterstützung nutzen.

Links: Videos, Präsentationen

Breaking the Matrix – Android Testing in Scale

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

Bist du bereit, die rote Pille zu nehmen?

Mobilgeräte haben die Art und Weise, wie Menschen mit Computern interagieren, verändert. Das ist großartig, aber als Ingenieure werden wir mit einer ständig wachsenden Matrix an Umgebungen konfrontiert, in denen unser Code ausgeführt wird. Die Tage, an denen nur noch eine Handvoll Browser und Bildschirmauflösungen berücksichtigt wurden, kommen nicht zurück. Wie können Entwickler mit der Matrix umgehen? Sie erfahren, wie Google dieses Testproblem auf Arbeitsstationen, in der Cloud und in Ihrem Kopf bewältigt.

„Ich versuche, deinen Kopf freizubekommen, Neo. Aber ich kann dir nur die Tür zeigen. Du musst ihn durchgehen.“

Links: Videos, Präsentationen

Android-UI-Automatisierung

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

Da Android in der Mobilwelt immer beliebter wird, suchen App-Entwickler und OEM-Anbieter nach Möglichkeiten, um End-to-End-UI-orientierte Tests von Apps oder der gesamten Plattform durchzuführen. In dieser kurzen Zusammenfassung der aktuellen Lösungen für die UI-Automatisierung unter Android wird das Android Android Automator-Framework vorgestellt, das kürzlich veröffentlicht wurde. Außerdem erhalten Sie einen Einblick in das Framework sowie typische Anwendungsfälle und Workflows.

Links: Videos, Präsentationen

Appium: Automatisierung für mobile Apps

Jonathan Lipps (Sauce-Labs)

Appium ist ein Node.js-Server, mit dem native und hybride mobile Apps (iOS und Android) automatisiert werden. Die Appium-Philosophie schreibt vor, dass Apps nicht automatisiert werden sollten, um automatisiert zu werden, und dass Sie den Testcode in einer beliebigen Sprache oder einem beliebigen Framework schreiben können. Das Ergebnis ist ein Selenium WebDriver-Server, der wie ein natives Mobilgerät spricht. Appium wird auf echten Geräten und Emulatoren ausgeführt und ist eine Open-Source-Software. So sind sie ideal für den Einstieg in die Testautomatisierung für Mobilgeräte geeignet. In diesem Vortrag erläutere ich die Grundsätze, auf denen das Design von Appium basiert, sprechen über Appium im Bereich anderer Frameworks für mobile Automatisierung und stelle die Architektur vor, die diese Entwicklung ausmacht. Abschließend zeige ich Ihnen den Code für einen einfachen Test einer brandneuen mobilen App. Außerdem zeige ich, wie Appium diesen Test auf dem iPhone oder Android-Geräten ausführt.

Links: Videos, Präsentationen

Aufbau einer skalierbaren Testinfrastruktur für Mobilgeräte für Google+ für Mobilgeräte

Eduardo Bravo (Google)

Das Testen nativer Apps auf sinnvolle, stabile und skalierbare Weise ist eine Herausforderung. Das Google+-Team hat effiziente Lösungen zur Bewältigung dieser Probleme entwickelt, indem es für jedes der komplexen Testszenarien, die Mobilgeräte bereitstellen, die richtige Infrastruktur bietet. Unsere aktuelle Testinfrastruktur bietet iOS- und Android-Apps die richtigen Tools. So kann unser Entwicklungsteam sicher sein, dass neue Kunden nicht durch neue Änderungen beeinträchtigt werden.

Links: Videos, Präsentationen

Espresso: Neue Android-Benutzeroberfläche testen

Valera Zakharov (Google)

Aktualisierung [Oktober 2013]: Espresso ist jetzt Open Source. Weitere Informationen finden Sie unter https://code.google.com/p/android-test-kit/.

Die Entwicklung eines zuverlässigen Android-Tests sollte genauso schnell und einfach sein wie die Aufnahme einer Espressoaufnahme. Bei bestehenden Tools fühlt es sich leider eher an, als wäre ein Doppel-Caramel-Sauce-upside-down-Single-whip-half-decaf-latte – verwirrend und selten einheitlich. Espresso ist ein neues Android-Testframework, mit dem Sie schnell, schön und zuverlässig UI-Tests schreiben können. Die Core API ist klein, vorhersehbar und leicht verständlich – dennoch ist sie auch anpassbar. Bei Espressotests werden Erwartungen, Interaktionen und Assertions klar dargelegt, ohne dass Standardfunktionen, benutzerdefinierte Infrastruktur oder unübersichtliche Implementierungsdetails abgelenkt werden. Tests werden optimal schnell ausgeführt – Wartezeiten, Synchronisierungen, Schlaf und Abfragen bleiben erhalten und das Framework wird reibungslos bearbeitet und durchgesetzt, wenn Sie sich im Ruhezustand befinden. Viel Spaß beim Schreiben und Ausführen von UI-Tests – werfen Sie einen Blick auf Espresso.

Links: Videos, Präsentationen

Webleistungstests mit WebDriver

Michael Klepikov (Google)

Bei Tests der Webleistung wissen wir ziemlich gut, wie ein Seitenaufbau analysiert werden kann. Wir müssen jedoch über das Laden von Seiten hinausgehen: Moderne Apps sind sehr interaktiv und Operationen laden in der Regel nicht die gesamte Seite neu, sondern aktualisieren sie. Verschiedene Personen haben selbst WebDriver in die Prüf-Tools für die Webleistung integriert, was aber die Leistungstests zusätzlich vom Rest der Benutzeroberfläche erleichtert. Ich schlage vor, direkt in WebDriver selbst Leistungstests mithilfe der kürzlich hinzugefügten Logging API zu erstellen. So können Leistungsmesswerte erfasst werden, während regelmäßige Funktionstests ausgeführt werden. Dies ermöglicht eine viel nahtlosere Integration der Leistungstests in den Gesamtentwicklungs- und Testablauf. Sie ist außerdem viel weniger störend für die benutzerdefinierten Build-/Test-Toolchains, die fast jede große Organisation erstellt.

Ich zeige Ihnen das mit dem neuen ChromeDriver (WebDriver für den Chromium-Browser).

Links: Videos, Präsentationen

Kontinuierliche Maps-Datentests

Yvette Nameth (Google) und Brendan Dhein (Google)

Bei kontinuierlichen Tests werden in der Regel Unit- und Integrationstests durchgeführt. Wenn die von Ihrem Server verarbeiteten Daten aber die Hauptursache für Änderungen sind, wie sorgen Sie dafür, dass Nutzer der Daten sie wirklich nutzen können und nichts unter der Änderungsrate oder einer schlechten Änderung abstürzt? Wir besprechen Verfahren für kontinuierliche Datentests mit Beispielen aus Google Maps.

Links: Videos, Präsentationen

Schuldner automatisch bei fehlerhaften Builds finden, d.h. Wer hat den Build kaputtgemacht?

Celal Ziftci (UCSD) und Vivek Ramavajjala (Google)

Continuous Build ist eine der wichtigsten Infrastrukturen bei Google. Wenn ein Build fehlschlägt, ist es wichtig, die Fehleränderungsliste (CLCL)/Änderungsliste schnell zu ermitteln, damit das Problem behoben werden kann und der Build wieder grün wird.

Die Lösungen zur Sicherheitslückenerkennung sind für kleine und mittelgroße Builds verfügbar, nicht aber für große Integrationen.

Unser Leitfaden für die Suche macht das Ultimrit CL für große Builds automatisch in einem sehr kurzen Zeitraum mit großem Erfolg. Basierend auf der Produktionsnutzung mehrerer Projekte in den letzten 9 Monaten liefert die Suchfunktion die vielversprechenden Ergebnisse. In unserem Vortrag erfahren Sie, wie wir die Suche nach Urhebern implementiert haben und wie erfolgreich die Produktion ist.

Links: Videos, Präsentationen

Empirical Investigation of Software Product Quality

Katerina Goseva-Popstojanova (West Virginia University)

Die Produktlinien der Software weisen eine hohe Gemeinsamkeit zwischen den Systemen in der Produktlinie auf und haben eine gut definierte Anzahl möglicher Variationen. Auf der Grundlage von Daten aus zwei Fallstudien – einer mittelgroßen Industrieproduktlinie und einer großen, sich ständig entwickelnden Open-Source-Produktlinie – haben wir empirisch untersucht, ob die systematische Wiederverwendung die Qualität verbessert und die erfolgreiche Vorhersage zukünftiger Fehler aus bisher auftretenden Fehlern, Quellcode-Messwerte und Änderungsmesswerten unterstützt. Unsere Rechercheergebnisse bestätigten in einer Softwareproduktlinie, dass die Ergebnisse anderer Fehler eher im Zusammenhang mit Änderungsmesswerten und nicht auf statischen Codemesswerten stehen. Die Ergebnisse der Qualitätsprüfung ergaben, dass ältere Pakete (einschließlich Gemeinsamkeiten) kontinuierlich verändert wurden, aber eine geringe Fehlerdichte beibehalten haben. Außerdem verbesserte sich die Open-Source-Produktlinie im Zuge der Weiterentwicklung von Releases an der Qualität. Die Vorhersage, die auf allgemeinen linearen Regressionsmodellen basiert, hat die Pakete genau anhand ihrer nach der Veröffentlichung aufgetretenen Fehler in den Modellen eingestuft, die auf dem vorherigen Release erstellt wurden. Die Ergebnisse ergaben auch, dass mögliche Fehler nach der Veröffentlichung von zusätzlichen Produktlinien profitieren.

Links: Videos, Präsentationen

AddressSanitizer, ThreadSanitizer und MemorySanitizer – Dynamische Testtools für C++

Kostya Serebryany (Google)

AddressSanitizer (ASan) ist ein Tool, das Pufferüberläufe (in Stack, Heap und Global) und nutzungsfreie Programmfehler in C/C++-Programmen findet. ThreadSanitizer (TSan) findet Datenrennen in C/C++- und Go-Programmen. MemorySanitizer (MSan) ist ein noch in Arbeit befindliches Tool, das die Nutzung von nicht initialisiertem Arbeitsspeicher (C++) erkennt. Diese Tools basieren auf der Compiler-Instrumentierung (LLVM und GCC). Dadurch sind sie sehr schnell (z. B. werden sie nur 2-mal langsamer ausgeführt). Wir werden unsere Erfahrungen in umfangreichen Tests mit diesen Tools teilen.

Links: Videos, Präsentationen

Abschluss der Keynote – Drinking the Ocean – Finding XSS at Google Scale

Claudio Criscione (Google)

Cross-Site-Scripting (XSS) ist das moderne Äquivalent der mittelalterlichen schwarzen Seuche in der Webanwendung: Es ist weit verbreitet, es ist schlecht und es gibt nur wenige oder keine technischen Möglichkeiten, es zu erkennen, bis es zu spät ist. DOM XSS ist eine besonders teure Variante, da ein echter Browser oder ein Äquivalent benötigt wird, um erkannt zu werden. Ein schwieriges Problem, wenn wenig automatisierte Lösung verfügbar ist.

Wir brauchten leistungsstarke, selbstfahrende Tools, um DOM XSS zu Beginn des Entwicklungsprozesses zu identifizieren. Sie war von Entwicklern außerhalb des Sicherheitsteams einsetzbar: Wir wollten nur ein Produkt finden, das unseren riesigen, schnellen und hochkomplexen Anwendungskomplex scannt... ...und natürlich gab es keine. Deshalb haben wir einen eigenen entwickelt: einen Web-App-Scanner, der auf DOM XSS ausgerichtet ist und auf standardmäßigen Google-Technologien ausgelegt ist. Er wird in App Engine ausgeführt und nutzt den leistungsstarken Chrome-Browser und einige hunderte CPUs als Sicherheitsscanplattform.

Außerdem hat er sich über die Kompetenzen der Testmechanismen von Google geeinigt und befindet sich in unserer Testinfrastruktur, nicht als Instrument des Sicherheitsteams.

In diesem Gespräch erläutern wir unseren neuartigen Ansatz, die Herausforderungen, denen wir bei der Skalierung unseres Systems auf Google-Größe erlebt haben, und die Ideen, die hinter unseren Erkennungs- und Crawling-Modellen für JavaScript-intensive Anwendungen verborgen sind.

Links: Videos, Präsentationen