GTAC 2015: prezentacje

Uwagi otwierające

Yvette Nameth (Google)

Prezentacja otwierająca

Jürgen Allgayer (Google)

Uber – wyzwanie obejmujące testy w różnych aplikacjach i na różnych urządzeniach

Apple Chow (Uber) i Bian Jiang (Uber)

Linki: Wideo, Prezentacje

Po dołączeniu do Ubera w marcu 2015 r. natrafiliśmy na wyzwanie dotyczące Ubera w ramach badania narzędzi interfejsu dla naszych aplikacji mobilnych. Wiele testów zdrowego rozsądku wymaga, aby aplikacja pasażera i aplikacja kierowcy komunikowały się ze sobą i koordynowały ze sobą działania, co pozwoli na przeprowadzenie całościowego scenariusza testowania. W tym materiale zaprezentujemy nasze rozwiązanie niezależne od platformy o nazwie Octopus, na którym omawiamy, jak koordynuje komunikację w różnych aplikacjach działających na różnych urządzeniach. To rozwiązanie można wdrożyć w przypadku wszystkich testów, które wymagają koordynacji lub komunikacji w różnych aplikacjach lub na różnych urządzeniach (np. w grze z wieloma użytkownikami, w aplikacji do obsługi wiadomości lub komunikacji wielu użytkowników).

Automatyzacja testu wspomaganego przez robota

Hans Kuosmanen (OptoFidelity) i Natalia Leinonen (OptoFidelity)

Linki: Wideo, Prezentacje

OptoFidelity to fińska firma zajmująca się nowoczesnymi technologiami, która ma 10 lat doświadczenia w tworzeniu i dostarczaniu rozwiązań do automatyzacji testów i rozwoju. Omówimy nasze doświadczenia i przyszłe sposoby testowania nieuciążliwych metod testowania interfejsu użytkownika urządzeń mobilnych. Czy wiesz, że zespół Chrome OS używa pełnego systemu roboty do pomiaru opóźnień urządzeń z Androidem i Chrome OS?

Łamigłówki do zabawy i zyski: lekcje wyciągnięte z testowania integracji z platformami mobilnymi

Dan Giovannelli (Google)

Linki: Wideo, Prezentacje

Tworzenie aplikacji mobilnych jest trudne. Zbudowanie infrastruktury testowej jest trudne. Praca na wielu platformach nie jest łatwa. Połącz te 3 sposoby, aby odkryć przepis na katastrofę. W tym materiale Dan Giovannelli podzieli się swoimi doświadczeniami związanymi z wieloplatformowym projektem na infrastrukturę mobilną. Będzie rozmawiać o tym, co poszło jak należy, co poszło nie tak i czego chciałby się dowiedzieć. Zapoznaj się ze statystykami dotyczącymi projektowania narzędzi mobilnych dla inżynierów innych niż mobilny. Dowiedz się, co to jest „Matrix” i jak go pobić w swojej grze.

Automatyzacja testów na urządzeniach mobilnych z wykorzystaniem prawdziwych urządzeń

Jouko Kaasila (Bitbar/Testdroid)

Linki: Wideo, Prezentacje

Gry mobilne to najważniejsze kategorie, w których można obecnie zarabiać w sklepach z aplikacjami. Dlatego każda wersja gry na urządzeniu każdego użytkownika ma najwyższy priorytet dla każdego dewelopera. Mimo że weryfikacja jest tak ważna, jest bardzo mało przykładów lub platform do automatyzacji testowania gier mobilnych, które zmuszają deweloperów do (ręcznie) przeprowadzania gier, które nie są skalowane w takim stopniu, jak firmy zajmujące się grami. Główną przyczyną jest wyjątkowy charakter gier mobilnych jako aplikacji, ponieważ uzyskują one bezpośredni dostęp do ekranu i obejmują wszystkie usługi UI udostępniane przez system operacyjny, a także renderują większość platform do automatyzacji testów bezużytecznych, ponieważ tradycyjne obiekty nie są ujawnione.

Na szczęście dostępne są standardowe platformy automatyzacji testów mobilnych, które pozwalają zautomatyzować testowanie gier na urządzeniach mobilnych, wykorzystując do tego kreatywną i publicznie dostępną bibliotekę. W swojej prezentacji Jouko Kaasila z firmy Testdroid omawia 3 różne podejścia z rzeczywistymi przykładami i przykładowym kodem.

Sposób testowania zupy z komponentami

Toni Chang (Google)

Linki: Wideo, Prezentacje

Osoby, które spędzały zbyt dużo czasu na stabilizacji testów niepewnych, zgodziłyby się na to, że musimy rozłożyć testy. Jednak niektórym może być trudno i nie ma pewności, jak mogą to robić inni członkowie zespołu, którzy uważają, że potrzebujemy testu E2E do weryfikacji wszystkich scenariuszy. Czasem trudno jest zorientować się, do czego służy Twój produkt, gdy nie jesteś przyzwyczajony do jego wyświetlania w komponentach. Posłużym się więc abstrakcyjnym przykładem zupy zupy, aby pokazać, jak wygląda jej część i przeprowadzić testy.

Przeprowadzę Cię przez zabawną transformację testu E2E do testu składowego, który da Ci pewność, że końcowy produkt jest pewny. Być może dzięki temu spojrzeć na swoją usługę z innej perspektywy.

Automatyzacja testu Chromecasta

Brian Gogan (Google)

Linki: Wideo, Prezentacje

Internet spowodował powszechny wzrost liczby połączonych urządzeń. Weryfikowanie zachowania na różnych urządzeniach współdziałających stanowi poważne wyzwanie testowe. Aby przetestować Chromecasta, zrobiliśmy kilka rzeczy. Opracowujemy platformy testowania, infrastrukturę laboratoryjną i narzędzia do testowania, które opracowaliśmy, aby generować wiarygodne sygnały jakości. Omawiamy trudności w testowaniu usługi, która działa w głośnym środowisku sieciowym. Proponujemy, aby dopiero implementując narzędzia do testowania urządzeń, takich jak Chromecast, wprowadziliśmy innowacje w zakresie inżynierii oprogramowania.

Używanie robotów do testowania aplikacji na Androida

Dr.Shauvik Roy Choudhary (Georgia Tech/Checkdroid)

Linki: Wideo, Prezentacje

Roboty programowe, takie jak Małpa, mogą służyć do testowania aplikacji na Androida bez większego wysiłku ze strony użytkownika. W środowisku akademickim jest zaproponowanych kilka takich narzędzi, których celem jest automatyczne generowanie danych wejściowych do testowania aplikacji na Androida. W trakcie tej prezentacji przedstawię zestaw reprezentatywnych narzędzi do generowania danych testowych i przedstawię porównanie, aby podkreślić ich mocne strony i ograniczenia. Poznaj wewnętrzne zasady działania tych narzędzi i dowiedz się, jak ich używać do testowania aplikacji. Szczegółowe informacje o badaniu wraz z konfiguracją maszyny wirtualnej za pomocą narzędzi znajdziesz na stronie http://bear.cc.gatech.edu/~shauvik/androtest/.

Testy nie są niestabilne

Alister Scott (automatyzacja)

Linki: Wideo, Prezentacje

Niepewne testy są wynikiem błędu każdego automatycznego inżyniera testującego. Jak powiedział ktoś (prawdopodobnie Alister), że „wszechstronnie przeprowadza te same testy i uzyskuje inne wyniki”. Niepewne testy nie kończą się frustracją, ale być może nie ma czegoś takiego jak niepewny test, ale być może musimy spojrzeć na ten problem z innej perspektywy. Poświęcamy więcej czasu na tworzenie bardziej determinujących i łatwiejszych do przetestowania systemów niż na budowanie trwałych i trwałych testów. Alister opowie kilka przykładów o tym, jakie problemy z błędami testują się w ramach systemu i jak można je poprawić, tworząc lepsze systemy.

Zautomatyzowane testy wizualne na dużą skalę

Adam Carmi (narzędzia)

Linki: Wideo, Prezentacje

Zautomatyzowany test wizualny to ważny nowy trend w społeczności programistów lub testerów. Z tej prezentacji dowiesz się, czym są testy wizualne i dlaczego warto je zautomatyzować. Przyjrzyjmy się bliżej niektórym wyzwaniom technologicznym, jakie wiąże się z automatyzacją testów wizualnych, oraz pokazujemy, jak nowoczesne narzędzia do nich pomagają. Będziemy prezentować nowoczesne technologie, które umożliwiają przeprowadzanie testów wizualnych w różnych przeglądarkach i na różnych urządzeniach, a także kluczowe wskazówki, które pomogą Ci odnieść sukces dzięki testom wizualnym na dużą skalę.

Praktyczne testy regresji

Karin Lundberg (Twitter) i Puneet Khanduri (Twitter)

Linki: Wideo, Prezentacje

Twój zespół właśnie dokonał dużej refleksji nad usługą i przeszedł wszystkie testy dotyczące jednostek i integracji. Dobra robota! Ale to jeszcze nie koniec. Teraz musisz upewnić się, że żaden element nie został uszkodzony i nie ma żadnych błędów, które nie zostały jeszcze wykryte. Czas zacząć używać Diffy.

W przeciwieństwie do narzędzi zapewniających prawidłowe działanie kodu, takich jak testy jednostkowe lub testy integracji, Dyffy porównuje zachowanie zmodyfikowanej usługi poprzez porównanie instancji nowej usługi ze starą usługą, porównanie przykładowych żądań do każdej z nich, porównanie odpowiedzi i regresje regresji, które pojawiły się w porównaniach.

W końcu udało nam się właśnie udostępnić narzędzie open source i szybko staje się ono jednym z najpopularniejszych projektów open source na Twitterze.

Automatyczne testowanie ułatwień dostępu w aplikacjach na Androida

Casey Burkhardt (Google)

Linki: Wideo, Prezentacje

W tej prezentacji przedstawimy podstawowe informacje o ułatwieniach dostępu na platformie Androida i znamy typowe problemy z niepełnosprawnością, Poznaj nowe zasady testowania ułatwień dostępu na Androidzie i ich integrację z platformami do espresso i robotatric. Wreszcie dowiesz się, jak łatwo można dodać automatyczne sprawdzanie ułatwień dostępu do istniejących testów projektu na Androida.

Próbkowanie danych statystycznych

Celal Ziftci (Google) i Ben Greenberg (absolwent MIT)

Linki: Wideo, Prezentacje

Powszechną praktyką jest używanie próbek danych produkcyjnych w testach. Przykłady:

  • Test bezczynności: prześlij próbkę danych produkcyjnych do swojego systemu, aby sprawdzić, czy coś poszło nie tak.
  • Test A/B: przeprowadzaj duże operacje na danych produkcyjnych, sprawdzaj bieżące i nowe wersje systemu oraz zmieniaj dane wyjściowe w celu kontroli.

Aby uzyskać próbkę danych produkcyjnych, zespoły zwykle wykorzystują rozwiązania doraźne, takie jak:

  • Ręczne analizowanie rozkładu konkretnych pól (np. pól liczbowych)
  • Wybór całkowicie losowych próbek

Jednak tego typu rozwiązania mają poważne wady: mogą pomijać rzadkie zdarzenia (np. przypadki skrajne), co zwiększa ryzyko niewykrytych błędów w środowisku produkcyjnym. Aby zminimalizować to ryzyko, zespoły wybierają bardzo duże próbki. Jednak w przypadku tak dużych próbek jest to jeszcze więcej wad:

  • Rzadkie wydarzenia nadal mogą zostać pominięte.
  • Czas trwania testów znacznie się wydłuża,
  • Luki są zbyt duże, by zrozumiał je i dużo się powtarza.

W tej prezentacji zaproponujemy nowatorską metodę próbkowania danych statystycznych, która pozwala na „inteligentne” wybieranie próbki „dobrej” spośród danych produkcyjnych, które:

  • Gwarantuje, że rzadkie zdarzenia nie zostaną pominięte.
  • Minimalizuje rozmiar wybranej próbki, eliminując duplikaty.

Wykrywamy rzadkie/graniczne przypadki, ograniczamy rozmiar próbki do minimum, a dodatkowo pośrednio nie musimy ręcznie badać wyników testów/różnic między programistami. Obsługuje też równoległe wykonywanie kodu (np. MapRestrict), dzięki czemu w krótkim czasie można przetworzyć ogromne ilości danych i wybrać próbkę.

Infrastruktura automatyzacji Nest

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

Linki: Wideo, Prezentacje

Wizja Nest Home obejmuje inteligentne, połączone ze sobą urządzenia, dzięki którym Twój dom może być bezpieczniejszy, bardziej energooszczędny i świadomy. W tej części skupimy się na infrastrukturze automatyzacji i narzędziach, które opracowaliśmy, aby zrealizować tę wizję. Różne zespoły w Nest pracowały zarówno na systemach różnych platform, jak i na określonych urządzeniach i funkcjach, aby automatycznie testować i analizować regresje. Korzystając z konkretnych przykładów prawdziwych testów produktów, omówimy działanie różnych narzędzi w ramach infrastruktury do testowania pętli i regresji zasilania, a także zestawów narzędzi do wykrywania ruchu i kamer.

Generatory zdarzeń

Roussi Roussev (Splunk)

Linki: Wideo, Prezentacje

W tym materiale omówimy nasze doświadczenia związane z tworzeniem i używaniem generatorów zdarzeń oprogramowania w Splunk. Zainspirowane fizyką cząstek elementowych, przy użyciu których generatory zdarzeń stały się niezbędne do zrozumienia świata fizycznego, bez używania dużych maszyn eksperymentalnych, generatory logów ulepszyły sposób testowania wielu integracji z nowoczesnym i starszym oprogramowaniem innych firm. Omówienie podstawowych funkcji i wyzwań związanych z tworzeniem realistycznych logów

Synteza testowa wielowątkowa

Murali Krishna Ramanathan (Indyjski Instytut Nauki, Bangalore)

Linki: Wideo, Prezentacje

Subtelne błędy równoczesności w bibliotekach wielowątkowych, które powstają z powodu nieprawidłowej lub nieodpowiedniej synchronizacji, często bywają trudne do precyzyjnego określenia tylko przy użyciu technik statycznych. Z kolei skuteczność wykrywania dynamicznych detektorów zależy w dużym stopniu od wielowątkowych pakietów testowych, których wykonania można używać do wykrywania i uruchamiania błędów równoczesności, w tym wyścigów danych, zakleszczeń i naruszeń atomowych. Zwykle takie testy wielowątkowe muszą wywoływać określone kombinacje metod z obiektami biorącymi udział w wywołaniach, które są odpowiednio udostępniane, aby odsłonić błąd. Bez uprzedniej wiedzy o błędzie stworzenie takich testów może być wyzwaniem.

W tej prezentacji przedstawię lekką i skalowalną metodę syntezy testów na potrzeby wykrywania naruszeń bezpieczeństwa. Biorąc pod uwagę bibliotekę z wieloma wątkami i pakiet testów sekwencyjnych, opiszę w pełni zautomatyzowaną analizę, która analizuje sekwencyjne logi czasu wykonywania. Tworzy ona równoczesny program kliencki, który na potrzeby zachęcania do wykonywania zadań równoczesnych wywołuje obiekty biblioteki za pomocą wywołań metod bibliotek. Wyniki eksperymentu dotyczące różnych dobrze przetestowanych bibliotek Java potwierdzają skuteczność naszego podejścia do wykrywania wielu złożonych błędów.

Włączanie eksperymentów strumieniowania w Netflix

Minial Mishra (Netflix)

Linki: Wideo, Prezentacje

Netflix ma 69+ milionów strumieniowych wrażeń użytkownika. Aby szybko to poprawić, przenieśliśmy algorytmy strumieniowego przesyłania danych do warstwy JavaScript. Stanowiło to unikatowe wyzwanie dla często udostępnianego klientom JavaScriptu, które miało bezpośredni wpływ na jakość strumieniowego przesyłania danych. Wykorzystując paradygmat stałego dostarczania, który jest powszechnie stosowany w przypadku aplikacji usług, wykorzystaliśmy go do wycofania ryzyka przez cały cykl życia meldowań i częstego dostarczania aktualizacji. W tym materiale opiszę kluczowy element tego modelu, aby umożliwić aktualizowanie oprogramowania. Przeanalizujemy procedurę wdrażania klienta JavaScript i narzędzi, aby dokładnie porównać stan z obecną wersją. Przedstawimy też wyzwania, z którymi zmaga się ten proces.

Sztuczny internet

Yabin Kang (LinkedIn)

Linki: Wideo, Prezentacje

Omawiamy w nim nowy system szyderzowania, który pomaga w fałszowaniu całego ruchu wychodzącego na potrzeby testów integrowania poziomów usług. Omówimy w nim także strategię hackingu w LinkedIn. Podziel się wiedzą i wnioskumi.

Efektywne testowanie odbiornika stacji GPS

Andrew Knodt (Lockheed Martin)

Linki: Wideo, Prezentacje

Obsługa istniejących stacji monitorowania GPS używanych przez siłę powietrzną jest trudna. Pracujemy nad zastąpieniem ich modelem SDR (Accelerated Software Deficed Radio Definitions). Omówimy poszczególne wyzwania dotyczące tego specjalistygo odbiornika GPS wraz z jego opisem. Koncentrując się na aplikacji GPS, można łatwo zastosować te metody testowania do innych działań w obszarze SDR na poziomie produkcyjnym.

Automatyzacja na urządzeniach do noszenia

Anurag Routroy (Intel)

Linki: Wideo, Prezentacje

Ze względu na coraz większą popularność technologii noszenia do noszenia osobistych i biznesowych wszystkie firmy, które działają na rynku Android, skupiły się na tej nadchodzącej technologii. W związku z tym tworzenie aplikacji z użyciem urządzenia do noszenia jest łatwiejsze, co zwiększa popularność. Dlatego automatyzacja na urządzeniach do noszenia staje się ważna, ponieważ pozwala ograniczyć liczbę testów i zwiększyć wydajność.

Ujednolicone testowanie integracji infrastruktury i CI (Docker/Vagrant)

Maxim Guenis (dźwięk naddźwiękowy)

Linki: Wideo, Prezentacje

Deweloperzy codziennie mają problem z przygotowaniem działającego lokalnego środowiska programistycznego podczas programowania, debugowania i kontynuowania procesu integracji.Możemy rozwiązać ten problem, integrując Dockera i oprogramowanie do użycia w narzędziu CI. To połączenie umożliwia kontrolowanie aplikacji na poziomie stosu na komputerach programistycznych, a jednocześnie pozwala używać tego samego stosu w testach integracji. W trakcie tej rozmowy omówimy:

  • Wykorzystanie Dockera w testach integracji CI
  • Kontrola stosu, a nie pojedynczej aplikacji czy Dockera.
  • Kontrola wersji środowisk programistycznych i testowych, którą można łatwo rozłożyć za pomocą narzędzi git i Dockera.
  • Bezproblemowa obsługa Dockera na Macu i oknach.

Eliminowanie bezużytecznych bitów testowych

Patrick Lam (University of Waterloo)

Linki: Wideo, Prezentacje

Uzyskanie interesujących wyników analizy technik analizy statycznej dla pakietów testowych Dowiedzieliśmy się już, że większość testów to prosty kod liniowy, czyli sekwencja instrukcji konfiguracji z ładunkiem złożonym z asertów. Pokazujemy, jak analiza statyczna może identyfikować bezużyteczne deklaracje konfiguracji, umożliwiając programistom uproszczenie i przyspieszenie przypadków testowych.

Pokrycie nie jest silnie powiązane z skutecznością pakietu testowego

Laura Inozemtseva (University of Waterloo)

Linki: Wideo, Prezentacje

Zakres pakietu testowego jest często używany jako pośrednik w wykrywaniu błędów. Poprzednie badania, które badały korelację między pokryciem kodu a skutecznością pakietu testowego, nie pozwoliły uzgodnić charakteru i silności relacji między tymi cechami pakietu testowego. Poza tym wiele badań przeprowadzono z wykorzystaniem niewielkich lub syntetycznych programów, przez co nie wiadomo, czy ich wyniki są uogólnione na większe programy, a niektóre badania nie wzięły pod uwagę wpływu czynników wpływających na rozmiar pakietu testowego. Rozszerzyliśmy te badania, oceniając związki między rozmiarem pakietów testowych, zasięgiem i skutecznością w realistycznych programach w języku Java. Nasze badanie jest największe w historii. Zmierzyliśmy zakres wyników wyciągu, zasięg decyzji i zmodyfikowany stan tych apartamentów i wykorzystaliśmy testy mutacji do oceny skuteczności wykrywania błędów. Okazało się, że korelacja między pokryciem a skutecznością jest niska, gdy liczba przypadków w tym pakiecie jest ograniczona. Poza tym stwierdziliśmy, że silniejsze formy zakresu danych nie zapewniają dokładniejszych informacji na temat skuteczności pakietu.

Fałszywe backendy z RpcReplay

Matt Garrett (Google)

Linki: Wideo, Prezentacje

Ważne jest, by testy były stabilne i szybkie. Jest to trudne, gdy serwery opierają się na wielu backendach. Deweloperzy muszą wybrać między długimi i niestabilnymi testami oraz pisaniem i podtrzymywaniem fałszywych implementacji. Zamiast tego testy można przeprowadzać za pomocą ruchu rejestrowanego z tych backendów. Dzięki temu programiści mogą szybko wypróbować je na rzeczywistych backendach.

Laboratorium automatyzacji testów Chrome OS

Simran Basi (Google) i Chris Sosa (Google)

Linki: Wideo, Prezentacje

Chrome OS obecnie dostarcza ponad 60 różnych Chromebooków/różnych urządzeń z własnym oprogramowaniem. W terenie klienci otrzymują nowy system co 6 tygodni. Nie dałoby się tego zrobić bez rozbudowanego systemu weryfikacji ciągłego integrowania systemów, który obejmuje ponad 200 deweloperów. W tym materiale opisujemy ogólną architekturę, ze szczególnym uwzględnieniem testów zautomatyzowanych. Ponadto omawiamy Moblab (skrót od Mobile (test)) – całą infrastrukturę automatyzacji testów działającą w jednym urządzeniu z Chromeboksem. Wielu z nich korzysta z tego systemu, aby mogli przeprowadzać takie testy jak my.