Pytania:
- Jak sobie radzić z aplikacjami hybrydowymi (webowo-mobilnymi)?
- Gdzie testować – przeglądarka, emulator, urządzenie fizyczne?
- Jak często aktualizować środowisko testowe?
- Czy należy wspierać wszystkie dostępne platformy?
- Czy należy używać tego samego języka do programowania i testów?
- Narzędzia opensource kontra komercyjne.
- Testy jednostkowe – testy niskiego poziomu mające za zadanie przetestowanie poprawne działanie poszczególnych funkcji kodu
- Testy funkcjonalne – testy na zgodność aplikacji z wymaganiami
- Testy E2E – testy przekrojowe aplikacji weryfikujące poprawne działanie pełnych funkcjonalności (np. zakup biletu: logowanie do serwisu, wybranie opcji podróży, opłacenie, wydrukowanie biletu)
Dlaczego o tym mówię:
- Wspólne rozumienie definicji
- Prezentacja dotyka wszystkich tych rodzajów testów
- NodeJS – silnik JavaScript
- AngularJS – biblioteka JavaScript do tworzenia aplikacji typu onepage w modelu MVC
- HTML5 + CSS3
- Bootstrap – responsywny framework do tworzenia front-endu
- LESS – język dynamicznego opisu styli CSS
- Karma – narzędzie do uruchamiania testów
- Grunt – narzędzie do uruchamiania zadań JavaScript (np. statyczna analiza kodu JSHint)
- PhoneGap – framework opakowujący aplikację mobilną do postaci aplikacji natywnej dla urządzeń mobilnych
>> Jak sobie radzić z aplikacjami hybrydowymi (webowo-mobilo-desktopowymi)?
- Platforma node.js pozwala budować aplikacje webowe, mobilne (PhoneGap) i Desktopowe (node-webkit)
- Appium pozwala na testowanie aplikacji webowych i mobilnych
- NodeJS – silnik JavaScript
- Grunt – narzędzie do uruchamiania zadań JavaScript (np. statyczna analiza kodu JSHint)
- Vmware – platforma wirtualizacji dla PC i MAC
- Hyper-V – niezbędne dla symulowania Windows Phone
- Platformy – Android, iOS, Windows Phone
- Przeglądarki na desktopie
- Selenium (WebDriverJS) – narzędzie napisane na silniku Java, służce do symulacji interakcji użytkownika z przeglądarką
- Protractor – framework stworzony przez twórców AngularJS do projektowania i uruchamiania testów e2e aplikacji webowych, jest rozszerzeniem narzędzia WebDriverJS i wykorzystuje rzeczywiste przeglądarki do symulowania interakcji użytkownika z aplikacją
- Jasmine – framework testowy BDD dla aplikacji JavaScript. Może wykorzytywać silnik dowolnej przeglądarki, NodeJS oraz wiele innych platform współpracujących z JavaScript
- Appium – narzędzie wspierające testy automatyczne aplikacji webowych, hybrydowych i mobilnych na systemach iOS i Android, współpracuje z Selenium WebDriver
>> Czy należy wspierać wszystkie dostępne platformy?
- NIE, jest to niemożliwe
- Spośród kombinacji platform mobilnych, systemów operacyjnych i przeglądarek należy wybrać grupę reprezentatywną z punktu widzenia przyszłych odbiorców
- Na slajdzie nie na BlackBerry
Integracja:
- Command-line / bash – możliwość ręcznego uruchamiania testów
- IDE – możliwość uruchamiania testów z poziomu środowiska deweloperskiego
- Continuous Delivery – możliwość uruchamiania testów automatycznych w procesie budowania aplikacji
- Raportowanie – generowanie raportów łatwych do interpretacji i modyfikacji
- Dokumentacja – automatyczne generowanie dokumentacji
- Dwie maszyny w windowsem – różne wersje przeglądarek
- SDK iOS działa fajnie na maszynie wirtualnej
- SDK Android powinien być na maszynie rzeczywistej
- Emulator iOS tylko na platformie MAC
- Emulator Win Phone na platformie Win (Hyper-V), wykrywa emulowane wsparcie sprzętowe
- Appium może być jedno na maszynie z uwagi na port, WebDriver’ów można uruchomić więcej
- Urządzenia fizyczne mogą być podpięte do fizycznego hosta z maszynami wirtualnymi jeśli dostępne jest przekierowanie portów USB (VirtualBox ma płatne PowerExtensions)
>> Gdzie testować – przeglądarka, emulator, urządzenie fizyczne?
- Testowanie na przeglądarkach jest tanie
- Testowanie na emulatorach wymaga zasobów, ale daje rezultaty przybliżone do urządzenia
- Testowanie na urządzeniu jest najdokładniejsze i najdroższe (przywracanie po testach)
Należy zbilansować opłacalność względem kosztów testowania na poszczególnych platformach
- Generalnie – modułowe narzędzie do automatyzacji wszelkiego rodzaju interakcji z przeglądarką, najpowszechniejsze zastosowanie dla testów
- Selenium IDE – dodatek do przeglądarki FireFox pozwalający na nagrywanie i odtwarzanie pojedynczych testów
- Selenium WebDriver – następca Selenium-RC, zawiera w sobie całą funkcjonalność poprzednika + brak ograniczeń,
- Selenium Grid – zarządca: przechowuje informację o dostępnym środowisku, zleca zadania modułom które mają wolne zasoby, przechowuje informację zwrotną o wyniku wykonanej przez moduł akcji
- Sterowniki przeglądarek – rozwijane jako niezależne projekty, często przez samych twórców przeglądarek: IE, Chrome, Opera, PhantomJS (WebKit), Windows Mobile, Selendroid, ios-driver, Blackberry, Appium (selendroid + ios-driver)
- Przeglądarki obsługiwane od ręki : FireFox, Safari, kidyś Opera zanim przeszła na WebKit
- Oficjalne języki API – Java, C#.Net, Ruby, Python, JavaScript (node V8)
- Dostępne nieoficjalnie języki API – Perl, PHP (5 implementacji), Objective-C, Haskell, R, JavaScript (3 implementacje)
Zadania:
- Wyszukiwanie pasujących nodów na podstawie capabilities:
-- system operacyjny
-- rodzaj przeglądarki
-- wersja przeglądarki
- Wyszukiwanie nodów nie wykonujących aktualnie zadań (poprzednie skończone)
- Wysyłanie testów
- Monitorowanie wykonania testów (wyniki, powodzenia, porażki, timeouty)
- Zbieranie rezultatów z wykonania testów
- Podsumowanie testów
Możliwość pracy bezpośrednio z samodzielnym serwerem WebDriver
Możliwość pracy bezpośrednio z samodzielnym serwerem WebDriver
TO BE REMOVED
Klienci muszą mieć różne porty (część dżinsy, część dres z trzema paskami)
TO BE REMOVED