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

Kod: craft-test-test
Kategoria: Testowanie automatyczne
Forma: 40% wykłady / 60% warsztaty
Czas trwania: 4 dni
Grupa docelowa: developerzy
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.
Data i dokładny zakres do ustalenia podczas analizy przed-szkoleniowej.

Szkolenie skupia się na tworzenia testowalnego kodu oraz testów automatycznych aplikacji na platformie Android.

Program kładzie szczególny nacisk na architekturę aplikacji, która jest podatna na testowanie.

W programie znajduje się również wstęp do testowania w ogólności: strategie testowania, techniki i wzorce.

Wyróżniki szkolenia

Podczas zajęć możesz oczekiwać szczególnych akcentów położonych na poniższe aspekty:

  • Rzetelne podstawy testowania
  • Architektura i wzorce projektowe
  • Strategia racjonalnych testów (w tym kiedy testowanie nie ma sensu)

Program Szkolenia

Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.

  1. Podstawy testowania
    1. Rodzaje testów i przykłady ich wykorzystania
      1. Zakres testów
        1. Jednostkowe
        2. Integracyjne
        3. End 2 End
      2. Rola testów
        1. Akceptacyjne
        2. Regresyjne
      3. Skupienie testów
        1. Testy funkcjonalne
        2. Testy bezpieczeństwa
        3. Testy wydajności
    2. Strategia budowania piramidy testów
  2. Projektowanie przypadków testowych
    1. Podejście do dokumentowania testów
      1. User Story i Scenariusze akceptacyjne
      2. Wykonywalne specyfikacje - techniki Behavior Driven Development
    2. Testowanie przypadków granicznych
      1. Nacisk na testy jednostkowe w celu osiągnięcia wysokiego pokrycia testami
      2. Architektura wspierająca wysokie pokrycie testami
      3. Rozwarstwienie logiki na Aplikacyjną i Domenową
      4. Modelowanie logiki przy pomocy Building Blocks z Domain Driven Design
    3. Powtarzalność testów, wyeliminowanie losowości z testów
    4. Najlepsze praktyki tworzenia przypadków testowych
  3. Strategia testowania architektury aplikacji
    1. Rozwarstwienie logiki na aplikacyjną i domenową
    2. Piramida testów - jak ją interpretować w kontekście warstw
      1. Logika aplikacji - testy End 2 End
      2. Logika domenowa - testy jednostkowe
    3. Kiedy warto stosować zaślepki (Mock) a kiedy jest to zbędny koszt
  4. Najlepsze techniki testowania - projektowanie testów, które można utrzymywać w przyszłości
    1. Wprowadzenie
      1. Czego nie testować
      2. Struktury przypadków testowych
    2. Organizacja kodu testowego
      1. Klasa testowa per klasa produkcyjna
      2. Klasa testowa per funkcjonalność
      3. Klasa testowa per setup
      4. Testy parametryzowane
    3. Przygotowanie stanu (test fixture setup)
      1. Testy wykorzystujące źródło danych (data-driven testing)
      2. Użycie wzorca Asemblera (odmiana Builder Design Pattern)
      3. Wzorce i szablony
    4. Weryfikacja
      1. Value Object, weryfikacja przez equals
      2. Własne asercje
      3. Weryfikacja przy użyciu specyfikacji (Matcher object)
      4. Upraszczanie asercji z użyciem Assert Object
      5. Poprawna weryfikacja przypadków negatywnych
      6. Wzorce i szablony
    5. Uprzątniecie po teście (fixture teardown)
      1. Kiedy warto stosować
      2. Manualne
      3. Automatyczne
      4. Wzorce i szablony
    6. Antywzorce testowania (ponad 20 typowych błędów i pułapek)
    7. Wykrywanie "Zapachów" złego kodu testowego
      1. Delikatne testy (fragile)
      2. Nieczytelne testy
      3. Wolne testy
      4. Testy niedeterministyczne
  5. Testowanie jednostkowe
    1. Szablony testów w xUnit
    2. Tworzenie własnych asercji
    3. Techniki: Mock, Stub, Fake
      1. Dobór technik do potrzeb - czym się kierować
      2. Przykłady implementacji w Mockito
    4. Mockowanie
      1. Zalety testowania w izolacji
      2. Nagrywanie zachowania
      3. Weryfikacja wywołań
      4. Antywzorce testów wykorzystujące mockowanie
    5. Testability - podatność kodu na testy
      1. Jak pisać kod, który daje się testować
      2. Najlepsze praktyki: SOLID, GRASP
      3. Wybrane wzorce projektowe, które zwiększają testability: Factory, Strategy, Value Object
      4. Pułapki i typowe błędy
      5. Code smell - "zapachy" nietestowalnego kodu
  6. Testowanie akceptacyjne
    1. Technika User Story
    2. Tworzenie testów akceptacyjnych na podstawie User Story
  7. Behaviour Driven Development
    1. Zalety bliskiej współpracy z klientem
      1. Rola dostawcy, rola klienta w testach akcpetacyjneych
    2. Tworzenie aplikacji podejściem BDD
    3. Podejście dwuwarstwowe
      1. Warstwa Flow - User Story
      2. Warstwa Automatyzacji interakcji z systemem
    4. Narzędzia i wzorce
      1. JBehave - najlepsze praktyki
      2. Page Object - modelowanie użytkownika
    5. Technika ujednolicania testów wykonywanych poprzez GUI i Servisy - Agenty
  8. Specification by Example
    1. Wzorce i techniki tworzenie wykonywalnych specyfikacji
    2. Podejście trójwarstwowe
      1. Warstwa Specyfikacji - cele biznesowe
      2. Warstwa Flow - User Story
      3. Warstwa Automatyzacji interakcji z systemem
    3. Narzędzia automatyzacji
  9. Architektura testowalnej aplikacji
    1. Building Blocks
      1. Komponenty aplikacji
        1. Podatność na testowanie
        2. Rodzaje testów per rodzaj komponentu
      2. Architektura i cykl życia aplikacji
      3. Zarządzanie stanem aplikacji
        1. Zaślepki stanu
    2. Użyteczne wzorce
      1. Wzorzec Mediator
      2. Layers
      3. Ports and Adapters
    3. Tworzenie modularnego kodu
      1. Techniki Inversion of Control
        1. Dependency Injection
        2. Wstrzykiwanie zaślepek na czas testów
        3. Events
        4. Separacja i decoupling testowanych modułów
      2. Dynamiczne wstrzykiwanie zależności.
      3. Luźne wiązanie komponentów z użyciem Event Bus.
      4. Dobre praktyki i użyteczne wzorce projektowe na platformie Android.
  10. Zagadnienia zaawansowane
    1. Wprowadzenie do testowania z użyciem Android Testing Framework
    2. Mockowanie w środowisku Androida
      1. Narzędzia, pułapki, najlepsze praktyki
    3. Tworzenie szybkich testów z wykorzystaniem biblioteki Robolectric
    4. Werbalizacja asercji z użyciem FEST oraz rozszerzenia FEST - Android
      1. Pisania czytelnych, wykonywalnych specyfikacji
      2. Odporność testów na zmiany
      3. Myślenie deklaratywne zamiast imperatywnego
    5. Testowanie z użyciem biblioteki RoboSpock
    6. Tworzenie testów funkcjonalnych aplikacji
    7. Przegląd narzędzi wspomagających testowanie
  11. Zagadnienia dodatkowe
    1. Optymalizacja aplikacji i poszukiwanie błędów z użyciem narzędzi deweloperskich.
    2. Przegląd narzędzi developerskich dostarczonych z Android SDK.


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.

Materiały związane ze szkoleniem

Idea renesansowej pracowni - Bottegi zakłada nieustanną pracę jej członków i dzielenie się jej wynikami.

Zapytaj o szkolenie

Imię i nazwisko:
Firma:
E-mail/Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń