Testowanie aplikacji mobilnych różni się od testowania aplikacji internetowych czy desktopowych pod wieloma względami. Oczywiście, inaczej będą wyglądać testy aplikacji bankowych i gier – wszystko zależy od rodzaju aplikacji, jej głównych funkcjonalności czy grona odbiorców.
Duże znaczenie ma także platforma docelowa, na której pracuje aplikacja. Najczęściej rozważamy platformy Android i iOS, dlatego też w tej części zaprezentowany zostanie framework Appium, który udostępnia testy dla tych dwóch wiodących systemów.
Appium jest narzędziem open-source służącym do automatyzacji aplikacji natywnych, webowych oraz hybrydowych na platformach iOS oraz Android. Istotną cechą Appium jest wieloplatformowość, umożliwia bowiem pisanie testów na platformach iOS i Android przy pomocy tego samego API.
Filozofia Appium
Ideą Appium jest, by testowanie aplikacji natywnych nie wymagało dodawania specjalnych SDK czy też rekompilacji aplikacji. Powinniśmy również mieć możliwość użycia preferowanych przez siebie narzędzi, jęzków i praktyk. Appium to w pełni otwarty projekt, stworzony tak, by zachęcić społeczność do udziału w jego rozbudowie. Jak możemy przeczytać na stronie projektu, Appium został zaprojektowaniu w celu możliwości zautomatyzowania testów aplikacji mobilnych, zgodnie z filozofią czterech następujących założeń:
- Nie ma potrzeby przekompilowywania oraz modyfikowania aplikacji, aby poddać ją automatyzacji.
- Testy automatyczne nie powinny być ograniczone do określonego języka frameworka.
- Framework służący do automatyzacji nie powinien wyważać otwartych drzwi, jeśli chodzi o API automatyzacji.
- Framework powinien być oprogramowaniem open-source.
Projekt Appium
Zgodnie z zaprezentowanymi wyżej czterema punktami, projekt Appium realizuje swoją filozofię w następujący sposób:
- Appium korzysta z mechanizmów, dostarczanych przez twórców iOS oraz Androida, dzięki temu nie ma potrzeby kompilowania z jakimś specyficznym kodem frameworka. Testowaniu poddawana jest dokładnie ta sama aplikacja, którą stworzyliśmy. I tak, w przypadku iOS wykorzystywany jest UIAutomation, dla Androida 4.2+ Google UiAutomator, a dla Androida 2.3+ Google Instrumentation (Instrumentation wspierany jest przez osobny projekt Selendroid).
- Mechanizmy dostarczane przez twórców iOS czy Andorida zostały zawarte w API WebDriver. WebDriver określa protokół typu klient-serwer. Dzięki architekturze klient-serwer, klient napisany w dowolnym języku może być wykorzystywany do wysyłania odpowiednich żądań HTTP do serwera. Na tę chwilę istnieją już klienci napisani praktycznie w każdym popularnym języku programowania.
- WebDriver stał się standardem, jeśli chodzi o automatyzację testów w środowisku przeglądarek internetowych. Twórcy Appium postanowili rozszerzyć tylko API o specyficzne metody służące testowaniu aplikacji mobilnych.
- Appium jest oprogramowaniem open-source
Koncepcje Appium
Architektura klient-server
Sercem Appium jest serwer www wykorzystujący REST API. Odbiera on połączenia z klientem, nasłuchuje poleceń oraz wykonuje je na urządzeniu mobilnym, dzięki reakcji na odpowiedzi HTTP, możemy poznać wyniki wykonania danego polecenia. Zaletą tego typu architektury jest to, że kod testu możemy napisać w dowolnym języku, który posiada klienta, możemy również sam serwer zainstalować na innym komputerze.
Sesja
Automatyzacja zawsze odbywa się w ramach jednej sesji. Klient inicjuje sesję z serwerem przez co tworzony jest identyfikator sesji, wykorzystywany dalej do przesyłania kolejnych poleceń.
Pożądane możliwości
Pożądane możliwości to zestaw kluczy i wartości (tzw. map or hash) wysyłanych do serwera Appium, które mówią serwerowi którą sesją automatyzacji jesteśmy zainteresowani. Możemy również modyfikować różne właściwości w czasie automatyzacji, przykładowo możemy ustawić funkcję safariAllowPopups na true, dzięki czemu, podczas testów w przeglądarce Safari, mamy możliwość skorzystania z JavaScript, aby otworzyć nowe okno.
Appium Server
Appium napisany jest w Node.js, dzięki czemu może być również zainstalowany ze źródeł lub zainstalowany bezpośrednio z NPM.
Klienci Appium
Ogromną zaletą są biblioteki klienckie obsługujące rozszerzenia Appium do protokołu WebDriver, dostępne w popularnych językach np: Java, Ruby, Python, PHP, JavaScript, C#.
GUI
Dostępne są nakładki graficzne na serwer Appium, które ułatwiają zarówno instalację potrzebnego środowiska jak i identyfikację elementów w aplikacji mobilnej.
Porównanie frameworków
Inne frameworki
Android:
- Robolectric
- Siesta
- Spoon
- …
iOS:
- UI Automation
- KIF
- Jasmine
- Frank
- …
Chcesz lepiej zrozumieć aplikacje i systemy, które testujesz? Dołącz do ModernTester, poznaj najpotrzebniejsze narzędzia, frameworki oraz języki programowania i ćwicz na specjalnie przygotowanych środowiskach testowych: Platforma e-learningowa ModernTester
Zostaw komentarz