Testowanie aplikacji mobilnych z ukierunkowaniem na system Android
Trener Łukasz Złocki Absolwent informatyki UŚ Tester i programista Certyfikat ISTQB Foundation W branży IT od 2003 roku W testowaniu od 5 lat Trener i konsultant w testerzy.pl Automatyk testów 2
Agenda Praca z systemem Android Testowanie automatyczne z wykorzystaniem narzędzi 3
Praca z systemem Android
Praca z systemem Android Do rozwoju i testowania aplikacji Android wykorzystuje się narzędzia z pakietu Android SDK (Software Development Tools) Z narzędzi korzysta się bezpośrednio w Eclipse z dodatkiem ADT (Android Development Tools) Bezpośredni dostęp do narzędzi Pakiet można pobrać ze strony http://developer.android.com/sdk/index.html 5
Praca z systemem Android Ustawienie zmiennych środowiskowych User Variable ANDROID_HOME = <path_to_sdk> System Variable PATH = %PATH%; <path_to_platform_tools>; <path_to_tools> 6
SDK Manager Dodawanie platform oraz niezbędnych pakietów 7
AVD Manager Android Virtual Device (AVD) pozwala modelować rzeczywiste urządzenia poprzez określenie sprzętu oraz oprogramowania i emulować je poprzez emulator 8
Używanie emulatora Android 9
Wykorzystanie konsoli emulatora Każda instancja emulatora udostępnia konsolę Dzięki poleceniom konsoli można kontrolować warunki pracy emulatora Podłączenie do konsoli telnet localhost <console-port> Konsola jest dostępna na portach 5554-5587 i jedynie z localhost'a Lista dostępnych poleceń help <polecenie> Kończenie pracy z konsolą quit lub exit 10
Instalowanie aplikacji na emulatorze Uruchomienie testu w Eclipse powoduje automatyczną instalację aplikacji testowanej Instalacja odbywa się za pomocą narzędzia adb adb -s <device_name> install <src/app.apk> Przed zainstalowaniem aplikacji należy ją skonwertować do pliku.apk (build) Instalacja poza Eclipse Emulator zapamiętuje informacje o aplikacji w danych użytkownika zlokalizowanych na dysku Można wyczyścić dane użytkownika przy starcie emulatora lub uruchomić instalację z odpowiednim parametrem adb -s <device_name> install -r <src/app.apk> 11
Testowanie automatyczne z wykorzystaniem narzędzi
Agenda Testowanie z Eclipse ADT Robotium Robotium Recorder Testdroid Recorder MonkeyTalk Appium 15
Instalacja wtyczki ADT Wtyczka ADT do Eclipse oferuje kilka funkcji, które pomagają konfigurować i zarządzać środowiskiem testowym Szybko tworzy projekt testowy i łączy go z aplikacją testową <instrumentation> w pliku manifest Pozwala szybko zaimportować klasy do testów z aplikacji testowanej Pozwala na uruchomienie testu bezpośrednio z Eclipse Automatycznie instaluje projekt w urządzeniu, uruchamia testy i wyświetla wyniki Podpisuje pakiety.apk do dystrybucji https://dl-ssl.google.com/android/eclipse 16
Praca z ADT w Eclipse Obsługa dodatku ADT Import projektu źródłowego aplikacji Android Tworzenie projektu testowego dla aplikacji źródłowej Uruchamianie projektu testowego 17
Robotium - charakterystyka Framework testowy do pisania wydajnych i niezawodnych testów automatycznych black box dla aplikacji Android funkcjonalnych, systemowych czy akceptacyjnych Wymagane pliki ze strony projektu http://code.google.com/p/robotium/ robotium-solo-5.x.jar biblioteka Robotium robotium-solo-5.x-javadoc.jar - javadoc 19
Robotium tworzenie testu z projektu źródłowego Dla istniejącego projektu źródłowego aplikacji Android tworzymy projekt testowy Następnie tworzymy klasę testową będącą naszym przypadkiem testowym w już utworzonym pakiecie Importujemy bibliotekę robotium-solo-5.x.jar Tworzymy katalog libs w projekcie i importujemy pliki Build Path-->Configure Build Path...-->Add JARs... Utworzoną klasę testową uzupełniamy kodem naszego testu 20
Robotium tworzenie testu z pliku.apk Pracując bez źródła nie znamy nazwy pakietu aplikacji oraz głównej aktywności, która ją uruchamia Znalezienie tych informacji umożliwia nam polecenie: adb logcat aapt dump badging 21
Robotium tworzenie testu z pliku.apk adb logcat aapt dump badging src_app.apk 22
Robotium tworzenie testu z pliku.apk Tworzymy projekt testowy, pakiet oraz klasę ze skryptem testowym Pakiet testowy powinien mieć nazwę zgodną z nazwą pakietu aplikacji testowanej z dopiskiem test com.android.calculator.test Dokonujemy zmiany w pliku AndroidManifest.xml podając odpowiednią nazwę pakietu aplikacji testowanej 23
Robotium Recorder - charakterystyka Nagrywanie profesjonalnych przypadków testowych Plugin dla Eclipse IDE Nagrywanie bezpośrednio z narzędzia lub emulatora Wsparcie dla natywnych i hybrydowych aplikacji Automatyczne rozpoznawanie ID elementu Synchronizowany z ostatnimi wydaniami Robotium 25
Robotium Recorder instalacja Instalacja jako dodatek do Eclipse IDE Help Install New Software http://recorder.robotium.com/updates 26
Robotium Recorder tworzenie projektów testowych Robotium Recorder może nagrywać testy zarówno z projektu źródłowego jak i z pliku.apk Pliki.apk są automatycznie podpisywane kluczem debugującym 27
Robotium Recorder tworzenie projektów testowych Każda czynność użytkownika jest rejestrowana na liście poleceń Kliknięcie na elemencie w UI użytkownika powoduje dodanie polecenia będącego automatycznie asercją Zaznaczone polecenie można usunąć lub zrobić dla niego zrzut ekranu 28
Testdroid Recorder - charakterystyka Narzędzie capture/replay dla Androida Rejestruje zachowania użytkownika w aplikacji Ściśle zintegrowany z Eclipse Instalowany jako rozszerzenie Upraszcza automatyzację testowania aplikacji Tworzy automatycznie kod skryptu Wykorzystuje składnię Robotium Umożliwia uruchamianie testów w chmurze 30
Testdroid Recorder - instalacja Testdroid do prawidłowego działania wymaga Eclipse z zainstalowanym dodatkiem ADT oraz Android SDK zainstalowany w systemie Instalujemy dodatek Testdroid podając adres URL http://www.testdroid.com/updates/ Po pomyślnym zainstalowaniu dodatku można rozpocząć z nim pracę 31
Testdroid Recorder pierwsze uruchomienie Do pracy z Testdroid Recorderem wymagane jest konto założone na stronie https://cloud.testdroid.com Przy pierwszym uruchamianiu pojawia się okno z prośbą o autoryzację Podajemy dane, na które zarejestrowaliśmy się i klikamy na przycisk Autoryzuj 32
Testdroid Recorder tworzenie projektu ze źródła Są dwie możliwości: Dla projektu aplikacji wybieramy Zostanie utworzony nowy projekt testowy Dla przygotowanego projektu testowego wybieramy 33
Testdroid Recorder tworzenie projektu z pliku.apk Dla nowego projektu testowego wybieramy W kolejnym oknie wybieramy docelowe miejsce, w którym będą tworzone klasy testowe Wybieramy pakiet w jakim będą znajdować się klasy testowe Nazwa pakietu powinna być zgodna z nazwą pakietu aplikacji testowanej i zakończona przyrostkiem.test Podajemy nazwę klasy testowej 34
MonkeyTalk - charakterystyka MonkeyTalk składa się z dwóch podstawowych komponentów MonkeyTalk IDE Wzorowane na Eclipse narzędzie do nagrywania, odtwarzania, edycji i zarządzania testami Obsługuje emulatory, symulatory i rzeczywiste narzędzia dla Androida i ios MonkeyTalk Agents Biblioteki dla Androida i ios, które muszą być podpięte do aplikacji testowanej Umożliwiają w aplikacji nagrywanie i odtwarzanie komend MonkeyTalk 36
MonkeyTalk instalacja - Android MonkeyTalk jest paczką.zip, którą wystarczy pobrać i wypakować w dowolnym miejscu na dysku W katalogu MonkeyTalkIDE znajduje się samo narzędzie, które można już uruchomić 37
MonkeyTalk instalacja - Android Wymagany jest plugin AspectJ Development Tools (AJDT) w EclipseIDE http://www.eclipse.org/ajdt/whatsnew223/ Konwertujemy projekt aplikacji testowanej na AspectJ 38
MonkeyTalk instalacja - Android Importujemy do katalogu libs bibliotekę monkeytalk-agent.jar z katalogu agents/android/ Dodaną bibliotekę dopisujemy do ścieżki path projektu AspectJ 39
MonkeyTalk instalacja - Android Do pliku manifestu aplikacji testowanej dodajemy dwa wpisy 40
MonkeyTalk instalacja - Android Na koniec dodajemy informację o eksporcie biblioteki AspectJ wraz z aplikacją testowaną 41
MonkeyTalk nagrywanie skryptów Przed rozpoczęciem nagrywania należy uruchomić emulator, symulator ios lub podłączyć urządzenie Zainstalować i uruchomić wcześniej przygotowaną aplikację do testowania W MonkeyTalkIDE utworzyć nowy projekt i dodać nowy skrypt Wybrać urządzenie Rozpocząć nagrywanie 42
MonkeyTalk zestawy testów MonkeyTalk umożliwia organizowanie testów w zestawy testów Kontrola uruchamiania i raportowanie JUnit Zestaw testów zawiera tylko trzy typy poleceń Test plik z przypadkiem testowym SetUp plik uruchamiany przed każdym testem TearDown plik uruchamiany po każdym teście 43
MonkeyTalk sposoby uruchamiania Uruchamianie za pomocą Apache Ant Realizowane za pomocą biblioteki monkeytalkant.jar Dwa sposoby wykorzystania tej biblioteki Skopiować do katalogu Ant/lib/ powyższą bibliotekę Przekazywać ścieżkę do niej jako parametr w wierszu poleceń lib monkeytalk-ant.jar 44
MonkeyTalk sposoby uruchamiania Uruchamianie za pomocą Java Runner 45
MonkeyTalk Java API Java API daje możliwość tworzenia testu aplikacji mobilnej jak standardowego testu JUnit w języku Java API zawarte jest w bibliotece monkeytalk-javaall-in-one.jar Bibliotekę importuje się do standardowego projektu Java Uruchomienie projektu testowego wymaga uruchomienia aplikacji testowanej 46
Appium - charakterystyka Narzędzie open-source do tworzenia automatycznych testów natywnych i hybrydowych aplikacji Wspólne i intuicyjne API dla wielu platform (ios, Android) Nie trzeba modyfikować testowanej aplikacji Używasz swojego ulubionego języka, praktyk i narzędzi do pisania testów GUI serwera Appium ułatwiający zarządzanie 48
Appium instalacja (windows) Wymagania (Android) Windows 7+ lub Linux SDK >= 16 (UIAutomator), SDK < 16 (Selendroid) GUI Appium pobieramy ze strony https://github.com/appium/appium-dot-exe Wymagane biblioteki klienta zawierające API WebDriver http://docs.seleniumhq.org/download Selenium server https://github.com/appium/java-client AppiumDriver 49
GUI serwera Appium Appium serwer 50
Appium serwer Okno inspektora Appium testowanej aplikacji 51
Appium tworzenie projektu testowego Stworzenie nowego projektu testowego Dodanie wymaganych bibliotek selenium-java-x.x.x.jar selenium-server-standalone-x.x.x.jar java-client-x.x.x.jar gson-x.x.jar Ustawienie właściwości platformy testowej i podłączenie do serwera 52
Appium tworzenie projektu testowego Ustawienie właściwości platformy testowej i podłączenie do serwera 53
Dziękuję za uwagę!