n+1 sposobów na automatyczne testy aplikacji mobilnych WrotQA, 20.08.2014 webinar Łukasz Siudakiewicz Damian Szczurek Automation Test Engineer



Podobne dokumenty
Automatyczne testowanie aplikacji Android

Wstęp do testowania : Szymon Ramczykowski

Testowanie aplikacji mobilnych z ukierunkowaniem na system Android

Automatyzacja Testowania w WEB 2.0

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Słowa kluczowe jak góry lodowe

Ty też jesteś testerem aplikacji mobilnych. Ewa Bielska, WrotQA, 8 czerwca 2016

Automatyzacja testów aplikacji webowych w Selenium podstawy. Natalia Krawczyk

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Automatyzacja narzędziami open source nie musi być trudna

Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Spis treści. Przedmowa Karolina Zmitrowicz, Adam Roman. Część I. Organizacja i procesy 1

Aplikacje WWW - lab 11

Przegląd narzędzi do automatycznego testowania aplikacji internetowych. Jan Płoszczyca SKISR 2006

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Wprowadzenie do Behaviordriven

METODY PROGRAMOWANIA

REFERAT PRACY DYPLOMOWEJ

Tworzenie własnych Smart Mobile Apps dzięki MobileHMI. ICONICS Worldwide Customer Summit

Behavior Driven Development (BDD)

Android tworzenie aplikacji mobilnych

Michał Sierzputowski. Zautomatyzuj swoje testy automatyczne oparte o Selenium

Camspot 4.4 Camspot 4.5

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Wyzwania w automatyzacji Selenium WebDriver

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Testowanie aplikacji Java Servlets

Systemy operacyjne na platformach mobilnych

Warsztat: "Automatyzacja testów (JAVA) - od podstaw"

Programowanie i projektowanie obiektowe

Systemy operacyjne na platformach mobilnych

Instalujemy środowisko. Hello World! Odczyt/zapis informacji do komponentów na formie. onclick()

Laboratorium Programowania Kart Elektronicznych

Laboratorium Programowania Kart Elektronicznych

Automatyzacja bez nadmiernego bólu. Piotr Januszek

Google Android. Opracował Maciej Ciurlik

Exulto Software House

Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego.

Testy aplikacji webowych

Szkolenie: Automatyzacja testowania

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Acceptance Test Driven Development wspierane przez narzędzie ROBOT Framework. Edyta Tomalik Grzegorz Ziemiecki

Tworzenie cross-platformowych aplikacji w Xamarin.Forms

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Struktury systemów operacyjnych

PRZEWODNIK PO PRZEDMIOCIE

COMMAX CDV-70UX - USTAWIENIE PRACY URZĄDZEŃ MOBILNYCH

Nowocześnie zaprojektowana e-usługa - studium przypadku

Program szkolenia: JavaScript Craftsmanship

Architektura systemów webowych wysokiej przepustowości. na przykładzie Wikia

Metasploit Part 1. The Beginning

Systemy operacyjne na platformach mobilnych 2 Platforma Maemo

TorqueBox. Moc Javy piękno Rubiego

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Programowanie warstwy klienta w aplikacji JavaEE

NASZA MISJA. wszystkie nasze dzialania sfokusowane sa na efektywną, partnerską współprace.

Systemy operacyjne na platformach mobilnych

Android, wprowadzenie do SDK

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Bezpieczeństwo systemów internetowych

1. Pobierz darmową aplikację BlueStacks ze strony

Języki programowania do zastosowań biomedycznych

Programowanie Komponentowe WebAPI

Dokumentacja użytkownika

PRZETWARZANIE ROZPROSZONE ZADAN` Mariusz Gil 4Developers 2012, Poznań

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

Laboratorium Programowania Kart Elektronicznych

UX ma znaczenie. O różnych podejściach do projektowania interakcji na mobile.

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

KARTA PRZEDMIOTU. Cel 1 Zapoznanie studentów z architekturami i platformami mobilnymi

Laboratorium Systemów Mobilnych. Wykład 1

Zasady rejestracji i instrukcja zarządzania kontem użytkownika portalu

Dni Użytkowników Aplikacji QAD Interoperacyjność z QXtend

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Open(Source) Web Application Security Project

DVD MAKER USB2.0 Instrukcja instalacji

Praktykant Programista ios/android/windows Phone/Windows 8/PHP/.NET (do wyboru) Biuro w Warszawie

Automatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli

Szkolenie: Podstawy automatyzacji z Selenium IDE

Responsive Web Design:

Wstęp. Ale po co? Implementacja

Wspomaganie pracy w terenie za pomocą technologii BlackBerry MDS. (c) 2008 Grupa SPOT SJ

Mobilne aplikacje multimedialne

Testy automatyczne. Korzystające z junit

ZAPOZNANIE SIĘ Z TWORZENIEM

Przewodnik Google Cloud Print

Transkrypt:

webinar n+1 sposobów na automatyczne testy aplikacji mobilnych WrotQA, 20.08.2014 Damian Szczurek Łukasz Siudakiewicz Test Team Leader Automation Test Engineer damian.szczurek@bitbar.com lukasz.siudakiewicz@bitbar.com

Agenda Główne wyzwania w testach aplikacji mobilnych (Android) Testy manualne vs. Testy automatyczne Najważniejsze frameworki do automatyzacji testów Który framework wybrać i dlaczego? Testdroid Recorder Demonstracja Testdroid Cloud Q&A Copyrights by Bitbar Technologies Ltd. 2013 2

źródło http://opensignal.com/reports/fragmentation-2013/ 3

Przyczyny błędów aplikacji (Android) 4

Wyzwania w testach aplikacji mobilnych Błędy mają swoje źródła zarówno po stronie hardware'u i wersji OS Emulatory nie odwierciedlają prawdziwego zachowania aplikacji na urządzeniu Jeżeli aplikacji nie instaluje się na urządzeniu > nie można jej na nim przetestować :) Aplikacje się kraszują, zużywają za dużo pamięci Problemy z poprawnym wyświetlaniem na różnych rozdzielczościach 5

Przecież są emulatory... Tak, ale emulatory nie pomogą przetestować... UX i usability aplikacji kwestii sprzętowych współpraca z siecią Poza tym: emulatory są uciążliwe i zasobożerne jest ich ograniczona ilość 0% = procent użytkowników, którzy używają Twojej aplikacji na emulatorze ;) 6

Testy manualne vs. testy automatyczne Więcej urządzeń, mniej czasu i pieniędzy, wyniki bardziej dokładne Dostęp do mniejszej liczby urządzeń, czas, możliwość popełnienia błędów przez testerów 7

8

Różne podejścia do automatyzacji Testy pisane ręcznie Nagraj i odtwórz App crawler Different Ways To Automate Korzyści: Dokładne, dostosowane do twoich wymagań, Szybkie do stworzenia, w miarę dokładne, nie Najszybsze do uzyskania wyniki, najlepsze do testów co najmniej kilka godnych zainteresowania podatne na błędy ludzkie instalacyjnych i bardzo ograniczonych smoke testów Dostępne tylko dla niektórych frameworków Nie tak dokładne jak zaprojektowane test frameworków i narzędzi Minusy: Zabiera dużo czasu, wymaga zasobów (ludzie, kompetencje). Na początku jest dosyć case'y kosztowne. 9

Rodzina frameworków Calabash Appium Espresso Robotium Android Instrumentation Framework UIAutomator JUnit 10

Robotium: Biblioteka open source, zawierająca wiele użytecznych metod do testów UI Wsparcie dla aplikacji natywnych, hybrydowych i webowych Częste aktualizacje Java 11

Robotium: przykład kodu // Public void for the operation public voidtestrecorded() throws Exception { // Wait for the text 'Hello!'to be shown for newbie if(solo.waitfortext("hello!")) { // R class ID identifier for 'Sign in' - and click it solo.clickonview(solo.findviewbyid("com.twitter.android.r.id.sign_in")); // R class ID identifier for entering username solo.entertext((edittext)solo.findviewbyid("com.twitter.android.r.id.login_username"),"username"); // R class ID identifier for entering password solo.entertext((edittext)solo.findviewbyid("com.twitter.android.r.id.login_password"),"password"); // R class ID identifier for clicking log in solo.clickonview(solo.findviewbyid("com.twitter.android.r.id.login_login")); // Wait until log in is done solo.waitforactivity("hometabactivity"); } // Activate the text field to compose a tweet solo.clickonview(solo.findviewbyid("com.twitter.android.r.id.menu_compose_tweet")); // Type the tweet solo.entertext((edittext)solo.findviewbyid("com.twitter.android.r.id.edit"), "Testdroid"); // Tweeting! solo.clickonview(solo.findviewbyid("com.twitter.android.r.id.composer_post")); } 12

Robotium: ExtSolo Zawiera metody, których nie ma w oryginalnej bibliotece Robotium, na przykład: Multi-path drags Automatyczne screenshoty w przypadku błędu aplikacji Mock locations (GPS) Zmiana języka w urządzeniu kontrola połączenia WiFi Dostępna do ściągnięcia: http://testdroid.com/products/apis-plugins-and-libraries 13

Calabash: Behaviour Driven Development na Androida, ios oraz stron web Testy są projektowane w języku Cucumber i konwertowane podczas testu na Robotium Dostępnych jest ponad 80 różnych komend (język naturalny). Nowe komendy mogą być definiowane w Ruby Zaletą Calabasha jest łatwość w utrzymaniu testów 14

Calabash: Przykładowy skrypt Feature: Login feature Scenario: As a valid user I can log into my app I wait for text "Hello" Then I press view with id "Sign in" Then I enter text "username" into "login_username" Then I enter text "password" into "login_password" Then I wait for activity "HomeTabActivity" Then I press view with id "menu_compose_tweet" Then I enter text "Testdroid"into field with id "edit" Then I press view with id "composer_post" 15

uiautomator: Framework Google'a wspierający aplikacje natywne oraz dostęp do innych procesów w systemie Działa tylko na urządzeniach z API level >= 16 Brak wsparcia dla web view 16

uiautomator: przykładowy kod // Public void for the operation public void testsigninandtweet()throwsexception { // Starting application: getuidevice().wakeup();// Press Home button to ensure we'reonhomescreen getuidevice().presshome();// Select 'Apps' and click button newuiobject(newuiselector().description("apps")).click();// Select 'Twitter' andclick newuiobject(newuiselector().text("twitter")).click();// Locate and select 'Sign in' UiSelectorsignIn=newUiSelector().text("Sign In");// If button is available,click UiObjectsignInButton=newUiObject(signIn); if(signinbutton.exists()) { signinbutton.click();// Set the username newuiobject(new UiSelector().className("android.widget.EditText").instance(0)).setText("username"); newuiobject(new UiSelector().className("android.widget.EditText").instance(1)).setText("password"); newuiobject(newuiselector().classname("android.widget.button"). text("sign In").instance(0)).click();// Wait Sign in progress window getuidevice().waitforwindowupdate(null, 2000);// Wait for main window getuidevice().waitforwindowupdate(null, 30000); } newuiobject(newuiselector().description("new tweet")).click();// Typing text for a tweet newuiobject(newuiselector().classname("android.widget.linearlayout").instance(8)). settext("awesome #Testdroid!");// Tweeting! newuiobject(newuiselector().text("tweet")).click(); } 17

Appium: Korzysta z WebDrivera do uruchamiania testów Wspiera aplikacje natywne na Androida, ios oraz strony web na urządzeniach mobilnych: Android via UIAutomator (API level>=16) oraz Selendroid (API level<16) ios via UIAutomation Mobile web >> Selenium driver dla Androida i ios Testy mogą być pisanie w którymkolwiek z języków: Haskell, Java, Ruby, Python, PHP,... Copyrights by Bitbar Technologies Ltd. 2013 18

Appium: przykładowy kod # set up webdriver log ("WebDriver request initiated. Waiting for response, this typically takes 2-3 mins") driver = webdriver.remote(appium_url, desired_caps) log ("WebDriver response received") log ("Activity-1") log (" Getting device screen size") print driver.get_window_size() sleep(2) # always sleep before taking screenshot to let transition animations finish log (" Taking screenshot: 1_appLaunch.png") driver.save_screenshot(screenshotdir + "/1_appLaunch.png") log (" Typing in name") elems=driver.find_elements_by_tag_name('edittext') log (" info: EditText:" + `len(elems)`) log (" Filling in name") elems[0].click() elems[0].send_keys("testdroid User") sleep(2) log (" Taking screenshot: 2_nameTyped.png") driver.save_screenshot(screenshotdir + "/2_nameTyped.png") log (" Hiding keyboard") driver.back() sleep(2) log (" Taking screenshot: 3_nameTypedKeyboardHidden.png") driver.save_screenshot(screenshotdir + "/3_nameTypedKeyboardHidden.png") 19

Espresso: Framework tworzony przez Google Wspiera API level 8 (Froyo), 10 (Gingerbread), 15-19 (IJK) Android Instrumentation Framework Używany przez Google :-) Testy pisane w Javie Proste API pozwalające na rozszerzenie frameworka o własne metody Nie ma konieczności używania sleepów 20

Porównanie frameworków Robotium UIAutomator Espresso Appium Calabash Android TAK TAK TAK TAK TAK ios Nie Nie Nie TAK TAK Mobile web TAK Tylko kliki X,Y Nie TAK TAK (Android & ios) (Android) Java, Python, Ruby, Ruby (Android) Języki Java Java Java Haskel,... Narzędzia Wspierane API levels TestdroidRecorder UIAutomatorviewer HierarchyViewer Inspector CLI Wszystkie 16=> 8, 10, 15-19 Wszystkie Wszystkie 21

Inne frameworki: Android: Robolectric Siesta Spoon ios: UI Automation KIF Jasmine Frank... 22

Jaki framework wybrać? To zależy... Znajomość technologii i języków programowania Wsparcie wielu API levels Technologia i framework aplikacji Dokładność testów Zmiany w aplikacji 23

Testdroid Cloud: 24

Testdroid Recorder Demo: 25

26