GTAC 2013: prezentacje

Wszystkie nagrania wideo i slajdy z GTAC 2013 są dostępne publicznie. Możesz obejrzeć je z playlisty YouTube GTAC 2013 lub przejrzeć poniższe wywiady:

Uwagi wstępne

Tony Voellm (Google)

Linki: wideo

Prezentacja otwierająca – ewolucja od kontroli jakości do inżynierii testowej

Ari Shamash (Google)

Masz stworzoną aplikację. Udało Ci się osiągnąć mistrzostwo, stworzyć pewną liczbę filmów, zebrać środki, wyrzucić wszystko i zacząć od początku. Wymagania dotyczące nowych funkcji są jednak wysokie. Stąd pojawia się prośba o przejście na niespotykaną dotąd skalę. Kurza twarz! Co dalej?

Nie możesz zrezygnować z początków i zacząć od zera – wystarczy, że zmienisz swoje obecne ustawienia i dodasz kolejne wysokiej jakości z dużą prędkością. Musisz też zadbać o to, aby produkt, który jest już dostępny, nie działał prawidłowo. Jak to zrobić? Na szczęście w branży inżynierii oprogramowania istnieje nowe pole, które odnosi się do tego typowego scenariusza: w Google nazywamy to „inżynierią testową”.

Podczas tej prezentacji skupimy się na tym, czym jest inżynieria testowa, jak zmieniło się to w ramach kontroli jakości oraz jak cała branża wdrożyła inżynierię testową (z określonymi przykładami jej wdrożenia w Google).

Linki: Wideo, Prezentacje

Testowanie systemów na dużą skalę @Twitter

James Waldrop (Twitter)

James omawia narzędzia, proces i filozofię, które pozwalają przetestować wydajność na Twitterze. W szczególności podkreślamy znaczenie biblioteki open source Iago do testowania obciążenia, którą napisał, aby umożliwić zespołom inżynierów Twittera przeprowadzanie testów obciążenia przed wdrożeniem kodu w środowisku produkcyjnym. W trakcie prezentacji omówimy szczegóły wdrożenia niektórych z tych testów (w tym kod źródłowy) i sposobów zarządzania złożonymi czynnikami, takimi jak protokół OAuth czy dowolne protokoły Thrift.

Linki: Wideo, Prezentacje

Jak przetestować system operacyjny urządzenia mobilnego?

David Burns (Mozilla) i Malini Das (Mozilla)

Jest to problem, który pojawił się w przeglądarce Mozilla, gdy chcieliśmy wejść do świata Firefoksa. Od czego zacząć i jak to zrobić, ma być ciekawym zadaniem. Posłuchaj, jak rozwiązaliśmy ten problem i jak stworzyliśmy nową platformę.

Linki: Wideo, Prezentacje

Automatyzacja mobilna w potoku ciągłego dostarczania

Igor Dorovskikh (Expedia) i Kaustubh Gawande (Expedia)

Na początku 2012 roku firma Expedia zaczęła inwestować w przeglądarkę mobilną oraz aplikacje na iOS i Androida. W tym samym czasie testerzy zaczęli opracowywać rozwiązania do automatyzacji testów, które pozwalały od samego początku uwzględniać jakość i możliwość testowania produktów. W tym materiale podzielimy się doświadczeniem i nauką wykorzystania narzędzi open source do tworzenia zautomatyzowanych testów w środowisku Expedia Agile i ciągłym dostarczaniu. Porozmawiamy o piramidzie testowej i omówimy bardziej szczegółowe narzędzia open source, które się sprawdziły. Do naszych narzędzi open source należą: Cucumber, Web Autor Selenium-WebDriver, iOS Autoration Frank, automatyzator Androida i Calabash oraz system ciągłej integracji Jenkins. Ponadto przedstawimy niektóre zasady Agile dotyczące wdrażania, takie jak: oprogramowanie do parowania, programowanie par, konstrukcje i testy promieniowe. Na koniec opowiem o korzyściach, jakie zyskały nasze inwestycje w Elastyczna i automatyzacja testów, a także o tym, jak skutecznie pomagają nam one osiągać cele związane z trybem ciągłego dostarczania.

Linki: Wideo, Prezentacje

Zautomatyzowane testy dekodera za pomocą GStreamer i OpenCV

David Röthlisberger (Ty)

W ciągu 3 minut stworzymy system rozpoznawania obrazów wykorzystujący narzędzia wiersza poleceń GStreamer i OpenCV. (GStreamer to platforma open source do obsługi multimediów; OpenCV – „Open Computer Vision” – to biblioteka open source do przetwarzania obrazów).

Doskonałym przykładem takiego systemu jest http://stb-tester.com – narzędzie typu open-source opracowane na bazie YouView, które umożliwia automatyzację testów interfejsu dekoderów. Opisujemy strategie i testy STB, elastyczność oferowanego przez GStreamer narzędzia, niektóre możliwości, jakie się z nimi wiążą, oraz wyzwania, jakie przed nimi stoją.

Linki: film

Webdriver w Chrome

Ken Kania (Google)

Chrome od samego początku był dostępny tylko w systemie Windows, a następnie rozwinął się do wersji na komputery z systemem macOS, Linux i ChromeOS oraz na Androida i iOS. Testowanie aplikacji internetowych na tych platformach było trudne i wymagało różnych metod automatyzacji. W tym artykule omawiamy działania, które zespół Chrome wykonuje, aby udostępnić funkcję WebDriver w Chrome na wszystkich platformach. Będzie to dotyczyć technicznego podejścia, ale skoncentrujemy się na tym, jak programiści mogą korzystać z nowego ChromeDriver do pisania testów dla różnych platform Chrome. Omówimy też bieżący stan projektu i plan rozwoju na przyszłość.

Linki: Wideo, Prezentacje

Karma – testowy bieg JavaScript

Vojta Jina (Google)

Wprowadzenie do Karma – testującego, który zapewnia bezproblemowe i przyjemne testowanie aplikacji JavaScript w prawdziwych przeglądarkach.

Testy nie są opcjonalne, jeśli tworzysz aplikację w języku JavaScript, która działa w wielu przeglądarkach i na różnych urządzeniach. Wykonywanie testów we wszystkich tych środowiskach jest jednak trudne. Karma z łatwością przekształca to zadanie w tort. Umożliwia wykonywanie testów JavaScript w prawdziwych przeglądarkach i na urządzeniach, takich jak telefon czy tablet, bezpośrednio z terminala lub ulubionego IDE.

Linki: film

Zautomatyzowane pomiary jakości wideo

Patrik Höglund (Google)

Tak, możliwe jest automatyczne testowanie złożonych pomiarów, takich jak jakość filmu. Podczas tej prezentacji pokażemy, jak stworzyć ciągły, kompleksowy, kompleksowy test rozmowy wideo WebRTC. Przyjrzymy się ogólnie temu łańcuchowi narzędzi i poznaliśmy wyzwania, z jakimi musieliśmy się zetknąć. To idealne rozwiązanie, jeśli chcesz się zainspirować do ulepszenia testowania swoich mediów.

Linki: Wideo, Prezentacje

Kiedy zdarza się coś złego w dobrych aplikacjach...

Minal Mishra (Netflix)

Rozkwit branży komputerów i tabletów zaowocował rozwojem branży oprogramowania dzięki platformom do tworzenia aplikacji. Tworzenie aplikacji konsumenckich na platformach obliczeniowych ma własny, magiczny interfejs dla użytkowników. Firmy tworzące takie aplikacje zawsze starają się pokazać klientom, jak mogą najlepiej. Największym wyzwaniem przy tworzeniu aplikacji jest jednak dopiero po wdrożeniu pierwszej wersji aplikacji. Konsumenci i producenci oprogramowania chcą jak najszybciej korzystać z najnowszych funkcji. Powoduje to ciągłe rezygnacje z kodu w każdej warstwie stosu. Jako inżynierowie z zakresu automatyzacji UI opracowujemy wiele systemów wykrywania, które pozwalają wychwycić problemy z aplikacjami wcześniej niż w przyszłości. Podczas tej prezentacji opowiem o naszych wyzwaniach i sukcesach związanych z jednym z systemów wykrywania, które pomogły znaleźć problemy poza warstwą aplikacji, ale nadal wywierają negatywny wpływ na wrażenia użytkownika.

Linki: Wideo, Prezentacje

Testowanie gier edukacyjnych i edukacyjnych do testów

Tao Xie (Uniwersytet Karoliny Północnej)

W ramach tej prezentacji przedstawiliśmy usługę Pex4Fun (http://www.pexforfun.com/), która wykorzystuje automatyczne generowanie testów do usprawniania automatycznego oceniania w programie programowania online, który może skalować się do setek tysięcy użytkowników. Nauka gry odbywa się poza salą lekcyjną, a uczniowie poznają różne umiejętności programowania i programowania, w tym umiejętność pisania testów jednostkowych z parametrami. Pex4Fun w znacznym stopniu przyczynia się do znanego problemu oceniania projektów, a także zapewnia zabawę w naukę opartą na interaktywnych grach. Pex4Fun zyskuje na popularności w społeczności: od chwili jej publicznego udostępnienia w czerwcu 2010 r. liczba kliknięć przycisku „Zapytaj Pex!” (wskazujących na to, że użytkownicy próbowali rozwiązywać problemy w grze Pex4Fun) na początku 2013 roku przekroczyła milion.

Linki: Wideo, Prezentacje

Zakończenie prezentacji – jak Facebook testuje Facebooka na Androidzie

Simon Stewart (Facebook)

Facebook to jedna z najpopularniejszych aplikacji na Androida. Z tej prezentacji dowiesz się, jak Facebook dba o jak najlepszą jakość danych. Opowiemy o wszystkich kwestiach, od zarządzania kodem, przez rozwiązania testowe, aż po testy wewnętrzne.

Linki: Wideo, Prezentacje

Prezentacja otwierająca – test JavaScript – architektura aplikacji pod kątem możliwości testowania

Mark Trostler (Google)

Testowy kod JavaScript to proces. Niezależnie od tego, czy zaczynasz od pustej planszy czy już wdrożonej aplikacji (lub gdzieś pośredniego), niezbędne jest proste, przejrzyste i efektywne testowanie kodu JavaScript. Kod, którego nie można przetestować, zostanie przepisany.

JavaScript jest wyjątkowy ze względu na niezliczone środowiska, w których działa. Istnieje jednak kilka sprawdzonych metod testowania, które można przetestować w innych językach. Oczywiście wciąż istnieją wyjątkowe wyzwania, przed którymi programiści JavaScript muszą pisać i testować kod.

Jakie wzorce umożliwiają testowanie kodu? Które przeciwciała utrudniają badanie? Jakie dane i zdrowe wytyczne pomagają ocenić możliwość przetestowania naszego kodu? Co się stanie, gdy rozpocznie się proces testowania kodu?

Dołącz do mnie, by podzielić proces pisania testów JavaScriptu. Przeanalizujemy pomysły, wzorce i metodologie, które znacznie zwiększają możliwość testowania, a tym samym konserwację, poprawność i długi czas trwania Twojego kodu. Niezależnie od tego, czy utworzysz kod JavaScript po stronie klienta czy po stronie serwera, jakość tego kodu znacznie poprawi jakość.

Linki: Wideo, Prezentacje

Breaking the Matrix – Android Test at Scale

Thomas Kunki (Google), Stefan Ramsauer (Google) i Valera Zakharov (Google)

Chcesz przygotować czerwoną pigułkę?

Komórki zmieniły sposób, w jaki ludzie korzystają z komputerów. To świetne, ale jako inżynierowie zmagamy się z coraz większą liczbą środowisk, w których działa nasz kod. Zależy nam na czasach, kiedy przeglądarki wybiorą tylko kilka przeglądarek i rozdzielczości ekranu. Jak inżynierowie mogą radzić sobie z Matrix? Pokażemy, jak Google radzi sobie z testowaniem na stacjach roboczych, w chmurze i w głowie...

„Próbuję uwolnić umysł, Neo. Mogę jednak pokazać Ci tylko drzwi. To Ty musisz przejść ten krok”.

Linki: Wideo, Prezentacje

Automatyzacja UI Androida

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

Ponieważ Android zdobywa popularność w świecie mobilnym, programiści i producenci OEM rozważają sposoby kompleksowego testowania aplikacji oraz całej platformy na podstawie interfejsu użytkownika. W tym krótkim omówieniu istniejących rozwiązań do automatyzacji UI Androida znajdziesz w nim niedawno opublikowane informacje o platformie.

Linki: Wideo, Prezentacje

Appium: automatyzacja aplikacji mobilnych

Jonathan Lipps (Laboratorium Sauce)

Appium to serwer Node.js automatyzujący natywne i hybrydowe aplikacje mobilne (zarówno na iOS, jak i na Androida). Zgodnie z filozofią Appium aplikacje nie powinny być modyfikowane, aby działały w sposób zautomatyzowany. Musisz też mieć możliwość pisania kodu testowego w dowolnym języku i platformy. W rezultacie powstał serwer Selenium WebDriver, który mówi jak urządzenie mobilne. Appium działa na prawdziwych urządzeniach i emulatorach. Jest to rozwiązanie typu open source, dzięki któremu świetnie nadaje się do testowania automatyzacji na urządzeniach mobilnych. W tym artykule omawiam zasady, na których opiera się projektowanie aplikacji Appium, omawiamy Appium w zakresie innych platform automatyzacji mobilnej i przedstawiamy architekturę, która realizuje magię. Na koniec przeanalizuję kod prostego testu nowej aplikacji mobilnej i zaprezentuję jej działanie na iPhonie i Androidzie.

Linki: Wideo, Prezentacje

Tworzenie skalowalnej infrastruktury mobilnej na potrzeby Google+ dla komórek

Eduardo Bravo (Google)

Testowanie aplikacji natywnych w znaczny, stabilny i skalowalny sposób to wyzwanie. Google+ oferuje takie rozwiązania, które pozwalają radzić sobie z tymi problemami, zapewniając odpowiednią infrastrukturę do wyświetlania złożonych scenariuszy testowania na urządzeniach mobilnych. Nasza obecna infrastruktura testowa udostępnia odpowiednie narzędzia zarówno w aplikacjach na iOS, jak i na Androida, dając naszemu zespołowi programistów pewność, że nowe zmiany nie będą miały wpływu na obecnych klientów.

Linki: Wideo, Prezentacje

Espresso: nowy interfejs testowania Androida

Valera Zakharov (Google)

Aktualizacja [październik 2013]: espresso jest teraz oprogramowaniem typu open source. Zobacz https://code.google.com/p/android-test-kit/.

Opracowanie niezawodnego testu Androida powinno być tak szybkie i proste, jak przygotowanie espresso. Niestety, w przypadku dotychczasowych narzędzi wydaje się, że rozwiązanie tego problemu może być niejasne i rzadkie, podobnie jak robienie podwójnej kieliszka do karmamelki. Espresso to nowa platforma do testowania Androida, która umożliwia szybkie pisanie pięknych, atrakcyjnych i niezawodnych testów interfejsu użytkownika. Podstawowy interfejs API jest mały, przewidywalny i łatwy do opanowania, chociaż jest też otwarty na dostosowywanie. W testach espresso wyraźnie widać ich oczekiwania, interakcje i wersje, bez rozpraszania powtarzalnych elementów, niestandardowej infrastruktury czy chaotycznych aspektów implementacji. Testy są przeprowadzane w optymalnym czasie – możesz czekać, przeprowadzać synchronizację, zasypiać i przeprowadzać ankiety z zachowaniem czujności. Pozwól, by platforma potrafiła płynnie dostosowywać i twierdzić w Twoim interfejsie podczas spoczynku. Zacznij pisać i wykonywać testy interfejsu – spróbuj espresso.

Linki: Wideo, Prezentacje

Testowanie wydajności witryny za pomocą komponentu WebDriver

Michał Klepikow (Google)

Podczas testowania wydajności stron internetowych dobrze znamy sposób analizowania wczytywania strony. Musimy jednak pójść o krok dalej – nowoczesne aplikacje są bardzo interaktywne, a działania zwykle nie ładują całej strony, tylko ją aktualizują. Osoby te zostały przeze mnie zintegrowane z WebDriver w ramach testów wydajności stron, co pomaga, ale wciąż oddziela testy wydajności od reszty pakietu testów interfejsu użytkownika. Proponuję wprowadzenie funkcji testowania wydajności bezpośrednio w usłudze WebDriver za pomocą ostatnio dodanego interfejsu Logging API. Pozwala to zbierać dane o skuteczności podczas regularnych testów funkcjonalnych, co pozwala na znacznie płynniejszą integrację testów wydajności z całym procesem tworzenia i testowania. Są też znacznie mniej uciążliwe dla niestandardowych łańcuchów tworzenia i testowania, które tworzy prawie każda duża organizacja.

Pokażę to dzięki nowej generacji ChromeDriver (WebDriver w przeglądarce Chromium).

Linki: Wideo, Prezentacje

Ciągłe testowanie danych Map

Yvette Nameth (Google) i Brendan Dhein (Google)

Ciągłe testowanie polega zwykle na przeprowadzaniu testów jednostkowych i testów integracji. Ale co jest główną przyczyną zmian w danych przetwarzanych przez serwer – co możesz zrobić, by mieć pewność, że konsumenci będą je wykorzystywać i że nie dojdzie do awarii przy częstotliwości zmian ani niewłaściwych zmianach? Przyjrzymy się technikom ciągłego testowania danych z przykładami z Map Google.

Linki: Wideo, Prezentacje

Automatyczne znajdowanie wadliwych budynków – tzn. kto przełamał kompilację?

Celal Ziftci (UCSD) i Vivek Ramavajjala (Google)

Ciągła kompilacja to jedna z najważniejszych infrastruktur w Google. W przypadku awarii kompilacji ważne jest szybkie wskazanie listy zmian lub list zmian powodującej problem. W ten sposób możliwe będzie naprawienie kompilacji ponownie.

Rozwiązania do wykrywania cukru występują w przypadku małych i średnich kompilacji, ale nie sprawdzają się przy dużych kompilacjach.

Znajdowanie sprawcy automatycznie wykrywa najbardziej wiarygodną listę zmian w dużych ilościach kompilacji w krótkim czasie. Na podstawie wykorzystania produkcyjnego w wielu projektach w ciągu ostatnich 9 miesięcy narzędzie do wykrywania przyczyn problemu daje bardzo obiecujące wyniki. Weź udział w rozmowie, aby dowiedzieć się, jak wdrożyliśmy narzędzie do wyszukiwania sprawców, jak ono działa i jak wygląda.

Linki: Wideo, Prezentacje

Empiryczne badanie jakości linii produktów oprogramowania

Katerina Goseva-Popstojanova (Uniwersytet Wirginii Zachodniej)

Linie produktów oprogramowania charakteryzują się wysokim stopniem podobieństwa wśród systemów z tej linii oraz dużą liczbą możliwych odmian. Na podstawie danych wyodrębnionych ze 2 studiów przypadku – średniej linii produktów przemysłowych i dużej, stale zmieniającej się linii produktów open source przyjrzeliśmy się empirycznie, jeśli systematyczne ponowne wykorzystanie poprawia jakość i umożliwia nam przewidywanie ewentualnych przyszłych błędów wynikających z wcześniejszych błędów, kodu źródłowego i zmian danych. W wynikach naszych badań stwierdzono, że w ustaleniu linii produktów program ustaleń innych użytkowników ma większą skorelację ze zmianami danych niż ze statycznymi danymi kodu. Wyniki oceny jakości wykazały, że chociaż starsze pakiety (w tym wspólne) stale się zmieniały, zachowały niską gęstość błędów. Ponadto linie produktów open source polepszały się pod względem jakości, w miarę jak rozwijały się kolejne wersje. Prognoza oparta na uogólnionych modelach regresji liniowej prawidłowo określiła pakiety zgodnie z ich błędami po premierze za pomocą modeli opartych na poprzedniej wersji. Wyniki wykazały też, że przewidywanie awarii po wdrożeniu przynosi dodatkowe korzyści w postaci linii produktów.

Linki: Wideo, Prezentacje

AddressSanitizer, ThreadSanitizer i MemorySanitizer – dynamiczne narzędzia do testowania C++

Kostya Serebryany (Google)

AddressSanitizer (ASan) to narzędzie wykrywające nadmiarowe bufory (w stosie, stercie i globalnych) oraz błędy typu „after-free” w programach C/C++. ThreadSanitizer (TSan) znajduje wyścigi danych w programach C/C++ i Go. Zapamiętaj Za pomocą tych narzędzi podzielimy się swoim doświadczeniem w testowaniu na dużą skalę.

Linki: Wideo, Prezentacje

Prezentacja na zakończenie rozmowy – picie oceanu – znalezienie odpowiedniego poziomu XSS na dużą skalę

Claudio Criscione (Google)

XSS to technologia, która w internecie jest średnio odpowiednikem plagi w średniowieczu w świecie aplikacji internetowych. Jest szeroko rozchwytywana i nie kryje się za późno, a technologia w zakresie wykrywania jest bardzo niewielka. DOM XSS to wyjątkowo nieprzyjemna odmiana, która wymaga wykrycia prawdziwej przeglądarki lub odpowiednika tego problemu – jest to problem z niewielkim dostępnym rozwiązaniem automatycznym.

Potrzebowaliśmy zaawansowanych, samoobsługowych narzędzi do identyfikowania DOM XSS na wczesnym etapie rozwoju programowania, z których mogli korzystać inżynierowie spoza zespołu ds. bezpieczeństwa. Chcieliśmy, aby usługa mogła skanować nasz ogromny, szybko działający, wysoce zbity korpus aplikacji... i oczywiście nie znaleźliśmy. Dlatego stworzyliśmy własny skaner aplikacji internetowych na DOM XSS wykorzystujący standardowe technologie Google. Działa w App Engine i wykorzystuje zaawansowaną przeglądarkę Chrome oraz kilkaset procesorów jako platformę skanowania zabezpieczeń.

Jest to również miła osoba arbitrażu w Google: znajduje się w naszej infrastrukturze testowej, a nie w zespole ds. bezpieczeństwa.

W tej prezentacji opisujemy nowe podejście, wyzwania stojące przed skalowaniem naszego systemu do rozmiaru Google, oraz pomysły na nasze modele wykrywania i indeksowania w aplikacjach wymagających JavaScriptu.

Linki: Wideo, Prezentacje